36 lines
836 B
Makefile
36 lines
836 B
Makefile
VERSION ?= dev
|
|
BINARY := hf
|
|
MAIN_PKG := ./cmd/hf
|
|
LDFLAGS := -X git.hangman-lab.top/zhi/HarborForge.Cli/internal/commands.Version=$(VERSION)
|
|
DIST_DIR := dist
|
|
RELEASE_TARGETS := \
|
|
linux/amd64 \
|
|
linux/arm64 \
|
|
darwin/amd64 \
|
|
darwin/arm64 \
|
|
windows/amd64
|
|
|
|
.PHONY: build clean release release-all
|
|
|
|
build:
|
|
mkdir -p bin
|
|
go build -ldflags "$(LDFLAGS)" -o ./bin/$(BINARY) $(MAIN_PKG)
|
|
|
|
clean:
|
|
rm -rf ./bin/$(BINARY) ./$(DIST_DIR)
|
|
|
|
release: clean
|
|
mkdir -p $(DIST_DIR)
|
|
@set -e; \
|
|
for target in $(RELEASE_TARGETS); do \
|
|
os=$${target%/*}; \
|
|
arch=$${target#*/}; \
|
|
ext=""; \
|
|
if [ "$$os" = "windows" ]; then ext=".exe"; fi; \
|
|
out="$(DIST_DIR)/$(BINARY)_$(VERSION)_$${os}_$${arch}$${ext}"; \
|
|
echo "==> Building $$out"; \
|
|
GOOS=$$os GOARCH=$$arch go build -ldflags "$(LDFLAGS)" -o "$$out" $(MAIN_PKG); \
|
|
done
|
|
|
|
release-all: release
|