From c784c8f7c799cbf93f9474f9da569cacabb1ef20 Mon Sep 17 00:00:00 2001 From: Andre Kully Date: Thu, 23 Dec 2021 17:43:20 +0100 Subject: [PATCH] optimize build target --- Makefile | 44 +++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 3d3d494..daa18af 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ ## # .DEFAULT_GOAL := help -.PHONY: generate +.PHONY: generate go-tools version := $(shell git describe --tags --always) revision := $(shell git rev-parse HEAD) @@ -11,6 +11,9 @@ builddate := $(shell date '+%FT%T_%Z') versionPkgPrefix := mystrom-exporter/pkg/version +BINDIR := $(CURDIR)/output +GO ?= go +GOPATH ?= $(shell $(GO) env GOPATH) LDFLAGS := -w -s \ -X $(versionPkgPrefix).Version=${version} \ -X $(versionPkgPrefix).Revision=${revision} \ @@ -18,25 +21,36 @@ LDFLAGS := -w -s \ -X $(versionPkgPrefix).BuildUser=${builduser} \ -X $(versionPkgPrefix).BuildDate=${builddate} GOFLAGS := -v +GOX_FLAGS := -mod=vendor +GO_BUILD_FLAGS := -v +export GO111MODULE := on -linux: generate ## builds the linux version of the exporter - GOOS=linux GOARCH=amd64 go build $(GOFLAGS) -ldflags '$(LDFLAGS)' -mac: generate ## builds the macos version of the exporter - GOOS=darwin GOARCH=amd64 go build $(GOFLAGS) -ldflags '$(LDFLAGS)' -mac-arm: generate ## builds the macos (m1) version of the exporter - GOOS=darwin GOARCH=arm64 go build $(GOFLAGS) -ldflags '$(LDFLAGS)' -arm64: generate - GOOS=linux GOARCH=arm64 go build $(GOFLAGS) -ldflags '$(LDFLAGS)' -arm: generate - GOOS=linux GOARCH=arm go build $(GOFLAGS) -ldflags '$(LDFLAGS)' +build: go-tools generate ## builds the all platform binaries of the exporter + $(GOPATH)/bin/gox \ + -os="darwin linux" \ + -arch="amd64 arm arm64" \ + -osarch="!darwin/arm" \ + -output "${BINDIR}/{{.Dir}}-{{.OS}}-{{.Arch}}" \ + -gcflags "$(GO_BUILD_FLAGS)" \ + -ldflags '$(LDFLAGS)' \ + -tags '$(TAGS)' \ + ./... + +run: + ${BINDIR}/mystrom-exporter-$(shell $(GO) env GOOS)-$(shell $(GO) env GOARCH) + + +generate: go-tools + $(GO) generate ./... + +go-tools: $(GOPATH)/bin/stringer $(GOPATH)/bin/gox # -- see more info on https://pkg.go.dev/golang.org/x/tools/cmd/stringer -generate: $(GOPATH)/bin/stringer - go generate ./... - $(GOPATH)/bin/stringer: - go install golang.org/x/tools/cmd/stringer@latest + $(GO) install golang.org/x/tools/cmd/stringer@latest +$(GOPATH)/bin/gox: + $(GO) install github.com/mitchellh/gox@latest # -- help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'