github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/Makefile (about)

     1  SHELL=/bin/bash -o pipefail
     2  
     3  VERSION=0.9.10
     4  TARGETS=linux/amd64 windows/amd64 darwin/amd64 linux/s390x linux/ppc64le  linux/arm64
     5  
     6  GO ?= go
     7  DOCKER ?= docker
     8  
     9  GIT_REV := $(shell git rev-parse HEAD 2> /dev/null || true)
    10  GIT_COMMIT := $(if $(shell git status --porcelain --untracked-files=no),${GIT_REV}-dirty,${GIT_REV})
    11  GIT_BRANCH ?= $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
    12  
    13  export GO111MODULE=on
    14  PWD=$(shell pwd)
    15  LDFLAGS := -s -X github.com/vchain-us/vcn/pkg/meta.version=v${VERSION} \
    16  			  -X github.com/vchain-us/vcn/pkg/meta.gitCommit=${GIT_COMMIT} \
    17  			  -X github.com/vchain-us/vcn/pkg/meta.gitBranch=${GIT_BRANCH}
    18  LDFLAGS_STATIC := ${LDFLAGS} \
    19  				  -X github.com/vchain-us/vcn/pkg/meta.static=static \
    20  				  -extldflags "-static"
    21  TEST_FLAGS ?= -v -race
    22  VCNEXE=vcn-v${VERSION}-windows-amd64.exe
    23  SETUPEXE=codenotary_vcn_v${VERSION}_setup.exe
    24  
    25  .PHONY: vcn
    26  vcn:
    27  	$(GO) build -ldflags '${LDFLAGS} -X github.com/vchain-us/vcn/pkg/meta.version=v${VERSION}-dev' ./cmd/vcn
    28  
    29  .PHONY: vendor
    30  vendor:
    31  	$(GO) mod vendor
    32  
    33  .PHONY: test
    34  test:
    35  	$(GO) vet ./...
    36  	$(GO) test ${TEST_FLAGS} ./...
    37  
    38  .PHONY: install
    39  install: TEST_FLAGS=-v
    40  install: vendor test
    41  	$(GO) install -ldflags '${LDFLAGS}' ./cmd/vcn
    42  
    43  .PHONY: static
    44  static:
    45  	$(GO) build -a -tags netgo -ldflags '${LDFLAGS_STATIC}' ./cmd/vcn
    46  
    47  .PHONY: docs/cmd
    48  docs/cmd:
    49  	rm -rf docs/cmd/*.md
    50  	$(GO) run docs/cmd/main.go
    51  
    52  .PHONY: build/xgo
    53  build/xgo:
    54  	$(DOCKER) build \
    55  			-f ./build/xgo/Dockerfile \
    56  			-t vcn-xgo \
    57  			--pull=true \
    58  			./build/xgo
    59  
    60  .PHONY: build/makensis
    61  build/makensis:
    62  	$(DOCKER) build \
    63  		-f ./build/makensis/Dockerfile \
    64  		-t vcn-makensis \
    65  		./build/makensis
    66  
    67  .PHONY: clean/dist
    68  clean/dist:
    69  	rm -Rf ./dist
    70  
    71  .PHONY: clean
    72  clean: clean/dist
    73  	rm -f ./vcn
    74  
    75  .PHONY: CHANGELOG.md
    76  CHANGELOG.md:
    77  	git-chglog -o CHANGELOG.md
    78  
    79  .PHONY: CHANGELOG.md.next-tag
    80  CHANGELOG.md.next-tag:
    81  	git-chglog -o CHANGELOG.md --next-tag v${VERSION}
    82  
    83  .PHONY: dist
    84  dist: clean/dist build/xgo
    85  	mkdir -p dist
    86  	$(GO) build -a -tags netgo -ldflags '${LDFLAGS_STATIC}' \
    87  			-o ./dist/vcn-v${VERSION}-linux-amd64-static \
    88  			./cmd/vcn
    89  	$(DOCKER) run --rm \
    90  			-v ${PWD}/dist:/dist \
    91  			-v ${PWD}:/source \
    92  			-e GO111MODULE=on \
    93  			-e FLAG_LDFLAGS="${LDFLAGS}" \
    94  			-e TARGETS="${TARGETS}" \
    95  			-e PACK=cmd/vcn \
    96  			-e OUT=vcn-v${VERSION} \
    97  			vcn-xgo .
    98  	mv ./dist/vcn-v${VERSION}-windows-4.0-amd64.exe ./dist/${VCNEXE}
    99  	mv ./dist/vcn-v${VERSION}-darwin-10.6-amd64 ./dist/vcn-v${VERSION}-darwin-amd64
   100  
   101  .PHONY: dist/${VCNEXE} dist/${SETUPEXE}
   102  dist/${VCNEXE} dist/${SETUPEXE}:
   103  	echo ${SIGNCODE_PVK_PASSWORD} | $(DOCKER) run --rm -i \
   104  		-v ${PWD}/dist:/dist \
   105  		-v ${SIGNCODE_SPC}:/certs/f.spc:ro \
   106  		-v ${SIGNCODE_PVK}:/certs/f.pvk:ro \
   107  		mono:5.20 signcode \
   108  		-spc /certs/f.spc -v /certs/f.pvk \
   109  		-a sha1 -$ commercial \
   110  		-n "CodeNotary vcn" \
   111  		-i https://codenotary.io/ \
   112  		-t http://timestamp.comodoca.com -tr 10 \
   113  		$@
   114  	rm -Rf $@.bak
   115  
   116  .PHONY: dist/NSIS
   117  dist/NSIS: build/makensis
   118  	mkdir -p dist/NSIS
   119  	cp -f ./dist/${VCNEXE} ./dist/NSIS/vcn.exe
   120  	cp -f ./build/NSIS/* ./dist/NSIS/
   121  	sed -e "s/{VCN_VERSION}/v${VERSION}/g" ./build/NSIS/setup.nsi > ./dist/NSIS/setup.nsi
   122  	$(DOCKER) run --rm \
   123  			-v ${PWD}/dist/NSIS/:/app \
   124  			vcn-makensis /app/setup.nsi
   125  	cp ./dist/NSIS/*_setup.exe ./dist/
   126  	rm -Rf ./dist/NSIS
   127  
   128  .PHONY: dist/sign
   129  dist/sign: vcn
   130  	for f in ./dist/*; do ./vcn sign -p $$f; printf "\n\n"; done
   131  
   132  .PHONY: dist/all
   133  dist/all: dist dist/${VCNEXE} dist/NSIS dist/${SETUPEXE}
   134  
   135  .PHONY: dist/binary.md
   136  dist/binary.md:
   137  	@for f in ./dist/*; do \
   138  		ff=$$(basename $$f); \
   139  		shm_id=$$(sha256sum $$f | awk '{print $$1}'); \
   140  		printf "[$$ff](https://github.com/vchain-us/vcn/releases/download/v${VERSION}/$$ff) | $$shm_id \n" ; \
   141  	done
   142  
   143  .PHONY: build/codegen
   144  build/codegen:
   145  	protoc -I pkg/lcgrpc pkg/lcgrpc/lc.proto  \
   146  	-I${GOPATH}/pkg/mod \
   147  	-I${GOPATH}/pkg/mod/github.com/codenotary/immudb@v0.8.0/pkg/api/schema \
   148  	-I${GOPATH}/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.4/third_party/googleapis \
   149  	-I${GOPATH}/pkg/mod/github.com/dgraph-io/badger/v2@v2.0.0-20200408100755-2e708d968e94 \
   150  	-I${GOPATH}/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.14.4 \
   151  	--go_out=pkg/lcgrpc --go-grpc_out=pkg/lcgrpc \
   152  	--go_opt=paths=source_relative \
   153  	--go-grpc_opt=paths=source_relative