Makefile 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. NAME := oci-help
  2. PACKAGE_NAME := github.com/lemoex/oci-help
  3. VERSION := $(shell git describe --tags || echo "unknown-version")
  4. COMMIT := $(shell git rev-parse HEAD)
  5. BUILDTIME := $(shell date -u "+%Y-%m-%d %H:%M:%S %Z")
  6. BUILD_DIR := build
  7. VAR_SETTING := -X "$(PACKAGE_NAME)/constant.Version=$(VERSION)" -X "$(PACKAGE_NAME)/constant.Commit=$(COMMIT)" -X "$(PACKAGE_NAME)/constant.BuildTime=$(BUILDTIME)"
  8. GOBUILD = CGO_ENABLED=0 go build -trimpath -ldflags '-s -w -buildid= $(VAR_SETTING)' \
  9. -o $(BUILD_DIR)
  10. PLATFORM_LIST = \
  11. darwin-amd64 \
  12. darwin-arm64 \
  13. linux-amd64 \
  14. linux-arm64 \
  15. windows-amd64 \
  16. windows-arm64
  17. zip_release = $(addsuffix .zip, $(PLATFORM_LIST))
  18. .PHONY: build clean release
  19. normal: clean build
  20. clean:
  21. @rm -rf $(BUILD_DIR)
  22. @echo "Cleaning up."
  23. $(zip_release): %.zip : %
  24. @zip -du $(BUILD_DIR)/$(NAME)-$<-$(VERSION).zip -j -m $(BUILD_DIR)/$</$(NAME)*
  25. @zip -du $(BUILD_DIR)/$(NAME)-$<-$(VERSION).zip *.ini
  26. @-zip -du $(BUILD_DIR)/$(NAME)-$<-$(VERSION).zip README.md
  27. @echo "✅ $(NAME)-$<-$(VERSION).zip"
  28. all: linux-amd64 darwin-amd64 windows-amd64 # Most used
  29. all-arch: $(PLATFORM_LIST)
  30. release: $(zip_release)
  31. build:
  32. @-mkdir -p $(BUILD_DIR)
  33. $(GOBUILD)/$(NAME)
  34. darwin-amd64:
  35. mkdir -p $(BUILD_DIR)/$@
  36. GOARCH=amd64 GOOS=darwin $(GOBUILD)/$@/$(NAME)
  37. darwin-arm64:
  38. mkdir -p $(BUILD_DIR)/$@
  39. GOARCH=arm64 GOOS=darwin $(GOBUILD)/$@/$(NAME)
  40. linux-386:
  41. mkdir -p $(BUILD_DIR)/$@
  42. GOARCH=386 GOOS=linux $(GOBUILD)/$@/$(NAME)
  43. linux-amd64:
  44. mkdir -p $(BUILD_DIR)/$@
  45. GOARCH=amd64 GOOS=linux $(GOBUILD)/$@/$(NAME)
  46. linux-arm:
  47. mkdir -p $(BUILD_DIR)/$@
  48. GOARCH=arm GOOS=linux $(GOBUILD)/$@/$(NAME)
  49. linux-armv5:
  50. mkdir -p $(BUILD_DIR)/$@
  51. GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD)/$@/$(NAME)
  52. linux-armv6:
  53. mkdir -p $(BUILD_DIR)/$@
  54. GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD)/$@/$(NAME)
  55. linux-armv7:
  56. mkdir -p $(BUILD_DIR)/$@
  57. GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD)/$@/$(NAME)
  58. linux-arm64:
  59. mkdir -p $(BUILD_DIR)/$@
  60. GOARCH=arm64 GOOS=linux $(GOBUILD)/$@/$(NAME)
  61. linux-mips-softfloat:
  62. mkdir -p $(BUILD_DIR)/$@
  63. GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  64. linux-mips-hardfloat:
  65. mkdir -p $(BUILD_DIR)/$@
  66. GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  67. linux-mipsle-softfloat:
  68. mkdir -p $(BUILD_DIR)/$@
  69. GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  70. linux-mipsle-hardfloat:
  71. mkdir -p $(BUILD_DIR)/$@
  72. GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  73. linux-mips64:
  74. mkdir -p $(BUILD_DIR)/$@
  75. GOARCH=mips64 GOOS=linux $(GOBUILD)/$@/$(NAME)
  76. linux-mips64le:
  77. mkdir -p $(BUILD_DIR)/$@
  78. GOARCH=mips64le GOOS=linux $(GOBUILD)/$@/$(NAME)
  79. freebsd-386:
  80. mkdir -p $(BUILD_DIR)/$@
  81. GOARCH=386 GOOS=freebsd $(GOBUILD)/$@/$(NAME)
  82. freebsd-amd64:
  83. mkdir -p $(BUILD_DIR)/$@
  84. GOARCH=amd64 GOOS=freebsd $(GOBUILD)/$@/$(NAME)
  85. freebsd-arm64:
  86. mkdir -p $(BUILD_DIR)/$@
  87. GOARCH=arm64 GOOS=freebsd $(GOBUILD)/$@/$(NAME)
  88. windows-386:
  89. mkdir -p $(BUILD_DIR)/$@
  90. GOARCH=386 GOOS=windows $(GOBUILD)/$@/$(NAME).exe
  91. windows-amd64:
  92. mkdir -p $(BUILD_DIR)/$@
  93. GOARCH=amd64 GOOS=windows $(GOBUILD)/$@/$(NAME).exe
  94. windows-arm:
  95. mkdir -p $(BUILD_DIR)/$@
  96. GOARCH=arm GOOS=windows $(GOBUILD)/$@/$(NAME).exe
  97. windows-armv6:
  98. mkdir -p $(BUILD_DIR)/$@
  99. GOARCH=arm GOOS=windows GOARM=6 $(GOBUILD)/$@/$(NAME).exe
  100. windows-armv7:
  101. mkdir -p $(BUILD_DIR)/$@
  102. GOARCH=arm GOOS=windows GOARM=7 $(GOBUILD)/$@/$(NAME).exe
  103. windows-arm64:
  104. mkdir -p $(BUILD_DIR)/$@
  105. GOARCH=arm64 GOOS=windows $(GOBUILD)/$@/$(NAME).exe