github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/Makefile (about)

     1  PKG = github.com/loomnetwork/gamechain
     2  PKG_BATTLEGROUND = $(PKG)/battleground
     3  
     4  # Specifies the loomnetwork/loomchain branch/revision to use
     5  LOOMCHAIN_GIT_REV = gamechain
     6  
     7  GIT_SHA = `git rev-parse --verify HEAD`
     8  BUILD_DATE = `date -Iseconds`
     9  
    10  PROTOC = protoc --plugin=./protoc-gen-gogo -I. -I$(GOPATH)/src -I/usr/local/include
    11  PLUGIN_DIR = $(GOPATH)/src/github.com/loomnetwork/go-loom
    12  GOGO_PROTOBUF_DIR = $(GOPATH)/src/github.com/gogo/protobuf
    13  LOOMCHAIN_DIR = $(GOPATH)/src/github.com/loomnetwork/loomchain
    14  HASHICORP_DIR = $(GOPATH)/src/github.com/hashicorp/go-plugin
    15  PROMETHEUS_PROCFS_DIR=$(GOPATH)/src/github.com/prometheus/procfs
    16  
    17  GOFLAGS_BASE = -X $(PKG_BATTLEGROUND).BuildDate=$(BUILD_DATE) -X $(PKG_BATTLEGROUND).BuildGitSha=$(GIT_SHA) -X $(PKG_BATTLEGROUND).BuildNumber=$(BUILD_NUMBER)
    18  GOFLAGS = -ldflags "$(GOFLAGS_BASE)"
    19  
    20  all: build-ext cli
    21  
    22  build: contracts/zombiebattleground.so.1.0.0
    23  
    24  build-ext: contracts/zombiebattleground.1.0.0
    25  
    26  cli: bin/zb-cli
    27  
    28  oracle: bin/gcoracle
    29  
    30  tools: bin/zb-enum-gen bin/zb-console-game
    31  
    32  gamechain-logger: proto bin/gamechain-logger
    33  
    34  gamechain-replay: proto bin/gamechain-replay
    35  
    36  gamechain-debugger: bin/zb-cli bin/gamechain-debugger
    37  
    38  bin/zb-cli:
    39  	go build -o $@ $(PKG)/cli
    40  
    41  bin/zb-enum-gen:
    42  	go build -o $@ tools/cmd/templates/main.go
    43  
    44  bin/zb-console-game:
    45  	go build -o $@ tools/cmd/console_game/main.go
    46  
    47  bin/gamechain-logger:
    48  	go build -o $@ $(PKG)/tools/gamechain-logger
    49  
    50  bin/gamechain-replay:
    51  	go build -o $@ $(PKG)/tools/gamechain-replay
    52  
    53  bin/gamechain-debugger:
    54  	packr2 build -o $@ $(PKG)/tools/gamechain-debugger
    55  
    56  bin/gcoracle:
    57  	go build -o $@ $(PKG)/tools/gcoracle
    58  
    59  contracts/zombiebattleground.so.1.0.0: proto
    60  	go build $(GOFLAGS) -buildmode=plugin -o $@ $(PKG)/plugin
    61  
    62  contracts/zombiebattleground.1.0.0: proto
    63  	go build $(GOFLAGS) -o $@ $(PKG)/plugin
    64  
    65  protoc-gen-gogo:
    66  	go build github.com/gogo/protobuf/protoc-gen-gogo
    67  
    68  %.pb.go: %.proto protoc-gen-gogo
    69  	if [ -e "protoc-gen-gogo.exe" ]; then mv protoc-gen-gogo.exe protoc-gen-gogo; fi
    70  	$(PROTOC) --gogo_out=$(GOPATH)/src $(PKG)/$<
    71  
    72  %.cs: %.proto protoc-gen-gogo
    73  	if [ -e "protoc-gen-gogo.exe" ]; then mv protoc-gen-gogo.exe protoc-gen-gogo; fi
    74  	cp $< $<-cs.bak
    75  	grep -vw 'import "github.com/gogo/protobuf/gogoproto/gogo.proto";' $<-cs.bak | sed -e 's/\[[^][]*\]//g;s/option (gogoproto\.[a-z_]*) = false;//g' > $<-cs && rm $<-cs.bak
    76  	$(PROTOC) --csharp_out=./$(dir $<) $(PKG)/$<-cs
    77  	rm $<-cs
    78  	find ./$(dir $<)*.cs -type f -exec sed -i.bak 's/global::Google.Protobuf/global::Loom.Google.Protobuf/g' {} \;
    79  	find ./$(dir $<)*.cs.bak -type f -exec rm {} \;
    80  
    81  proto: types/zb/zb_data/zb_data.pb.go \
    82      types/zb/zb_enums/zb_enums.pb.go \
    83      types/zb/zb_calls/zb_calls.pb.go \
    84      types/zb/zb_custombase/zb_custombase.pb.go \
    85      types/zb/zb_data/zb_data.cs \
    86      types/zb/zb_enums/zb_enums.cs \
    87      types/zb/zb_calls/zb_calls.cs \
    88      types/zb/zb_custombase/zb_custombase.cs \
    89      types/oracle/oracle.pb.go \
    90      types/nullable/nullable_pb/nullable.pb.go \
    91      types/nullable/nullable_pb/nullable.cs
    92  
    93  $(PLUGIN_DIR):
    94  	git clone -q git@github.com:loomnetwork/go-loom.git $@
    95  
    96  $(LOOMCHAIN_DIR):
    97  	git clone -q git@github.com:loomnetwork/loomchain.git $@
    98  
    99  deps: $(PLUGIN_DIR) $(LOOMCHAIN_DIR)
   100  	# Temp workaround for https://github.com/prometheus/procfs/issues/221
   101  	git clone -q git@github.com:prometheus/procfs $(PROMETHEUS_PROCFS_DIR)
   102  	cd $(PROMETHEUS_PROCFS_DIR) && git checkout master && git pull && git checkout d3b299e382e6acf1baa852560d862eca4ff643c8
   103  	# Lock down Prometheus golang client to v1.2.1 (newer versions use a different protobuf version)
   104  	git clone -q git@github.com:prometheus/client_golang $(GOPATH)/src/github.com/prometheus/client_golang
   105  	cd $(GOPATH)/src/github.com/prometheus/client_golang && git checkout master && git pull && git checkout v1.2.1
   106  	# prometheus/client_model is pulled by prometheus/client_golang so lock it down as well
   107  	git clone -q git@github.com:prometheus/client_model $(GOPATH)/src/github.com/prometheus/client_model
   108  	cd $(GOPATH)/src/github.com/prometheus/client_model && git checkout master && git pull && git checkout 14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016
   109  	# prometheus/common is pulled by prometheus/client_golang so lock it down as well
   110  	git clone -q git@github.com:prometheus/common $(GOPATH)/src/github.com/prometheus/common
   111  	cd $(GOPATH)/src/github.com/prometheus/common && git checkout master && git pull && git checkout v0.7.0
   112  
   113  	go get \
   114  		github.com/golang/dep/cmd/dep \
   115  		github.com/spf13/cobra \
   116  		github.com/spf13/viper \
   117  		github.com/pkg/errors \
   118  		github.com/stretchr/testify/assert\
   119  		github.com/hashicorp/go-plugin \
   120  		github.com/google/uuid \
   121  		github.com/grpc-ecosystem/go-grpc-prometheus \
   122  		github.com/loomnetwork/e2e \
   123  		github.com/iancoleman/strcase \
   124  		github.com/jroimartin/gocui \
   125  		github.com/Jeffail/gabs \
   126  		github.com/gorilla/websocket \
   127  		github.com/go-sql-driver/mysql \
   128  		gopkg.in/yaml.v2 \
   129  		github.com/sirupsen/logrus \
   130  		gopkg.in/check.v1 \
   131  		github.com/kr/logfmt \
   132  		github.com/phonkee/go-pubsub \
   133  		github.com/jinzhu/gorm \
   134  		github.com/mattn/go-sqlite3 \
   135  		github.com/dgrijalva/jwt-go \
   136  		github.com/getsentry/raven-go \
   137  		github.com/gobuffalo/packr/v2 \
   138  		github.com/gobuffalo/packr/v2/... \
   139  		github.com/gorilla/mux \
   140  		github.com/eosspark/geos/common/hexutil
   141  		
   142  	go install github.com/golang/dep/cmd/dep
   143  	# loomchain make deps will try to clone prometheus/** and will fail if the directory exists
   144  	rm -rf $(GOPATH)/src/github.com/prometheus
   145  	cd $(LOOMCHAIN_DIR) && git checkout master && git pull && git checkout $(LOOMCHAIN_GIT_REV) && git pull && \
   146  	make deps && make && cp loom $(GOPATH)/bin
   147  
   148  
   149  abigen:
   150  	go build github.com/ethereum/go-ethereum/cmd/abigen
   151  	mkdir tmp_build || true
   152  	# Need to run truffle compile and compile over latest ABI for a zombie battleground solidity mode
   153  	cat ./ethcontract/zbgame_mode.json | jq '.abi' > ./tmp_build/eth_game_mode_contract.abi
   154  	./abigen --abi ./tmp_build/eth_game_mode_contract.abi --pkg ethcontract --type ZGCustomGameMode --out ethcontract/zb_gamemode.go
   155  
   156  oracle-abigen:
   157  	go build github.com/ethereum/go-ethereum/cmd/abigen
   158  	./abigen --abi oracle/abi/ZBGCardABI.json --pkg ethcontract --type ZBGCard --out oracle/ethcontract/zbgcard.go
   159  
   160  test:
   161  	#TODO fix go vet in tests
   162  	go test -timeout=30m -vet=off -v ./... -tags evm
   163  
   164  clean:
   165  	go clean
   166  	rm -f \
   167  		protoc-gen-gogo \
   168  		types/zb/zb.pb.go \
   169  		types/zb/Zb.cs \
   170  		types/zb/zb_data/zb_data.pb.go \
   171  		types/zb/zb_enums/zb_enums.pb.go \
   172  		types/zb/zb_calls/zb_calls.pb.go \
   173  		types/zb/zb_custombase/zb_custombase.pb.go \
   174  		types/zb/zb_data/ZbData.cs \
   175  		types/zb/zb_calls/ZbCalls.cs \
   176  		types/zb/zb_enums/ZbEnums.cs \
   177  		types/zb/zb_custombase/ZbCustombase.cs \
   178  		types/oracle/oracle.pb.go \
   179  		types/nullable/nullable_pb/nullable.pb.go \
   180  		types/nullable/nullable_pb/Nullable.cs \
   181  		types/nullable/nullable_test_pb/nullable_test.pb.go \
   182  		contracts/zombiebattleground.so.1.0.0 \
   183  		contracts/zombiebattleground.1.0.0 \
   184  		bin/zb-cli \
   185  		bin/zb-enum-gen \
   186  		bin/gamechain-logger \
   187  		bin/gamechain-replay \
   188  		bin/gamechain-debugger
   189  
   190  
   191  .PHONY: all clean test deps proto cli zb_console_game tools bin/zb-enum-gen bin/gamechain-logger abigen bin/gcoracle oracle-abigen