github.com/codingfuture/orig-energi3@v0.8.4/energi/contracts/Makefile.include (about)

     1  
     2  .PHONY: solc abigen energi-contracts
     3  
     4  # ---
     5  SOLC_VERSION := 0.5.16
     6  SOLC_SHA256 := a15f01700ec7e02f91bbdfd4b6ff4450b3c2decae173e4f41910a3cfbaf5d3d3
     7  SOLC ?= build/_workspace/bin/solc-$(SOLC_VERSION)
     8  SOLC_OPTIONS := \
     9    --asm \
    10    --asm-json \
    11    --bin \
    12    --bin-runtime \
    13    --abi \
    14    --optimize \
    15    --optimize-runs=999999999 \
    16    --overwrite \
    17    --evm-version petersburg
    18  SOLC_BIN_EXT := bin
    19  SOLC_ABI_EXT := abi
    20  
    21  solc: $(SOLC)
    22  $(SOLC):
    23  	@mkdir -p $$(dirname $(SOLC))
    24  	@wget -q -O $(SOLC).tmp 'https://github.com/ethereum/solidity/releases/download/v$(SOLC_VERSION)/solc-static-linux'
    25  	@test "$$(sha256sum $(SOLC).tmp | cut -f1 -d' ')" = "$(SOLC_SHA256)"
    26  	@chmod +x $(SOLC).tmp
    27  	@mv -f $(SOLC).tmp $(SOLC)
    28  
    29  # ---
    30  ABIGEN ?= build/bin/abigen
    31  
    32  abigen: $(ABIGEN)
    33  $(ABIGEN):
    34  	cid run cigo -- install ./cmd/abigen
    35  
    36  # ---
    37  ENERGI_CONTRACT_ROOT_DIR := energi/contracts
    38  ENERGI_CONTRACT_SRC_DIR := $(ENERGI_CONTRACT_ROOT_DIR)/src
    39  ENERGI_CONTRACT_BUILD_DIR := build/contracts/energi
    40  ENERGI_CONTRACT_ABIGEN_DIR := energi/abi
    41  
    42  ENERGI_CONTRACTS := \
    43    BackboneRewardV1.sol \
    44    BlacklistRegistryV1.sol \
    45    BlockRewardV1.sol \
    46    CheckpointRegistryV2.sol \
    47    DummyAccount.sol \
    48    IBlacklistRegistry.sol \
    49    IBlockReward.sol \
    50    IBudgetProposal.sol \
    51    ICheckpointV2.sol \
    52    ICheckpointRegistry.sol \
    53    IDelegatedPoS.sol \
    54    IGovernedProxy.sol \
    55    IMasternodeRegistryV2.sol \
    56    IMasternodeToken.sol \
    57    IProposal.sol \
    58    ISporkRegistry.sol \
    59    ITreasury.sol \
    60    Gen2Migration.sol \
    61    GovernedProxy.sol \
    62    MasternodeTokenV2.sol \
    63    MasternodeRegistryV2.sol \
    64    SporkRegistryV2.sol \
    65    StakerRewardV1.sol \
    66    TreasuryV1.sol
    67  
    68  ENERGI_CONTRACTS_SRC := $(addprefix $(ENERGI_CONTRACT_SRC_DIR)/,$(ENERGI_CONTRACTS))
    69  
    70  ENERGI_CONTRACTS_BIN := $(ENERGI_CONTRACTS:sol=$(SOLC_BIN_EXT))
    71  ENERGI_CONTRACTS_BIN := $(addprefix $(ENERGI_CONTRACT_BUILD_DIR)/,$(ENERGI_CONTRACTS_BIN))
    72  
    73  ENERGI_CONTRACTS_ABI := $(ENERGI_CONTRACTS:sol=$(SOLC_ABI_EXT))
    74  ENERGI_CONTRACTS_ABI := $(addprefix $(ENERGI_CONTRACT_BUILD_DIR)/,$(ENERGI_CONTRACTS_ABI))
    75  
    76  ENERGI_CONTRACTS_GOABI := $(ENERGI_CONTRACTS:sol=go)
    77  ENERGI_CONTRACTS_GOABI := $(addprefix $(ENERGI_CONTRACT_ABIGEN_DIR)/,$(ENERGI_CONTRACTS_GOABI))
    78  
    79  .SECONDARY: $(ENERGI_CONTRACTS_BIN) $(ENERGI_CONTRACTS_ABI)
    80  
    81  prebuild: energi-contracts
    82  
    83  energi-contracts: $(ENERGI_CONTRACTS_GOABI)
    84  
    85  $(ENERGI_CONTRACT_BUILD_DIR):
    86  	@mkdir -p $(ENERGI_CONTRACT_BUILD_DIR)
    87  
    88  $(ENERGI_CONTRACT_ABIGEN_DIR)/%.go: $(ENERGI_CONTRACT_BUILD_DIR)/%.bin \
    89    $(ENERGI_CONTRACT_BUILD_DIR)/%.abi $(ABIGEN) $(ENERGI_CONTRACT_BUILD_DIR)
    90  	$(ABIGEN) -out $@ -bin $< -runbin $<-runtime -abi ${<:.bin=.abi} -type $* -pkg abi
    91  
    92  $(ENERGI_CONTRACT_BUILD_DIR)/%.$(SOLC_BIN_EXT): $(ENERGI_CONTRACT_SRC_DIR)/%.sol \
    93    $(ENERGI_CONTRACT_SRC_DIR)/*.sol $(SOLC) $(ENERGI_CONTRACT_BUILD_DIR)
    94  	$(SOLC) $(SOLC_OPTIONS) -o $(ENERGI_CONTRACT_BUILD_DIR)/ $<
    95  
    96  # Built with bin files
    97  $(ENERGI_CONTRACT_BUILD_DIR)/%.$(SOLC_ABI_EXT): $(ENERGI_CONTRACT_SRC_DIR)/%.sol
    98  	@true
    99  
   100  # ---
   101  .PHONY: test-sol
   102  
   103  test-sol:
   104  	@echo "Checking if precompiled contracts have changes"
   105  	@git diff --exit-code $(ENERGI_CONTRACTS_GOABI) >/dev/null
   106  	@which ganache-cli 2>&1 >/dev/null || npm install -g ganache-cli
   107  	@which truffle 2>&1 >/dev/null || npm install -g truffle
   108  	@ganache-cli \
   109  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef,10000000000000000000000000' \
   110  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdff,200000000000000000000000' \
   111  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcfff,100000000000000000000000' \
   112  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abffff,11000000000000000000000' \
   113  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890afffff,1000000000000000000000' \
   114  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890ffffff,1000000000' \
   115  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef123456789fffffff,0' \
   116  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef12345678ffffffff,100000000000000000000000' \
   117  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef1234567fffffffff,100000000000000000000000' \
   118  	    --account='0x1234567890abcdef1234567890abcdef1234567890abcdef123456ffffffffff,100000000000000000000000' \
   119  	    -l 10000000 \
   120  	    2>&1 >build/contracts/ganache.log & \
   121  	  sleep 1; \
   122  	  truffle test; \
   123  	  res=$$?; \
   124  	  kill $$!; \
   125  	  wait; \
   126  	  exit $$res