22OS ?= $(shell uname)
33
44# Having this will allow CI scripts to build for many OS's and ARCH's
5- ARCH := $(or $(ARCH ) ,amd64)
5+ ARCH ?= $(shell uname -m)
6+
7+ # Retrieve version from git history
8+ VERSION ?= $(shell git describe --tags 2>/dev/null || echo unknown)
69
710# Path to lint tool
811GOLINTER ?= golangci-lint
2023 # Default to Linux
2124 OS =linux
2225endif
26+ ifneq (,$(findstring x86_64,$(ARCH ) ) )
27+ ARCH=amd64
28+ else ifneq (,$(findstring aarch64,$(ARCH)))
29+ ARCH =arm64
30+ else ifneq (,$(findstring unknown,$(ARCH)))
31+ # fallback
32+ ARCH=amd64
33+ endif
2334
2435SOURCES := $(wildcard cmd/cbuild2cmake/* .go) $(wildcard pkg/* /* .go)
2536
5364
5465$(PROG ) : $(SOURCES )
5566 @echo Building project
56- GOOS=$(OS ) GOARCH=$(ARCH ) go build -ldflags " -X main.version=` git describe 2> /dev/null || echo unknown` " -o $(PROG ) ./cmd/cbuild2cmake
67+ GOOS=$(OS ) GOARCH=$(ARCH ) go build -ldflags " -X main.version=$( VERSION) " -o $(PROG ) ./cmd/cbuild2cmake
68+
5769
5870build : $(PROG )
5971
@@ -67,21 +79,22 @@ format:
6779 $(GOFORMATTER ) -s -w .
6880
6981format-check :
70- mkdir -p build && $(GOFORMATTER ) -d . | tee build/ format-check.out
71- test ! -s build/ format-check.out
82+ $(GOFORMATTER ) -d . | tee format-check.out
83+ test ! -s format-check.out
7284
7385.PHONY : test release config
7486test : $(SOURCES )
75- mkdir -p build && GOOS=$(OS ) GOARCH=$(ARCH ) go test $(ARGS ) -v ./... -coverprofile build /cover.out
87+ GOOS=$(OS ) GOARCH=$(ARCH ) go test $(ARGS ) -v ./... -coverprofile . /cover.out
7688
7789test-all : format-check coverage-check lint
7890
7991coverage-report : test
80- go tool cover -html=build /cover.out
92+ go tool cover -html=. /cover.out
8193
8294coverage-check : test
95+ @echo " Current coverage is: $( shell go tool cover -func ./cover.out | tail -1 | awk ' {print ($$3 + 0)}' ) " %
8396 @echo Checking if test coverage is above 80%
84- test ` go tool cover -func build /cover.out | tail -1 | awk ' {print ($$3 + 0)*10}' ` -ge 800
97+ test ` go tool cover -func . /cover.out | tail -1 | awk ' {print ($$3 + 0)*10}' ` -ge 800
8598
8699release : test-all $(PROG )
87100 @./scripts/release
@@ -93,5 +106,6 @@ config:
93106
94107 # Install pre-commit hooks
95108 cp scripts/pre-commit .git/hooks/pre-commit
109+
96110clean :
97- rm -rf build
111+ rm -rf build/ *
0 commit comments