github.com/newrelic/newrelic-client-go@v1.1.0/build/compile.mk (about) 1 # 2 # Makefile Fragment for Compiling 3 # 4 5 GO ?= go 6 BUILD_DIR ?= ./bin/ 7 PROJECT_MODULE ?= $(shell $(GO) list -m) 8 # $b replaced by the binary name in the compile loop, -s/w remove debug symbols 9 LDFLAGS ?= "-s -w -X main.version=$(PROJECT_VER) -X main.appName=$$b -X $(PROJECT_MODULE)/internal/client.version=$(PROJECT_VER)" 10 SRCDIR ?= . 11 COMPILE_OS ?= darwin linux windows 12 13 # Determine commands by looking into cmd/* 14 COMMANDS ?= $(wildcard ${SRCDIR}/cmd/*) 15 16 # Determine binary names by stripping out the dir names 17 BINS := $(foreach cmd,${COMMANDS},$(notdir ${cmd})) 18 19 20 compile-clean: 21 @echo "=== $(PROJECT_NAME) === [ compile-clean ]: removing binaries..." 22 @rm -rfv $(BUILD_DIR)/* 23 24 compile: deps compile-only 25 26 compile-all: deps-only 27 @echo "=== $(PROJECT_NAME) === [ compile ]: building commands:" 28 @mkdir -p $(BUILD_DIR)/$(GOOS) 29 @for b in $(BINS); do \ 30 for os in $(COMPILE_OS); do \ 31 echo "=== $(PROJECT_NAME) === [ compile ]: $(BUILD_DIR)$$os/$$b"; \ 32 BUILD_FILES=`find $(SRCDIR)/cmd/$$b -type f -name "*.go"` ; \ 33 GOOS=$$os $(GO) build -ldflags=$(LDFLAGS) -o $(BUILD_DIR)/$$os/$$b $$BUILD_FILES ; \ 34 done \ 35 done 36 37 compile-only: deps-only 38 @echo "=== $(PROJECT_NAME) === [ compile ]: building commands:" 39 @mkdir -p $(BUILD_DIR)/$(GOOS) 40 @for b in $(BINS); do \ 41 echo "=== $(PROJECT_NAME) === [ compile ]: $(BUILD_DIR)$(GOOS)/$$b"; \ 42 BUILD_FILES=`find $(SRCDIR)/cmd/$$b -type f -name "*.go"` ; \ 43 GOOS=$(GOOS) $(GO) build -ldflags=$(LDFLAGS) -o $(BUILD_DIR)/$(GOOS)/$$b $$BUILD_FILES ; \ 44 done 45 46 # Override GOOS for these specific targets 47 compile-darwin: GOOS=darwin 48 compile-darwin: deps-only compile-only 49 50 compile-linux: GOOS=linux 51 compile-linux: deps-only compile-only 52 53 compile-windows: GOOS=windows 54 compile-windows: deps-only compile-only 55 56 57 .PHONY: clean-compile compile compile-darwin compile-linux compile-only compile-windows