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