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