Makefile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. @echo "✅ $(NAME)-$<-$(VERSION).zip"
  27. all: linux-amd64 darwin-amd64 windows-amd64 # Most used
  28. all-arch: $(PLATFORM_LIST)
  29. release: $(zip_release)
  30. build:
  31. @-mkdir -p $(BUILD_DIR)
  32. $(GOBUILD)/$(NAME)
  33. darwin-amd64:
  34. mkdir -p $(BUILD_DIR)/$@
  35. GOARCH=amd64 GOOS=darwin $(GOBUILD)/$@/$(NAME)
  36. darwin-arm64:
  37. mkdir -p $(BUILD_DIR)/$@
  38. GOARCH=arm64 GOOS=darwin $(GOBUILD)/$@/$(NAME)
  39. linux-386:
  40. mkdir -p $(BUILD_DIR)/$@
  41. GOARCH=386 GOOS=linux $(GOBUILD)/$@/$(NAME)
  42. linux-amd64:
  43. mkdir -p $(BUILD_DIR)/$@
  44. GOARCH=amd64 GOOS=linux $(GOBUILD)/$@/$(NAME)
  45. linux-arm:
  46. mkdir -p $(BUILD_DIR)/$@
  47. GOARCH=arm GOOS=linux $(GOBUILD)/$@/$(NAME)
  48. linux-armv5:
  49. mkdir -p $(BUILD_DIR)/$@
  50. GOARCH=arm GOOS=linux GOARM=5 $(GOBUILD)/$@/$(NAME)
  51. linux-armv6:
  52. mkdir -p $(BUILD_DIR)/$@
  53. GOARCH=arm GOOS=linux GOARM=6 $(GOBUILD)/$@/$(NAME)
  54. linux-armv7:
  55. mkdir -p $(BUILD_DIR)/$@
  56. GOARCH=arm GOOS=linux GOARM=7 $(GOBUILD)/$@/$(NAME)
  57. linux-arm64:
  58. mkdir -p $(BUILD_DIR)/$@
  59. GOARCH=arm64 GOOS=linux $(GOBUILD)/$@/$(NAME)
  60. linux-mips-softfloat:
  61. mkdir -p $(BUILD_DIR)/$@
  62. GOARCH=mips GOMIPS=softfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  63. linux-mips-hardfloat:
  64. mkdir -p $(BUILD_DIR)/$@
  65. GOARCH=mips GOMIPS=hardfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  66. linux-mipsle-softfloat:
  67. mkdir -p $(BUILD_DIR)/$@
  68. GOARCH=mipsle GOMIPS=softfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  69. linux-mipsle-hardfloat:
  70. mkdir -p $(BUILD_DIR)/$@
  71. GOARCH=mipsle GOMIPS=hardfloat GOOS=linux $(GOBUILD)/$@/$(NAME)
  72. linux-mips64:
  73. mkdir -p $(BUILD_DIR)/$@
  74. GOARCH=mips64 GOOS=linux $(GOBUILD)/$@/$(NAME)
  75. linux-mips64le:
  76. mkdir -p $(BUILD_DIR)/$@
  77. GOARCH=mips64le GOOS=linux $(GOBUILD)/$@/$(NAME)
  78. freebsd-386:
  79. mkdir -p $(BUILD_DIR)/$@
  80. GOARCH=386 GOOS=freebsd $(GOBUILD)/$@/$(NAME)
  81. freebsd-amd64:
  82. mkdir -p $(BUILD_DIR)/$@
  83. GOARCH=amd64 GOOS=freebsd $(GOBUILD)/$@/$(NAME)
  84. freebsd-arm64:
  85. mkdir -p $(BUILD_DIR)/$@
  86. GOARCH=arm64 GOOS=freebsd $(GOBUILD)/$@/$(NAME)
  87. windows-386:
  88. mkdir -p $(BUILD_DIR)/$@
  89. GOARCH=386 GOOS=windows $(GOBUILD)/$@/$(NAME).exe
  90. windows-amd64:
  91. mkdir -p $(BUILD_DIR)/$@
  92. GOARCH=amd64 GOOS=windows $(GOBUILD)/$@/$(NAME).exe
  93. windows-arm:
  94. mkdir -p $(BUILD_DIR)/$@
  95. GOARCH=arm GOOS=windows $(GOBUILD)/$@/$(NAME).exe
  96. windows-armv6:
  97. mkdir -p $(BUILD_DIR)/$@
  98. GOARCH=arm GOOS=windows GOARM=6 $(GOBUILD)/$@/$(NAME).exe
  99. windows-armv7:
  100. mkdir -p $(BUILD_DIR)/$@
  101. GOARCH=arm GOOS=windows GOARM=7 $(GOBUILD)/$@/$(NAME).exe
  102. windows-arm64:
  103. mkdir -p $(BUILD_DIR)/$@
  104. GOARCH=arm64 GOOS=windows $(GOBUILD)/$@/$(NAME).exe