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