common.mk 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. SHELL := /bin/bash
  2. # 当前makefile所在的目录
  3. COMMON_SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
  4. # 设置项目根路径
  5. ifeq ($(origin ROOT_DIR),undefined)
  6. ROOT_DIR := $(abspath $(shell cd $(COMMON_SELF_DIR)/../../ && pwd -P))
  7. endif
  8. ifeq ($(origin OUTPUT_DIR),undefined)
  9. OUTPUT_DIR := $(ROOT_DIR)/_output
  10. $(shell mkdir -p $(OUTPUT_DIR))
  11. endif
  12. ifeq ($(origin TOOLS_DIR),undefined)
  13. TOOLS_DIR := $(OUTPUT_DIR)/tools
  14. $(shell mkdir -p $(TOOLS_DIR))
  15. endif
  16. ifeq ($(origin TMP_DIR),undefined)
  17. TMP_DIR := $(OUTPUT_DIR)/tmp
  18. $(shell mkdir -p $(TMP_DIR))
  19. endif
  20. # 设置版本编号
  21. ifeq ($(origin VERSION),undefined)
  22. VERSION := $(shell git describe --tags --always --match='v*')
  23. endif
  24. GIT_TREE_STATE := "dirty"
  25. ifeq (,$(shell git status --procelain 2>/dev/null))
  26. GIT_TREE_STATE = "clean"
  27. endif
  28. GIT_COMMIT := $(shell git rev-parse HEAD)
  29. # 最小的测试覆盖率
  30. ifeq ($(origin COVERAGE),undefined)
  31. COVERAGE := 60
  32. endif
  33. # The OS must be linux when building docker images
  34. PLATFORMS ?= linux_amd64
  35. # The OS can be linux/windows/darwin when building binaries
  36. # PLATFORMS ?= darwin_amd64 windows_amd64 linux_amd64 linux_arm64
  37. # 设置指定平台
  38. ifeq ($(origin PLATFORM),undefined)
  39. ifeq ($(origin GOOS),undefined)
  40. GOOS := $(shell go env GOOS)
  41. endif
  42. ifeq ($(origin GOARCH),undefined)
  43. GOARCH := $(shell go env GOARCH)
  44. endif
  45. PLATFORM := $(GOOS)_$(GOARCH)
  46. # 使用linux作为镜像的操作系统
  47. IMAGE_PLAT := linux_$(GOARCH)
  48. else
  49. GOOS := $(word 1,$(subst _, ,$(PLATFORM)))
  50. GOARCH := $(word 2,$(subst _, ,$(PLATFORM)))
  51. IMAGE_PLAT := $(PLATFORM)
  52. endif
  53. # linux命令设置
  54. FIND := find . ! -path './third_party/*' ! -path './vendor/*'
  55. XARGS := xargs --no-run-if-empty
  56. # Makefile settings
  57. ifndef V
  58. MAKEFLAGS += --no-print-directory
  59. endif