SHELL := /bin/bash # 当前makefile所在的目录 COMMON_SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) # 设置项目根路径 ifeq ($(origin ROOT_DIR),undefined) ROOT_DIR := $(abspath $(shell cd $(COMMON_SELF_DIR)/../../ && pwd -P)) endif ifeq ($(origin OUTPUT_DIR),undefined) OUTPUT_DIR := $(ROOT_DIR)/_output $(shell mkdir -p $(OUTPUT_DIR)) endif ifeq ($(origin TOOLS_DIR),undefined) TOOLS_DIR := $(OUTPUT_DIR)/tools $(shell mkdir -p $(TOOLS_DIR)) endif ifeq ($(origin TMP_DIR),undefined) TMP_DIR := $(OUTPUT_DIR)/tmp $(shell mkdir -p $(TMP_DIR)) endif # 设置版本编号 ifeq ($(origin VERSION),undefined) VERSION := $(shell git describe --tags --always --match='v*') endif GIT_TREE_STATE := "dirty" ifeq (,$(shell git status --procelain 2>/dev/null)) GIT_TREE_STATE = "clean" endif GIT_COMMIT := $(shell git rev-parse HEAD) # 最小的测试覆盖率 ifeq ($(origin COVERAGE),undefined) COVERAGE := 60 endif # The OS must be linux when building docker images PLATFORMS ?= linux_amd64 # The OS can be linux/windows/darwin when building binaries # PLATFORMS ?= darwin_amd64 windows_amd64 linux_amd64 linux_arm64 # 设置指定平台 ifeq ($(origin PLATFORM),undefined) ifeq ($(origin GOOS),undefined) GOOS := $(shell go env GOOS) endif ifeq ($(origin GOARCH),undefined) GOARCH := $(shell go env GOARCH) endif PLATFORM := $(GOOS)_$(GOARCH) # 使用linux作为镜像的操作系统 IMAGE_PLAT := linux_$(GOARCH) else GOOS := $(word 1,$(subst _, ,$(PLATFORM))) GOARCH := $(word 2,$(subst _, ,$(PLATFORM))) IMAGE_PLAT := $(PLATFORM) endif # linux命令设置 FIND := find . ! -path './third_party/*' ! -path './vendor/*' XARGS := xargs --no-run-if-empty # Makefile settings ifndef V MAKEFLAGS += --no-print-directory endif