1+ BINARY_NAME =ip-location-api
2+
3+ ifeq ($(OS ) , Windows_NT)
4+ DETECTED_OS := Windows
5+ BUILD_COMMAND := build_windows
6+ CLEAN_COMMAND := clean_windows
7+ else
8+ DETECTED_OS := $(shell sh -c 'uname 2>/dev/null || echo Unknown')
9+ BUILD_COMMAND := build_other
10+ CLEAN_COMMAND := clean_other
11+ endif
12+
13+ all : test build
14+
15+ # Build commands
16+ build : update $(BUILD_COMMAND )
17+
18+ build_other :
19+ GOARCH=amd64 GOOS=linux go build -o builds/$(BINARY_NAME ) -linux-x64.bin .
20+ GOARCH=amd64 GOOS=windows go build -o builds/$(BINARY_NAME ) -windows-x64.exe .
21+ GOARCH=amd64 GOOS=darwin go build -o builds/$(BINARY_NAME ) -darwin-x64.dmg .
22+ GOARCH=arm64 GOOS=linux go build -o builds/$(BINARY_NAME ) -linux-arm64.bin .
23+ GOARCH=arm64 GOOS=windows go build -o builds/$(BINARY_NAME ) -windows-arm64.exe .
24+ GOARCH=arm64 GOOS=darwin go build -o builds/$(BINARY_NAME ) -darwin-arm64.dmg .
25+
26+ build_windows :
27+ set " GOARCH=amd64" && set " GOOS=linux" && go build -o builds\$ (BINARY_NAME)-linux-x64.bin .
28+ set " GOARCH=amd64" && set " GOOS=windows" && go build -o builds\$ (BINARY_NAME)-windows-x64.exe .
29+ set " GOARCH=amd64" && set " GOOS=darwin" && go build -o builds\$ (BINARY_NAME)-darwin-x64.dmg .
30+ set " GOARCH=arm64" && set " GOOS=linux" && go build -o builds\$ (BINARY_NAME)-linux-arm64.bin .
31+ set " GOARCH=arm64" && set " GOOS=windows" && go build -o builds\$ (BINARY_NAME)-windows-arm64.exe .
32+ set " GOARCH=arm64" && set " GOOS=darwin" && go build -o builds\$ (BINARY_NAME)-darwin-arm64.dmg .
33+
34+ # Clean commands
35+ clean : $(CLEAN_COMMAND )
36+
37+ clean_go :
38+ go clean
39+
40+ clean_other : clean_go
41+ rm builds/$(BINARY_NAME ) -linux-x64.bin
42+ rm builds/$(BINARY_NAME ) -windows-x64.exe
43+ rm builds/$(BINARY_NAME ) -darwin-x64.dmg
44+ rm builds/$(BINARY_NAME ) -linux-arm64.bin
45+ rm builds/$(BINARY_NAME ) -windows-arm64.exe
46+ rm builds/$(BINARY_NAME ) -darwin-arm64.dmg
47+
48+ clean_windows : clean_go
49+ del " builds\$ (BINARY_NAME)-linux-x64.bin"
50+ del " builds\$ (BINARY_NAME)-windows-x64.exe"
51+ del " builds\$ (BINARY_NAME)-darwin-x64.dmg"
52+ del " builds\$ (BINARY_NAME)-linux-arm64.bin"
53+ del " builds\$ (BINARY_NAME)-windows-arm64.exe"
54+ del " builds\$ (BINARY_NAME)-darwin-arm64.dmg"
55+
56+ # Dev commands
57+ dev : update
58+ go run .
59+
60+ # Run commands
61+ run : clean build
62+ ./builds/$(BINARY_NAME )
63+
64+ # Test commands
65+ test : update
66+ go test .
67+
68+ # Update commands
69+ update :
70+ go get -u
71+ go mod tidy
0 commit comments