BUILD_TIME := $(shell date "+%F %T")
COMMIT_SHA1 := $(shell git rev-parse HEAD )
VERSION=0.0.1
LDFLAGS := -ldflags "-X 'chainmaker.org/chainmaker/ida/chain-service/internal.BuildTime=${BUILD_TIME}'  -X 'chainmaker.org/chainmaker/ida/chain-service/internal.CommitID=${COMMIT_SHA1}'  -X 'chainmaker.org/chainmaker/ida/chain-service/internal.Version=${VERSION}'"
SOURCE := ./chain.go
BUILD_NAME := chain-service

IMAGE=192.168.1.181:5000/ida/assets-chainservice
REV=$(shell git rev-parse --short HEAD)
REPO=${IMAGE}-${REV}:${VERSION}

.PHONY:gen-code start-service build

gen-code:
	@sh ./scripts/generate_code.sh chain-service chain chainpb

#gen-code:
#
#	# 先生成 go-zero 的基础代码,此时可能只包含部分 grpc pb、service 定义文件
#	# goctl rpc 工具一次只能读取一个 proto 文件,不要用 *.proto(go-zero 的 cli flag 会将 * 识别成多个文件参数,报错了)
#	goctl rpc protoc --go_out=./internal/types --go-grpc_out=./internal/types --zrpc_out=. ./proto/chain.proto
#
#	# 再用原生 protoc 生成所有的 grpc pb、service 定义文件
#	protoc --go_out=./internal/types --go-grpc_out=./internal/types ./proto/*.proto

start-service:
	go run ./chain.go

build:
	go build -buildmode=c-shared ${LDFLAGS} -o ${BUILD_NAME} ./chain.go

build-docker:
	go mod vendor
	# 注意:需要先将common库clone到和chain-service同级目录
	cd ../common && git checkout v2.3.2
	cp -a ../common/opencrypto/gmssl/gmssl/include ./vendor/chainmaker.org/chainmaker/common/v2/opencrypto/gmssl/gmssl/
	cp -a ../common/opencrypto/gmssl/gmssl/lib ./vendor/chainmaker.org/chainmaker/common/v2/opencrypto/gmssl/gmssl/lib/
	# 密码学 tencentsm 相关
	cp -a ../common/opencrypto/tencentsm/tencentsm/include ./vendor/chainmaker.org/chainmaker/common/v2/opencrypto/tencentsm/tencentsm/
	cp -a ../common/opencrypto/tencentsm/tencentsm/lib ./vendor/chainmaker.org/chainmaker/common/v2/opencrypto/tencentsm/tencentsm/
	docker build -t ${REPO} -f ./docker/Dockerfile .

gen-cert:
	bash ./scripts/generate_cert.sh ./cert ./scripts