-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
63 lines (53 loc) · 1.68 KB
/
Copy pathMakefile
File metadata and controls
63 lines (53 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
BINARY=zen-proxy
CMD=./cmd/zen-proxy
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
VERSION ?= dev
LDFLAGS ?= -s -w -X main.version=$(VERSION)
DIST_DIR ?= dist
PLATFORMS ?= darwin/amd64 darwin/arm64 linux/amd64 linux/arm64 windows/amd64 windows/arm64
build:
go build -ldflags "$(LDFLAGS)" -o $(BINARY) $(CMD)
run: build
./$(BINARY)
test:
go test ./...
vet:
go vet ./...
clean:
rm -f $(BINARY)
rm -rf $(DIST_DIR)
dist: clean
mkdir -p "$(DIST_DIR)"
@set -eu; \
for platform in $(PLATFORMS); do \
os="$${platform%/*}"; \
arch="$${platform#*/}"; \
name="$(BINARY)_$${os}_$${arch}"; \
out="$(DIST_DIR)/$${name}/$(BINARY)"; \
if [ "$$os" = "windows" ]; then out="$${out}.exe"; fi; \
printf 'Building %s/%s\n' "$$os" "$$arch"; \
mkdir -p "$(DIST_DIR)/$${name}"; \
GOOS="$$os" GOARCH="$$arch" CGO_ENABLED=0 go build -trimpath -ldflags "$(LDFLAGS)" -o "$$out" $(CMD); \
cp LICENSE THIRD_PARTY_NOTICES.md "$(DIST_DIR)/$${name}/"; \
mkdir -p "$(DIST_DIR)/$${name}/LICENSES"; \
cp LICENSES/Apache-2.0.txt "$(DIST_DIR)/$${name}/LICENSES/"; \
if [ "$$os" = "windows" ]; then \
(cd "$(DIST_DIR)/$${name}" && zip -qr "../$${name}.zip" .); \
else \
tar -C "$(DIST_DIR)/$${name}" -czf "$(DIST_DIR)/$${name}.tar.gz" .; \
fi; \
rm -rf "$(DIST_DIR)/$${name}"; \
done
@if command -v sha256sum >/dev/null 2>&1; then \
(cd "$(DIST_DIR)" && sha256sum * > checksums.txt); \
else \
(cd "$(DIST_DIR)" && shasum -a 256 * > checksums.txt); \
fi
release: test vet dist
install: build
install -d "$(DESTDIR)$(BINDIR)"
install -m 0755 "$(BINARY)" "$(DESTDIR)$(BINDIR)/$(BINARY)"
uninstall:
rm -f "$(DESTDIR)$(BINDIR)/$(BINARY)"
.PHONY: build run test vet clean dist release install uninstall