chatai/Makefile
2024-12-25 17:18:23 +00:00

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";