VERSION=v1.1.0
BRANCH=v1.1.0
OS := $(shell uname -s)
PLATFORM=$(shell uname -m)
ARCH := $(shell uname -m)
DATETIME=$(shell date "+%Y/%m/%d %H:%M:%S")
GIT_BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
GIT_COMMIT = $(shell git log --pretty=format:'%h' -n 1)

# 注意:这里的路径是你自己的交叉编译工具链的路径, 下载地址https://github.com/messense/homebrew-macos-cross-toolchains/releases
CROSS_BUILD_LINUX_GUN_GCC = /Users/hxy/wkdir/x86_64-unknown-linux-gnu/build/x86_64-unknown-linux-gnu-gcc

LOCALCONF_HOME=chainweaver.org.cn/chainweaver/mira/mira-ida-access-service/internal/config
GOLDFLAGS = -X "${LOCALCONF_HOME}.CurrentVersion=${VERSION}" \
            -X "${LOCALCONF_HOME}.BuildDateTime=${DATETIME}" \
            -X "${LOCALCONF_HOME}.GitBranch=${GIT_BRANCH}" \
            -X "${LOCALCONF_HOME}.GitCommit=${GIT_COMMIT}"

BUILD_DIR=./build
OUTPUT=${BUILD_DIR}/mira-ida-access-service

.PHONY: build build_local build_docker build_docker_simple build_linux build_linux_simple generate ut clean start-service

# 本地编译
build: mod_tidy build_binary

# 本地编译 depend on vendor
build_local: build_binary
	go build -ldflags '${GOLDFLAGS}' -o ${OUTPUT} .

# Docker构建
build_docker: mod_tidy mod_vendor docker_build
	./docker_build.sh -t ${VERSION} -p false

build_docker_simple: build docker_build_simple
	./docker_build_simple.sh -t ${VERSION} -p false

# 本地需要安装交叉编译器
build_linux: mod_tidy build_linux_binary generate_md5

build_linux_simple: mod_tidy build_linux_binary generate_md5 docker_build_simple
	./docker_build_simple.sh -t ${VERSION} -p false

generate:
	go generate ./...

ut:
	go test ./...

start-service:
	go run ./miraidaaccessservice.go

clean:
	rm -rf ${BUILD_DIR}

# 辅助目标
mod_tidy:
	go mod tidy

mod_vendor:
	go mod vendor

build_binary:
	go build -ldflags '${GOLDFLAGS}' -o ${OUTPUT} .

build_linux_binary:
	@rm -rf ${BUILD_DIR}/linux_amd64 && mkdir -p ${BUILD_DIR}/linux_amd64
	CGO_ENABLED=1 CC=${CROSS_BUILD_LINUX_GUN_GCC} GOARCH=amd64 GOOS=linux go build -ldflags '${GOLDFLAGS}' -o ${OUTPUT} ./cmd/main.go

generate_md5:
	md5 ${OUTPUT} | awk '{print $$NF}' > ${BUILD_DIR}/md5.txt

docker_build:
	@echo "Building Docker image..."

docker_build_simple:
	@echo "Building simple Docker image..."