66 lines
2.2 KiB
Makefile
66 lines
2.2 KiB
Makefile
#!/usr/bin/env make -f
|
|
DIST_DIRECTORY = ./dist
|
|
DIST_EXENAME = ai-agent-web
|
|
BUILDINFO_CLASS = codelab/ai-agent/internal/conf
|
|
BUILDINFO_VERSION := $(shell git describe --tags 2>/dev/null || echo "git/$(shell git rev-parse --short HEAD 2>/dev/null || echo 'none')")
|
|
CROSS_BUILD_TRIPLES = darwin/amd64 \
|
|
darwin/arm64 \
|
|
windows/386 \
|
|
windows/amd64 \
|
|
windows/arm64 \
|
|
linux/386 \
|
|
linux/amd64 \
|
|
linux/arm64 \
|
|
linux/loong64 \
|
|
linux/mips \
|
|
linux/mips64 \
|
|
linux/mips64le \
|
|
linux/mipsle \
|
|
linux/riscv64 \
|
|
freebsd/386 \
|
|
freebsd/amd64 \
|
|
freebsd/arm64 \
|
|
freebsd/riscv64
|
|
LDFLAGS = -s -w
|
|
LDFLAGS += -X "$(BUILDINFO_CLASS).BuildVersion=$(BUILDINFO_VERSION)"
|
|
LDFLAGS += -X "$(BUILDINFO_CLASS).BuildTime=$(shell date '+%Y-%m-%d %H:%M:%S %Z')"
|
|
LDFLAGS += -X "$(BUILDINFO_CLASS).BuildMode=release"
|
|
|
|
|
|
.PHONY: build_debug
|
|
build_debug: LDFLAGS =
|
|
build_debug: build
|
|
|
|
|
|
.PHONY: build
|
|
build: clean install
|
|
CGO_ENABLED=0 go build -ldflags '$(LDFLAGS)' -o $(DIST_DIRECTORY)/$(DIST_EXENAME)
|
|
|
|
|
|
.PHONY: install
|
|
install:
|
|
go get
|
|
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rvf $(DIST_DIRECTORY)
|
|
|
|
|
|
.PHONY: all $(CROSS_BUILD_TRIPLES)
|
|
all: clean install $(CROSS_BUILD_TRIPLES)
|
|
$(CROSS_BUILD_TRIPLES): GOOS = $(word 1,$(subst /, ,$@))
|
|
$(CROSS_BUILD_TRIPLES): GOARCH = $(word 2,$(subst /, ,$@))
|
|
$(CROSS_BUILD_TRIPLES): CROSS_DIST_DIRECTORY = $(DIST_DIRECTORY)/release/$@
|
|
$(CROSS_BUILD_TRIPLES): CROSS_DIST_EXENAME = $(DIST_EXENAME)$(if $(filter $(GOOS),windows),.exe,)
|
|
$(CROSS_BUILD_TRIPLES): CROSS_DIST_ARCNAME = $(DIST_EXENAME)-$(subst /,.,$(BUILDINFO_VERSION)-$(GOOS)-$(GOARCH)).$(if $(filter $(GOOS),windows),zip,tar.gz)
|
|
$(CROSS_BUILD_TRIPLES):
|
|
$(MAKE) build GOOS=$(GOOS) GOARCH=$(GOARCH) \
|
|
DIST_DIRECTORY=$(CROSS_DIST_DIRECTORY)/bin \
|
|
DIST_EXENAME=$(CROSS_DIST_EXENAME) && \
|
|
if [ "$(GOOS)" = "windows" ]; then \
|
|
zip -j $(CROSS_DIST_DIRECTORY)/$(CROSS_DIST_ARCNAME) $(CROSS_DIST_DIRECTORY)/bin/$(CROSS_DIST_EXENAME); \
|
|
else \
|
|
tar -cvzf $(CROSS_DIST_DIRECTORY)/$(CROSS_DIST_ARCNAME) -C $(CROSS_DIST_DIRECTORY)/bin $(CROSS_DIST_EXENAME); \
|
|
fi && \
|
|
sh -c "cd $(CROSS_DIST_DIRECTORY) && sha256sum $(CROSS_DIST_ARCNAME) > $(CROSS_DIST_ARCNAME).sha256sum";
|