|
1 | | -# Makefile (минимальный) |
2 | 1 | APP := tui |
3 | 2 | PKG := ./cmd/tui |
4 | 3 | DIST := dist |
5 | | -SERVER_PKG ?= ./cmd/server |
6 | | -GRPC_ADDR ?= 127.0.0.1:8080 |
7 | | -DB_DSN ?= mem:// |
| 4 | +LDFLAGS := -s -w |
| 5 | +CGO := 0 |
8 | 6 |
|
9 | | - |
10 | | - |
11 | | -.PHONY: build run clean linux mac windows |
| 7 | +.PHONY: build run clean linux-amd64 linux-arm64 windows-amd64 darwin-arm64 release tidy |
12 | 8 |
|
13 | 9 | build: |
14 | 10 | mkdir -p $(DIST) |
15 | 11 | go mod tidy |
16 | | - CGO_ENABLED=0 go build -o $(DIST)/$(APP) $(PKG) |
| 12 | + CGO_ENABLED=$(CGO) go build -ldflags '$(LDFLAGS)' -o $(DIST)/$(APP) $(PKG) |
17 | 13 |
|
18 | 14 | run: build |
19 | 15 | $(DIST)/$(APP) |
20 | 16 |
|
21 | 17 | clean: |
22 | 18 | rm -rf $(DIST) |
23 | 19 |
|
24 | | -# Кросс-сборки, если нужно |
25 | | -linux: |
26 | | - mkdir -p $(DIST) |
27 | | - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(DIST)/$(APP)_linux_amd64 $(PKG) |
28 | | - |
29 | | -mac: |
| 20 | +# Универсальный шаблон: build-<goos>_<goarch> |
| 21 | +build-%: |
30 | 22 | mkdir -p $(DIST) |
31 | | - CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o $(DIST)/$(APP)_darwin_arm64 $(PKG) |
32 | | - |
33 | | -windows: |
34 | | - mkdir -p $(DIST) |
35 | | - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $(DIST)/$(APP)_windows_amd64.exe $(PKG) |
36 | | - |
37 | | -help: |
38 | | - @echo "make run - run server via 'go run'" |
39 | | - @echo "make build -build server binary into ./bin/server" |
40 | | - @echo "env overrides: GRPC_ADDR (default: $(GRPC_ADDR)), DB_DSN (default: $(DB_DSN))" |
41 | | - @echo "example: make run GRPC_ADDR=:9090 DB_DSN='postgres://...@localhost:5432/vault?sslmode=disable" |
42 | | -buildServer: |
43 | | - @mkdir -p bin |
44 | | - @echo "===> go build ./cmd/server -> ./bin/server" |
45 | | - @go build -o bin/server $(SERVER_PKG) |
| 23 | + @GOOS=$(word 1,$(subst _, ,$*)) GOARCH=$(word 2,$(subst _, ,$*)) \ |
| 24 | + CGO_ENABLED=$(CGO) go build -ldflags '$(LDFLAGS)' \ |
| 25 | + -o $(DIST)/$(APP)_$*$(if $(findstring windows,$(word 1,$(subst _, ,$*))),.exe,) $(PKG) |
| 26 | + |
| 27 | +linux-amd64: build-linux_amd64 |
| 28 | +linux-arm64: build-linux_arm64 |
| 29 | +windows-amd64: build-windows_amd64 |
| 30 | +darwin-arm64: build-darwin_arm64 |
| 31 | + |
| 32 | +# Сборка всего и упаковка |
| 33 | +release: linux-amd64 linux-arm64 windows-amd64 darwin-arm64 |
| 34 | + cd $(DIST) && \ |
| 35 | + tar -czf $(APP)_linux_amd64.tgz $(APP)_linux_amd64 && \ |
| 36 | + tar -czf $(APP)_linux_arm64.tgz $(APP)_linux_arm64 && \ |
| 37 | + tar -czf $(APP)_darwin_arm64.tgz $(APP)_darwin_arm64 && \ |
| 38 | + zip -9 $(APP)_windows_amd64.zip $(APP)_windows_amd64.exe |
46 | 39 |
|
47 | 40 | tidy: |
48 | | - @go mod tidy |
| 41 | + go mod tidy |
| 42 | + |
0 commit comments