github.com/0chain/gosdk@v1.17.11/Makefile (about)

     1  ROOT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
     2  
     3  GOMODCORE           := $(GOMODBASE)/zcncore
     4  VERSION_FILE        := $(ROOT_DIR)/core/version/version.go
     5  MAJOR_VERSION       := "1.0"
     6  
     7  
     8  
     9  include _util/printer.mk
    10  
    11  PLATFORM:=$(shell uname -s | tr "[:upper:]" "[:lower:]")
    12  ifneq ($(filter $(GCC_MINOR),linux darwin),)
    13  
    14  else
    15  	PLATFORM:=windows
    16  endif
    17  
    18  include _util/build_$(PLATFORM).mk
    19  include _util/build_mobile.mk
    20  
    21  .PHONY: build-tools install-all herumi-all gosdk-all sdkver help lint docs
    22  
    23  default: help
    24  
    25  #GO BUILD SDK
    26  gomod-download:
    27  	go mod download -json
    28  
    29  gomod-clean:
    30  	go clean -i -r -x -modcache  ./...
    31  
    32  clean-gosdk:
    33  
    34  gosdk-build: gomod-download
    35  	go build -x -v -tags bn256 ./...
    36  
    37  wasm-build: getrev
    38  	CGO_ENABLED=0 GOOS=js GOARCH=wasm go build -ldflags="-s -w" -buildvcs=false -o ./zcn.wasm  ./wasmsdk
    39  
    40  wasm-test: wasm-build
    41  	env -i $(shell go env) PATH="$(shell go env GOROOT)/misc/wasm:$(PATH)" CGO_ENABLED=0 GOOS=js GOARCH=wasm go test -v ./wasmsdk/jsbridge/input_test.go ./wasmsdk/jsbridge/input.go ./wasmsdk/jsbridge/object.go ./wasmsdk/jsbridge/error.go ./wasmsdk/jsbridge/func.go ./wasmsdk/jsbridge/func_test.go ./wasmsdk/jsbridge/sync.go ./wasmsdk/jsbridge/async.go ./wasmsdk/jsbridge/output.go ./wasmsdk/jsbridge/vars.go
    42   
    43  gosdk-mocks:
    44  	./generate_mocks.sh
    45  
    46  gosdk-test:
    47  	go test -tags bn256 -p 1 ./...
    48  
    49  install-gosdk: | gosdk-build wasm-build
    50  
    51  $(GOPATH)/bin/modvendor:
    52  	@go get -u github.com/goware/modvendor
    53  
    54  vendor: $(GOPATH)/bin/modvendor
    55  	@GO111MODULE=on go mod vendor -v
    56  	@modvendor -copy="**/*.c **/*.h **/*.a" -v
    57  
    58  getrev:
    59  	$(eval VERSION_STR=$(shell git describe --tags --always))
    60  	@echo "" > $(VERSION_FILE)
    61  	@echo "//====== THIS IS AUTOGENERATED FILE. DO NOT MODIFY ========" >> $(VERSION_FILE)
    62  	@echo "" >> $(VERSION_FILE)
    63  	@echo "package version" >> $(VERSION_FILE)
    64  	@echo const VERSIONSTR = \"$(VERSION_STR)\" >> $(VERSION_FILE)
    65  	@echo "" >> $(VERSION_FILE)
    66  
    67  install: install-gosdk sdkver
    68  
    69  test: gosdk-test
    70  
    71  clean: clean-gosdk clean-herumi
    72  	@rm -rf $(OUTDIR)
    73  
    74  lint-wasm:
    75  	GOOS=js GOARCH=wasm CGO_ENABLED=0 golangci-lint run wasmsdk --disable-all -E errcheck
    76  
    77  lint: lint-wasm
    78  	golangci-lint run --skip-dirs wasmsdk
    79  
    80  
    81  build-windows: getrev
    82  	@echo "Building 0Chain Windows SDK. Please wait..."
    83  	@go build --buildmode=c-shared -ldflags="-s -w" -o ./winsdk/zcn.windows.dll ./winsdk
    84  	@echo "  ./winsdk/zcn.windows.dll - [OK]"
    85  
    86  help:
    87  	@echo "Environment: "
    88  	@echo "\tPLATFORM.......: $(PLATFORM)"
    89  	@echo "\tGOPATH.........: $(GOPATH)"
    90  	@echo "\tGOROOT.........: $(GOROOT)"
    91  	@echo ""
    92  	@echo "Supported commands:"
    93  	@echo "\tmake help              - Display environment and make targets"
    94  	@echo "\tmake build-tools       - Install go, jq and supporting tools required for build"
    95  	@echo "\tmake install           - Install gosdk"
    96  	@echo "\tmake clean             - Deletes all build output files"
    97  	@echo "\tmake lint              - Runs the golangci-lint
    98  
    99  install-herumi-ubuntu:
   100  	@cd /tmp && \
   101          wget -O - https://github.com/herumi/mcl/archive/refs/tags/v1.57.tar.gz | tar xz && \
   102          wget -O - https://github.com/herumi/bls/archive/refs/tags/v1.22.tar.gz | tar xz && \
   103          rm -rf mcl && mv mcl* mcl && \
   104          rm -rf bls &&mv bls* bls && \
   105          make -C mcl -j $(nproc) lib/libmclbn256.so install && \
   106          cp mcl/lib/libmclbn256.so /usr/local/lib && \
   107          make MCL_DIR=/tmp/mcl -C bls -j $(nproc) install && \
   108          rm -R /tmp/mcl && \
   109          rm -R /tmp/bls
   110  
   111  docs:
   112  	@gomarkdoc --exclude-dirs ./zcncore/sample --output '{{.Dir}}/README.md' --repository.default-branch doc/initial ./...
   113  	@sed -i '' -r 's/\\_/_/g' ./**/README.md
   114  	@sed -i '' -r 's/\\`/`/g' ./**/README.md