-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
56 lines (46 loc) · 1.59 KB
/
Makefile
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
##
#
.DEFAULT_GOAL := help
.PHONY: generate go-tools
version := $(shell git describe --tags --always)
revision := $(shell git rev-parse HEAD)
branch := $(shell git rev-parse --abbrev-ref HEAD)
builduser := $(shell whoami)
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} \
-X $(versionPkgPrefix).Branch=${branch} \
-X $(versionPkgPrefix).BuildUser=${builduser} \
-X $(versionPkgPrefix).BuildDate=${builddate}
GOFLAGS := -v
GOX_FLAGS := -mod=vendor
GO_BUILD_FLAGS := -v
export GO111MODULE := on
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
$(GOPATH)/bin/stringer:
$(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}'