github.com/klaytn/klaytn@v1.10.2/Makefile (about)

     1  # This Makefile is meant to be used by people that do not usually work
     2  # with Go source code. If you know what GOPATH is then you probably
     3  # don't need to bother with make.
     4  
     5  GO ?= latest
     6  GOPATH := $(or $(GOPATH), $(shell go env GOPATH))
     7  GORUN = env GOPATH=$(GOPATH) GO111MODULE=on go run
     8  
     9  BIN = $(shell pwd)/build/bin
    10  BUILD_PARAM?=install
    11  
    12  OBJECTS=kcn kpn ken kscn kspn ksen kbn kgen homi
    13  RPM_OBJECTS=$(foreach wrd,$(OBJECTS),rpm-$(wrd))
    14  RPM_BAOBAB_OBJECTS=$(foreach wrd,$(OBJECTS),rpm-baobab-$(wrd))
    15  TAR_LINUX_386_OBJECTS=$(foreach wrd,$(OBJECTS),tar-linux-386-$(wrd))
    16  TAR_LINUX_amd64_OBJECTS=$(foreach wrd,$(OBJECTS),tar-linux-amd64-$(wrd))
    17  TAR_DARWIN_amd64_OBJECTS=$(foreach wrd,$(OBJECTS),tar-darwin-amd64-$(wrd))
    18  TAR_BAOBAB_LINUX_386_OBJECTS=$(foreach wrd,$(OBJECTS),tar-baobab-linux-386-$(wrd))
    19  TAR_BAOBAB_LINUX_amd64_OBJECTS=$(foreach wrd,$(OBJECTS),tar-baobab-linux-amd64-$(wrd))
    20  TAR_BAOBAB_DARWIN_amd64_OBJECTS=$(foreach wrd,$(OBJECTS),tar-baobab-darwin-amd64-$(wrd))
    21  
    22  .PHONY: all test clean ${OBJECTS} ${RPM_OBJECTS} ${TAR_LINUX_386_OBJECTS} ${TAR_DARWIN_amd64_OBJECTS} ${TAR_LINUX_amd64_OBJECTS}
    23  
    24  all: ${OBJECTS}
    25  rpm-all: ${RPM_OBJECTS}
    26  rpm-baobab-all: ${RPM_BAOBAB_OBJECTS}
    27  tar-linux-386-all: ${TAR_LINUX_386_OBJECTS}
    28  tar-linux-amd64-all: ${TAR_LINUX_amd64_OBJECTS}
    29  tar-darwin-amd64-all: ${TAR_DARWIN_amd64_OBJECTS}
    30  tar-baobab-linux-386-all: ${TAR_BAOBAB_LINUX_386_OBJECTS}
    31  tar-baobab-linux-amd64-all: ${TAR_BAOBAB_LINUX_amd64_OBJECTS}
    32  tar-baobab-darwin-amd64-all: ${TAR_BAOBAB_DARWIN_amd64_OBJECTS}
    33  
    34  ${OBJECTS}:
    35  	$(GORUN) build/ci.go ${BUILD_PARAM} ./cmd/$@
    36  
    37  ${RPM_OBJECTS}:
    38  	./build/package-rpm.sh ${@:rpm-%=%}
    39  
    40  ${RPM_BAOBAB_OBJECTS}:
    41  	./build/package-rpm.sh -b ${@:rpm-baobab-%=%}
    42  
    43  ${TAR_LINUX_386_OBJECTS}:
    44  	$(eval BIN := ${@:tar-linux-386-%=%})
    45  	./build/cross-compile.sh linux-386 ${BIN}
    46  	./build/package-tar.sh linux-386 ${BIN}
    47  
    48  ${TAR_LINUX_amd64_OBJECTS}:
    49  	$(eval BIN := ${@:tar-linux-amd64-%=%})
    50  	./build/cross-compile.sh linux-amd64 ${BIN}
    51  	./build/package-tar.sh linux-amd64 ${BIN}
    52  
    53  ${TAR_DARWIN_amd64_OBJECTS}:
    54  	$(eval BIN := ${@:tar-darwin-amd64-%=%})
    55  	./build/cross-compile.sh darwin-amd64 ${BIN}
    56  	./build/package-tar.sh darwin-amd64 ${BIN}
    57  
    58  ${TAR_BAOBAB_LINUX_386_OBJECTS}:
    59  	$(eval BIN := ${@:tar-baobab-linux-386-%=%})
    60  	./build/cross-compile.sh linux-386 ${BIN}
    61  	./build/package-tar.sh -b linux-386 ${BIN}
    62  
    63  ${TAR_BAOBAB_LINUX_amd64_OBJECTS}:
    64  	$(eval BIN := ${@:tar-baobab-linux-amd64-%=%})
    65  	./build/cross-compile.sh linux-amd64 ${BIN}
    66  	./build/package-tar.sh -b linux-amd64 ${BIN}
    67  
    68  ${TAR_BAOBAB_DARWIN_amd64_OBJECTS}:
    69  	$(eval BIN := ${@:tar-baobab-darwin-amd64-%=%})
    70  	./build/cross-compile.sh darwin-amd64 ${BIN}
    71  	./build/package-tar.sh -b darwin-amd64 ${BIN}
    72  
    73  abigen:
    74  	$(GORUN) build/ci.go ${BUILD_PARAM} ./cmd/abigen
    75  	@echo "Done building."
    76  	@echo "Run \"$(BIN)/abigen\" to launch abigen."
    77  
    78  test:
    79  	$(GORUN) build/ci.go test
    80  
    81  test-seq:
    82  	$(GORUN) build/ci.go test -p 1
    83  
    84  test-datasync:
    85  	$(GORUN) build/ci.go test -p 1 ./datasync/...
    86  
    87  test-networks:
    88  	$(GORUN) build/ci.go test -p 1 ./networks/...
    89  
    90  test-node:
    91  	$(GORUN) build/ci.go test -p 1 ./node/...
    92  
    93  test-tests:
    94  	$(GORUN) build/ci.go test -p 1 ./tests/...
    95  
    96  test-others:
    97  	$(GORUN) build/ci.go test -p 1 -exclude datasync,networks,node,tests
    98  
    99  cover:
   100  	$(GORUN) build/ci.go cover -coverprofile=coverage.out
   101  	go tool cover -func=coverage.out -o coverage_report.txt
   102  	go tool cover -html=coverage.out -o coverage_report.html
   103  	@echo "Two coverage reports coverage_report.txt and coverage_report.html are generated."
   104  
   105  fmt:
   106  	$(GORUN) build/ci.go fmt
   107  
   108  lint-try:
   109  	$(GORUN) build/ci.go lint-try
   110  
   111  clean:
   112  	env GO111MODULE=on go clean -cache
   113  	rm -fr build/_workspace/pkg/ $(BIN)/* build/_workspace/src/
   114  
   115  # The devtools target installs tools required for 'go generate'.
   116  # You need to put $BIN (or $GOPATH/bin) in your PATH to use 'go generate'.
   117  
   118  devtools:
   119  	env GOFLAGS= GOBIN= go get -u golang.org/x/tools/cmd/stringer
   120  	env GOFLAGS= GOBIN= go get -u github.com/kevinburke/go-bindata/go-bindata
   121  	env GOFLAGS= GOBIN= go get -u github.com/fjl/gencodec
   122  	env GOFLAGS= GOBIN= go get -u github.com/golang/protobuf/protoc-gen-go
   123  	env GOFLAGS= GOBIN= go install ./cmd/abigen
   124  	@type "npm" 2> /dev/null || echo 'Please install node.js and npm'
   125  	@type "solc" 2> /dev/null || echo 'Please install solc'
   126  	@type "protoc" 2> /dev/null || echo 'Please install protoc'