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