121 lines
4.7 KiB
Makefile
121 lines
4.7 KiB
Makefile
# Makefile
|
|
.PHONY: build-all build-amd64 build-arm64 build-armhf build-386 clean help
|
|
|
|
APP_NAME = audio-recorder
|
|
VERSION = $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
|
|
BUILD_TIME = $(shell date -u '+%Y-%m-%d_%H:%M:%S')
|
|
LDFLAGS = -ldflags="-s -w -X main.Version=$(VERSION) -X main.BuildTime=$(BUILD_TIME)"
|
|
|
|
# Цвета для вывода
|
|
GREEN = \033[0;32m
|
|
RED = \033[0;31m
|
|
NC = \033[0m
|
|
|
|
all: build-all
|
|
|
|
# AMD64 (x86_64) - для обычных ПК и серверов
|
|
build-amd64:
|
|
@echo "$(GREEN)Building for AMD64 (x86_64)...$(NC)"
|
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-amd64
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-amd64$(NC)"
|
|
@ls -lh $(APP_NAME)-amd64
|
|
@file $(APP_NAME)-amd64
|
|
|
|
# ARM64 (aarch64) - для Raspberry Pi 4/5, Orange Pi Zero 2W, Apple Silicon
|
|
build-arm64:
|
|
@echo "$(GREEN)Building for ARM64 (aarch64)...$(NC)"
|
|
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-arm64
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-arm64$(NC)"
|
|
@ls -lh $(APP_NAME)-arm64
|
|
@file $(APP_NAME)-arm64
|
|
|
|
# ARMHF (armv7l) - для старых Raspberry Pi 2/3, Orange Pi PC
|
|
build-armhf:
|
|
@echo "$(GREEN)Building for ARMHF (armv7l)...$(NC)"
|
|
GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-armhf
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-armhf$(NC)"
|
|
@ls -lh $(APP_NAME)-armhf
|
|
@file $(APP_NAME)-armhf
|
|
|
|
# ARMv6 (armv6l) - для Raspberry Pi Zero, Raspberry Pi 1
|
|
build-armv6:
|
|
@echo "$(GREEN)Building for ARMv6 (armv6l)...$(NC)"
|
|
GOOS=linux GOARCH=arm GOARM=6 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-armv6
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-armv6$(NC)"
|
|
@ls -lh $(APP_NAME)-armv6
|
|
|
|
# 32-bit x86 - для старых 32-битных систем
|
|
build-386:
|
|
@echo "$(GREEN)Building for 386 (32-bit x86)...$(NC)"
|
|
GOOS=linux GOARCH=386 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-386
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-386$(NC)"
|
|
@ls -lh $(APP_NAME)-386
|
|
|
|
# Windows AMD64
|
|
build-windows:
|
|
@echo "$(GREEN)Building for Windows AMD64...$(NC)"
|
|
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-windows-amd64.exe
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-windows-amd64.exe$(NC)"
|
|
@ls -lh $(APP_NAME)-windows-amd64.exe
|
|
|
|
# macOS AMD64 (Intel)
|
|
build-darwin-amd64:
|
|
@echo "$(GREEN)Building for macOS AMD64 (Intel)...$(NC)"
|
|
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-darwin-amd64
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-darwin-amd64$(NC)"
|
|
@ls -lh $(APP_NAME)-darwin-amd64
|
|
|
|
# macOS ARM64 (Apple Silicon M1/M2)
|
|
build-darwin-arm64:
|
|
@echo "$(GREEN)Building for macOS ARM64 (Apple Silicon)...$(NC)"
|
|
GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build $(LDFLAGS) -o $(APP_NAME)-darwin-arm64
|
|
@echo "$(GREEN)✅ Done: $(APP_NAME)-darwin-arm64$(NC)"
|
|
@ls -lh $(APP_NAME)-darwin-arm64
|
|
|
|
# Сборка всех Linux архитектур
|
|
build-linux: build-amd64 build-arm64 build-armhf build-armv6 build-386
|
|
@echo "$(GREEN)✅ All Linux builds complete!$(NC)"
|
|
|
|
# Сборка всех архитектур
|
|
build-all: build-linux build-windows build-darwin-amd64 build-darwin-arm64
|
|
@echo "$(GREEN)✅ All builds complete!$(NC)"
|
|
|
|
# Очистка
|
|
clean:
|
|
@echo "$(GREEN)Cleaning...$(NC)"
|
|
rm -f $(APP_NAME)-*
|
|
@echo "$(GREEN)✅ Clean complete$(NC)"
|
|
|
|
# Упаковка в архив для каждой архитектуры
|
|
package:
|
|
@echo "$(GREEN)Creating packages...$(NC)"
|
|
mkdir -p packages
|
|
for arch in amd64 arm64 armhf armv6 386; do \
|
|
if [ -f "$(APP_NAME)-$$arch" ]; then \
|
|
mkdir -p packages/$(APP_NAME)-$$arch; \
|
|
cp $(APP_NAME)-$$arch packages/$(APP_NAME)-$$arch/; \
|
|
cp -r static packages/$(APP_NAME)-$$arch/; \
|
|
cd packages && tar -czf $(APP_NAME)-$$arch.tar.gz $(APP_NAME)-$$arch && cd ..; \
|
|
rm -rf packages/$(APP_NAME)-$$arch; \
|
|
echo "$(GREEN)✅ Created $(APP_NAME)-$$arch.tar.gz$(NC)"; \
|
|
fi \
|
|
done
|
|
rm -rf packages
|
|
@echo "$(GREEN)✅ Packaging complete!$(NC)"
|
|
|
|
# Помощь
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " make build-amd64 - Build for Linux AMD64 (x86_64)"
|
|
@echo " make build-arm64 - Build for Linux ARM64 (aarch64)"
|
|
@echo " make build-armhf - Build for Linux ARMHF (armv7l)"
|
|
@echo " make build-armv6 - Build for Linux ARMv6 (Raspberry Pi Zero)"
|
|
@echo " make build-386 - Build for Linux 386 (32-bit x86)"
|
|
@echo " make build-windows - Build for Windows AMD64"
|
|
@echo " make build-darwin-amd64 - Build for macOS Intel"
|
|
@echo " make build-darwin-arm64 - Build for macOS Apple Silicon"
|
|
@echo " make build-linux - Build all Linux architectures"
|
|
@echo " make build-all - Build all architectures"
|
|
@echo " make clean - Remove all binaries"
|
|
@echo " make package - Create tar.gz packages"
|
|
@echo " make help - Show this help"
|