-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
129 lines (95 loc) · 3.83 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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
PROJECT_NAME=tosa
INTERNAL_BIN_DIR=_internal_bin
GOVERSION=$(shell go version)
GOOS=$(word 1,$(subst /, ,$(lastword $(GOVERSION))))
GOARCH=$(word 2,$(subst /, ,$(lastword $(GOVERSION))))
VERSION=$(patsubst "%",%,$(lastword $(shell grep 'const Version' main.go)))
RELEASE_DIR=releases
ARTIFACTS_DIR=$(RELEASE_DIR)/artifacts/$(VERSION)
PACKAGES = $(shell go list ./... | grep -v '/vendor/')
SRC_FILES = $(wildcard *.go)
GITHUB_USERNAME=kyoshidajp
BUILD_TARGETS= \
build-linux-arm64 \
build-linux-arm \
build-linux-amd64 \
build-linux-386 \
build-darwin-amd64 \
build-darwin-386 \
build-windows-amd64 \
build-windows-386
RELEASE_TARGETS=\
release-linux-arm64 \
release-linux-arm \
release-linux-amd64 \
release-linux-386 \
release-darwin-amd64 \
release-darwin-386 \
release-windows-amd64 \
release-windows-386
build: $(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/$(PROJECT_NAME)$(SUFFIX)
$(INTERNAL_BIN_DIR):
@echo "Creating $(INTERNAL_BIN_DIR)"
@mkdir -p $(INTERNAL_BIN_DIR)
build-windows-amd64:
@$(MAKE) build GOOS=windows GOARCH=amd64 SUFFIX=.exe
build-windows-386:
@$(MAKE) build GOOS=windows GOARCH=386 SUFFIX=.exe
build-linux-amd64:
@$(MAKE) build GOOS=linux GOARCH=amd64
build-linux-arm:
@$(MAKE) build GOOS=linux GOARCH=arm
build-linux-arm64:
@$(MAKE) build GOOS=linux GOARCH=arm64
build-linux-386:
@$(MAKE) build GOOS=linux GOARCH=386
build-darwin-amd64:
@$(MAKE) build GOOS=darwin GOARCH=amd64
build-darwin-386:
@$(MAKE) build GOOS=darwin GOARCH=386
$(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/$(PROJECT_NAME)$(SUFFIX):
go build -o $(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/$(PROJECT_NAME)$(SUFFIX)
all: $(BUILD_TARGETS)
release: $(RELEASE_TARGETS)
$(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/Changes:
@cp Changes $(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)
$(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/README.md:
@cp README.md $(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)
release-changes: $(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/Changes
release-readme: $(RELEASE_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH)/README.md
release-windows-amd64: build-windows-amd64
@$(MAKE) release-changes release-readme release-zip GOOS=windows GOARCH=amd64
release-windows-386: build-windows-386
@$(MAKE) release-changes release-readme release-zip GOOS=windows GOARCH=386
release-linux-amd64: build-linux-amd64
@$(MAKE) release-changes release-readme release-targz GOOS=linux GOARCH=amd64
release-linux-arm: build-linux-arm
@$(MAKE) release-changes release-readme release-targz GOOS=linux GOARCH=arm
release-linux-arm64: build-linux-arm64
@$(MAKE) release-changes release-readme release-targz GOOS=linux GOARCH=arm64
release-linux-386: build-linux-386
@$(MAKE) release-changes release-readme release-targz GOOS=linux GOARCH=386
release-darwin-amd64: build-darwin-amd64
@$(MAKE) release-changes release-readme release-zip GOOS=darwin GOARCH=amd64
release-darwin-386: build-darwin-386
@$(MAKE) release-changes release-readme release-zip GOOS=darwin GOARCH=386
$(ARTIFACTS_DIR):
@mkdir -p $(ARTIFACTS_DIR)
release-tarbz: $(ARTIFACTS_DIR)
tar -cjf $(ARTIFACTS_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH).tar.bz2 -C $(RELEASE_DIR) $(PROJECT_NAME)_$(GOOS)_$(GOARCH)
release-targz: $(ARTIFACTS_DIR)
tar -czf $(ARTIFACTS_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH).tar.gz -C $(RELEASE_DIR) $(PROJECT_NAME)_$(GOOS)_$(GOARCH)
release-zip: $(ARTIFACTS_DIR)
cd $(RELEASE_DIR) && zip -9 $(CURDIR)/$(ARTIFACTS_DIR)/$(PROJECT_NAME)_$(GOOS)_$(GOARCH).zip $(PROJECT_NAME)_$(GOOS)_$(GOARCH)/*
release-github-token: github_token
@echo "file `github_token` is required"
release-upload: release release-github-token
ghr -u $(GITHUB_USERNAME) -t $(shell cat github_token) --draft --replace $(VERSION) $(ARTIFACTS_DIR)
test-all: vet test
test:
go test -v ${PACKAGES}
vet:
go vet ${PACKAGES}
clean:
-rm -rf $(RELEASE_DIR)/*/*
-rm -rf $(ARTIFACTS_DIR)/*