forked from windtf/wireproxy
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
66 lines (54 loc) · 3.16 KB
/
Makefile
File metadata and controls
66 lines (54 loc) · 3.16 KB
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
# Название выходного файла и папка для сборок
APP_NAME = wireproxy
BUILD_DIR = build
MAIN_PKG = ./cmd/wireproxy
# Флаги линковщика: -s и -w вырезают отладочную информацию (debug symbols),
# что сильно уменьшает размер итоговых бинарников.
LDFLAGS = -ldflags="-s -w"
.PHONY: all clean build build-all linux windows darwin android-bin aar help
# Действие по умолчанию (просто make)
all: clean build
help:
@echo "Доступные команды:"
@echo " make - собрать под текущую ОС (по умолчанию)"
@echo " make build-all - собрать бинарники под все популярные ОС (Linux, Windows, macOS)"
@echo " make linux - собрать только для Linux (amd64, arm64)"
@echo " make windows - собрать только для Windows (amd64, arm64)"
@echo " make darwin - собрать только для macOS (amd64, arm64)"
@echo " make android-bin - собрать консольный бинарник для Android (arm64)"
@echo " make aar - собрать Android библиотеку (.aar) через gomobile"
@echo " make clean - удалить папку $(BUILD_DIR)"
build:
@echo "==> Сборка для текущей ОС..."
@mkdir -p $(BUILD_DIR)
CGO_ENABLED=0 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME) $(MAIN_PKG)
linux:
@echo "==> Сборка для Linux..."
@mkdir -p $(BUILD_DIR)
GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-linux-amd64 $(MAIN_PKG)
GOOS=linux GOARCH=arm64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-linux-arm64 $(MAIN_PKG)
windows:
@echo "==> Сборка для Windows..."
@mkdir -p $(BUILD_DIR)
GOOS=windows GOARCH=amd64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-windows-amd64.exe $(MAIN_PKG)
GOOS=windows GOARCH=arm64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-windows-arm64.exe $(MAIN_PKG)
darwin:
@echo "==> Сборка для macOS..."
@mkdir -p $(BUILD_DIR)
GOOS=darwin GOARCH=amd64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-darwin-amd64 $(MAIN_PKG)
GOOS=darwin GOARCH=arm64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-darwin-arm64 $(MAIN_PKG)
android-bin:
@echo "==> Сборка консольного бинарника для Android (Termux / Root)..."
@mkdir -p $(BUILD_DIR)
GOOS=android GOARCH=arm64 go build $(LDFLAGS) -o $(BUILD_DIR)/$(APP_NAME)-android-arm64 $(MAIN_PKG)
# ВАЖНО: Для выполнения 'make aar' у тебя должен быть установлен gomobile,
# Android SDK и NDK. Пакет ./mobile должен существовать (обсуждали ранее).
aar:
@echo "==> Сборка Android библиотеки (.aar)..."
@mkdir -p $(BUILD_DIR)
gomobile bind -target=android -o $(BUILD_DIR)/$(APP_NAME).aar -ldflags="-s -w" ./mobile
build-all: linux windows darwin android-bin
@echo "==> Успешно! Все бинарники собраны в папке $(BUILD_DIR)/"
clean:
@echo "==> Очистка папки сборки..."
rm -rf $(BUILD_DIR)