55 lines
1.1 KiB
Makefile
55 lines
1.1 KiB
Makefile
BINARY := bootstrap_environment
|
|
DIST := dist
|
|
PKG := .
|
|
|
|
# Statically-linked, stripped binaries for distribution.
|
|
GOFLAGS := -trimpath -ldflags="-s -w"
|
|
|
|
TARGETS := \
|
|
linux/amd64 \
|
|
linux/arm64 \
|
|
linux/arm/6 \
|
|
darwin/amd64 \
|
|
darwin/arm64
|
|
|
|
.PHONY: all build build-all test vet fmt clean
|
|
|
|
all: build
|
|
|
|
build:
|
|
go build $(GOFLAGS) -o $(BINARY) $(PKG)
|
|
|
|
# Cross-compile native binaries for each supported (OS, arch[, GOARM]) triple
|
|
# into dist/. Targets formatted as "os/arch" produce "$(BINARY)-os-arch";
|
|
# "os/arm/N" produces "$(BINARY)-os-armvN" with GOARM=N.
|
|
build-all: $(DIST)
|
|
@for t in $(TARGETS); do \
|
|
os=$$(echo $$t | cut -d/ -f1); \
|
|
arch=$$(echo $$t | cut -d/ -f2); \
|
|
goarm=$$(echo $$t | cut -s -d/ -f3); \
|
|
if [ -n "$$goarm" ]; then \
|
|
suffix=$$arch"v"$$goarm; \
|
|
else \
|
|
suffix=$$arch; \
|
|
fi; \
|
|
out=$(DIST)/$(BINARY)-$$os-$$suffix; \
|
|
echo "==> $$os/$$arch$${goarm:+ GOARM=$$goarm} -> $$out"; \
|
|
CGO_ENABLED=0 GOOS=$$os GOARCH=$$arch GOARM=$$goarm \
|
|
go build $(GOFLAGS) -o $$out $(PKG) || exit 1; \
|
|
done
|
|
|
|
$(DIST):
|
|
mkdir -p $(DIST)
|
|
|
|
test:
|
|
go test ./...
|
|
|
|
vet:
|
|
go vet ./...
|
|
|
|
fmt:
|
|
gofmt -w .
|
|
|
|
clean:
|
|
rm -rf $(DIST) $(BINARY)
|