diff --git a/Makefile b/Makefile index f6b85213..44c1e400 100755 --- a/Makefile +++ b/Makefile @@ -4,38 +4,53 @@ export GOOS = linux LDFLAGS = -X github.com/yusing/go-proxy/pkg.version=${VERSION} + +ifeq ($(agent), 1) + NAME = godoxy-agent + CMD_PATH = ./agent/cmd +else + NAME = godoxy + CMD_PATH = ./cmd +endif + ifeq ($(trace), 1) debug = 1 GODOXY_TRACE ?= 1 + GODEBUG = gctrace=1 inittrace=1 schedtrace=3000 +endif + +ifeq ($(race), 1) + debug = 1 + BUILD_FLAGS += -race endif ifeq ($(debug), 1) CGO_ENABLED = 0 GODOXY_DEBUG = 1 - BUILD_FLAGS = -tags production -else ifeq ($(pprof), 1) + BUILD_FLAGS += -gcflags=all='-N -l' +endif + +ifeq ($(pprof), 1) CGO_ENABLED = 1 - GODEBUG = gctrace=1 inittrace=1 schedtrace=3000 - GORACE = log_path=logs/pprof strip_path_prefix=$(shell pwd)/ - BUILD_FLAGS = -race -gcflags=all='-N -l' -tags pprof - DOCKER_TAG = pprof - VERSION += -pprof + GORACE = log_path=logs/pprof strip_path_prefix=$(shell pwd)/ halt_on_error=1 + BUILD_FLAGS = -tags pprof + VERSION := ${VERSION}-pprof else CGO_ENABLED = 0 LDFLAGS += -s -w - BUILD_FLAGS = -pgo=auto -tags production - DOCKER_TAG = latest + BUILD_FLAGS = -pgo=auto -tags production endif BUILD_FLAGS += -ldflags='$(LDFLAGS)' +export NAME +export CMD_PATH export CGO_ENABLED export GODOXY_DEBUG export GODOXY_TRACE export GODEBUG export GORACE export BUILD_FLAGS -export DOCKER_TAG test: GODOXY_TEST=1 go test ./internal/... @@ -45,14 +60,14 @@ get: build: mkdir -p bin - go build ${BUILD_FLAGS} -o bin/godoxy ./cmd + go build ${BUILD_FLAGS} -o bin/${NAME} ${CMD_PATH} if [ $(shell id -u) -eq 0 ]; \ - then setcap CAP_NET_BIND_SERVICE=+eip bin/godoxy; \ - else sudo setcap CAP_NET_BIND_SERVICE=+eip bin/godoxy; \ + then setcap CAP_NET_BIND_SERVICE=+eip bin/${NAME}; \ + else sudo setcap CAP_NET_BIND_SERVICE=+eip bin/${NAME}; \ fi run: - [ -f .env ] && godotenv -f .env go run ${BUILD_FLAGS} ./cmd + [ -f .env ] && godotenv -f .env go run ${BUILD_FLAGS} ${CMD_PATH} mtrace: bin/godoxy debug-ls-mtrace > mtrace.json @@ -72,21 +87,8 @@ ci-test: cloc: cloc --not-match-f '_test.go$$' cmd internal pkg -push-docker-io: - BUILDER=build docker buildx build \ - --platform linux/arm64,linux/amd64 \ - -f Dockerfile \ - -t docker.io/yusing/godoxy-nightly:${DOCKER_TAG} \ - -t docker.io/yusing/godoxy-nightly:${VERSION}-${BUILD_DATE} \ - --build-arg VERSION="${VERSION}-nightly-${BUILD_DATE}" \ - --build-arg BUILD_FLAGS="${BUILD_FLAGS}" \ - --push . - -build-docker: - docker build -t godoxy-nightly \ - --build-arg VERSION="${VERSION}-nightly-${BUILD_DATE}" \ - --build-arg BUILD_FLAGS="${BUILD_FLAGS}" \ - . +link-binary: + ln -s /app/${NAME} bin/run # To generate schema # comment out this part from typescript-json-schema.js#L884