-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathMakefile
More file actions
62 lines (50 loc) · 1.66 KB
/
Copy pathMakefile
File metadata and controls
62 lines (50 loc) · 1.66 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
GO ?= go
PYTHON ?= python
CMD_PACKAGE ?= ./cmd/agentbox
DIST_DIR ?= ./dist
BIN_DIR ?= ./bin
BINARY ?= $(BIN_DIR)/agentbox
ARGS ?=
SETUP_ARGS ?=
CGO_ENABLED ?= 0
TARGETS ?= darwin/amd64 darwin/arm64 linux/amd64 linux/arm64
PROXY_TEST_DIR ?= ./images/proxy/tests
HOST_UNAME_S := $(shell uname -s)
HOST_UNAME_M := $(shell uname -m)
HOST_GOOS := $(if $(filter Darwin,$(HOST_UNAME_S)),darwin,$(if $(filter Linux,$(HOST_UNAME_S)),linux,unknown))
HOST_GOARCH := $(if $(filter arm64 aarch64,$(HOST_UNAME_M)),arm64,$(if $(filter x86_64 amd64,$(HOST_UNAME_M)),amd64,unknown))
HOST_BINARY := $(DIST_DIR)/agentbox-$(HOST_GOOS)-$(HOST_GOARCH)
HOST_BINARY_LINK := ../$(patsubst ./%,%,$(HOST_BINARY))
.DEFAULT_GOAL := build
.PHONY: setup build test test-go test-proxy run fmt tidy clean install
setup:
./scripts/build-dev-image.bash $(SETUP_ARGS)
build:
mkdir -p "$(DIST_DIR)" "$(BIN_DIR)"
set -eu; \
for target in $(TARGETS); do \
goos=$${target%/*}; \
goarch=$${target#*/}; \
output="$(DIST_DIR)/agentbox-$${goos}-$${goarch}"; \
CGO_ENABLED=$(CGO_ENABLED) GOOS=$$goos GOARCH=$$goarch $(GO) build -o "$$output" $(CMD_PACKAGE); \
done
if [ "$(HOST_GOOS)" = "unknown" ] || [ "$(HOST_GOARCH)" = "unknown" ]; then \
printf 'Unsupported host platform for bin symlink: %s/%s\n' "$(HOST_UNAME_S)" "$(HOST_UNAME_M)" >&2; \
exit 1; \
fi
ln -sfn "$(HOST_BINARY_LINK)" "$(BINARY)"
test: test-go test-proxy
test-go:
$(GO) test ./...
test-proxy:
$(PYTHON) -m unittest discover -s $(PROXY_TEST_DIR) -p 'test_*.py'
run:
$(GO) run $(CMD_PACKAGE) $(ARGS)
fmt:
$(GO) fmt ./...
tidy:
$(GO) mod tidy
clean:
rm -rf "$(BIN_DIR)" "$(DIST_DIR)"
install: build
cp $(HOST_BINARY) ~/.local/bin/agentbox