|
2 | 2 | # |
3 | 3 | # devctl |
4 | 4 | # |
5 | | -# https://github.com/giantswarm/devctl/blob/bf7f386ac6a4e807dde959892df1369fee6d789f/pkg/gen/input/makefile/internal/file/Makefile.gen.go.mk.template |
| 5 | +# https://github.com/giantswarm/devctl/blob/986ad874b35005734d73e070a8e8bf6b3dc83f7f/pkg/gen/input/makefile/internal/file/Makefile.gen.go.mk.template |
6 | 6 | # |
7 | 7 |
|
8 | 8 | APPLICATION := $(shell go list -m | cut -d '/' -f 3) |
9 | 9 | BUILDTIMESTAMP := $(shell date -u '+%FT%TZ') |
10 | 10 | GITSHA1 := $(shell git rev-parse --verify HEAD) |
11 | 11 | MODULE := $(shell go list -m) |
| 12 | +# main() is usually in `main.go`, but sometimes in `cmd/main.go` (for example in newer kubebuilder projects) |
| 13 | +MAIN_SOURCE := $(shell if test -e cmd/main.go; then echo cmd/main.go; else echo main.go; fi) |
12 | 14 | OS := $(shell go env GOOS) |
13 | 15 | SOURCES := $(shell find . -name '*.go') |
14 | | -VERSION := $(shell architect project version) |
| 16 | +VERSION := $(shell gitsemver get) |
15 | 17 | ifeq ($(OS), linux) |
16 | 18 | EXTLDFLAGS := -static |
17 | 19 | endif |
18 | 20 | LDFLAGS ?= -w -linkmode 'auto' -extldflags '$(EXTLDFLAGS)' \ |
19 | | - -X '$(shell go list -m)/pkg/project.buildTimestamp=${BUILDTIMESTAMP}' \ |
20 | | - -X '$(shell go list -m)/pkg/project.gitSHA=${GITSHA1}' |
| 21 | + -X '$(MODULE)/pkg/project.version=$(VERSION)' \ |
| 22 | + -X '$(MODULE)/pkg/project.buildTimestamp=$(BUILDTIMESTAMP)' \ |
| 23 | + -X '$(MODULE)/pkg/project.gitSHA=$(GITSHA1)' |
21 | 24 |
|
22 | 25 | .DEFAULT_GOAL := build |
23 | 26 |
|
@@ -63,25 +66,25 @@ $(APPLICATION)-windows-amd64.exe: $(APPLICATION)-v$(VERSION)-windows-amd64.exe |
63 | 66 |
|
64 | 67 | $(APPLICATION)-v$(VERSION)-%-amd64: $(SOURCES) |
65 | 68 | @echo "====> $@" |
66 | | - CGO_ENABLED=0 GOOS=$* GOARCH=amd64 go build -trimpath -ldflags "$(LDFLAGS)" -o $@ . |
| 69 | + CGO_ENABLED=0 GOOS=$* GOARCH=amd64 go build -trimpath -ldflags "$(LDFLAGS)" -o $@ "$(MAIN_SOURCE)" |
67 | 70 |
|
68 | 71 | $(APPLICATION)-v$(VERSION)-%-arm64: $(SOURCES) |
69 | 72 | @echo "====> $@" |
70 | | - CGO_ENABLED=0 GOOS=$* GOARCH=arm64 go build -trimpath -ldflags "$(LDFLAGS)" -o $@ . |
| 73 | + CGO_ENABLED=0 GOOS=$* GOARCH=arm64 go build -trimpath -ldflags "$(LDFLAGS)" -o $@ "$(MAIN_SOURCE)" |
71 | 74 |
|
72 | 75 | $(APPLICATION)-v$(VERSION)-windows-amd64.exe: $(SOURCES) |
73 | 76 | @echo "====> $@" |
74 | | - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags "$(LDFLAGS)" -o $@ . |
| 77 | + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -ldflags "$(LDFLAGS)" -o $@ "$(MAIN_SOURCE)" |
75 | 78 |
|
76 | 79 | .PHONY: install |
77 | 80 | install: ## Install the application. |
78 | 81 | @echo "====> $@" |
79 | | - go install -ldflags "$(LDFLAGS)" . |
| 82 | + go build -ldflags "$(LDFLAGS)" -o "$(shell go env GOPATH)/bin/$(APPLICATION)" "$(MAIN_SOURCE)" |
80 | 83 |
|
81 | 84 | .PHONY: run |
82 | 85 | run: ## Runs go run main.go. |
83 | 86 | @echo "====> $@" |
84 | | - go run -ldflags "$(LDFLAGS)" -race . |
| 87 | + go run -ldflags "$(LDFLAGS)" -race "$(MAIN_SOURCE)" |
85 | 88 |
|
86 | 89 | .PHONY: clean |
87 | 90 | clean: ## Cleans the binary. |
@@ -110,7 +113,7 @@ vet: ## Run go vet against code. |
110 | 113 | .PHONY: nancy |
111 | 114 | nancy: ## Runs nancy (requires v1.0.37 or newer). |
112 | 115 | @echo "====> $@" |
113 | | - CGO_ENABLED=0 go list -json -deps ./... | nancy sleuth --skip-update-check --quiet --exclude-vulnerability-file ./.nancy-ignore --additional-exclude-vulnerability-files ./.nancy-ignore.generated |
| 116 | + CGO_ENABLED=0 go list -json -m all | nancy sleuth --skip-update-check --quiet --exclude-vulnerability-file ./.nancy-ignore --additional-exclude-vulnerability-files ./.nancy-ignore.generated |
114 | 117 |
|
115 | 118 | .PHONY: test |
116 | 119 | test: ## Runs go test with default values. |
|
0 commit comments