-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
61 lines (48 loc) · 1.2 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
57
58
59
60
61
app := nvclient
build_dir := build
dist_dir := dist
windows = $(app).exe
linux = $(app)
darwin = $(app)
temp = $(subst /, ,$@)
os = $(word 1, $(temp))
arch = $(word 2, $(temp))
target_dir = '$(build_dir)/$(os)-$(arch)'
executable = $($(os))
archive = $(dist_dir)/$(app)-$(os)-$(arch).tar.gz
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
md5 := md5
else
md5 := md5sum
endif
PLATFORMS := linux/amd64 linux/arm64 darwin/amd64 darwin/arm64
build: generate $(PLATFORMS)
generate:
@echo 'generate mock codes'
@go generate ./...
$(PLATFORMS):
@echo building $(os)/$(arch)...
@mkdir -p $(target_dir)
@mkdir -p $(dist_dir)
@GOOS=$(os) GOARCH=$(arch) go build -ldflags "-X main.version=`cat version`" -o $(target_dir)/$(executable)
@tar zcf $(dist_dir)/$(app)-$(os)-$(arch).tar.gz -C $(target_dir) $(executable)
@cd $(dist_dir); $(md5) $(app)-$(os)-$(arch).tar.gz >> checksums.txt
vet: generate
@echo running go vet...
@go vet ./...
@echo
test: generate
@echo testing...
@go test -timeout 10s ./...
@echo
clean:
@go clean
@go clean -testcache
@rm -rf build
@rm -rf dist
release:
git tag `cat version`
git push origin `cat version`
all: build
.PHONY: build clean test vet generate $(PLATFORMS)