121 lines
4.0 KiB
Makefile
121 lines
4.0 KiB
Makefile
# Makefile for pt_system_checking
|
||
# 支持 amd64 和 arm64 架构的交叉编译
|
||
|
||
# 项目名称
|
||
PROJECT_NAME = pt_system_checking
|
||
VERSION = 0.1.0
|
||
|
||
# 构建目录
|
||
BUILD_DIR = target
|
||
RELEASE_DIR = release
|
||
|
||
# 目标架构
|
||
ARCH_AMD64 = x86_64-unknown-linux-musl
|
||
ARCH_ARM64 = aarch64-unknown-linux-gnu
|
||
|
||
# 输出二进制文件名
|
||
BINARY_AMD64 = $(PROJECT_NAME)-amd64
|
||
BINARY_ARM64 = $(PROJECT_NAME)-arm64
|
||
|
||
.PHONY: all help install-targets build-amd64 build-arm64 build-all clean release test prepare-release create-release
|
||
|
||
# 默认目标
|
||
all: build-all
|
||
|
||
# 帮助信息
|
||
help:
|
||
@echo "可用的构建目标:"
|
||
@echo " make install-targets - 安装交叉编译工具链"
|
||
@echo " make build-amd64 - 构建 amd64 版本"
|
||
@echo " make build-arm64 - 构建 arm64 版本(适用于香橙派 Zero3)"
|
||
@echo " make build-all - 构建所有架构版本"
|
||
@echo " make release - 创建发布版本(优化编译)"
|
||
@echo " make prepare-release - 准备发布文件(包含安装脚本)"
|
||
@echo " make create-release - 创建 Gitea Release(需要设置 VERSION 变量)"
|
||
@echo " make test - 运行测试"
|
||
@echo " make clean - 清理构建文件"
|
||
@echo " make install - 安装到系统(需要 root 权限)"
|
||
|
||
# 安装交叉编译目标
|
||
install-targets:
|
||
@echo "安装交叉编译工具链..."
|
||
rustup target add $(ARCH_AMD64)
|
||
rustup target add $(ARCH_ARM64)
|
||
@echo ""
|
||
@echo "请确保已安装 ARM64 交叉编译工具:"
|
||
@echo " Ubuntu/Debian: sudo apt-get install gcc-aarch64-linux-gnu"
|
||
@echo " Fedora/RHEL: sudo dnf install gcc-aarch64-linux-gnu"
|
||
@echo " Arch Linux: sudo pacman -S aarch64-linux-gnu-gcc"
|
||
@echo ""
|
||
@if ! command -v aarch64-linux-gnu-gcc >/dev/null 2>&1; then \
|
||
echo "警告: 未检测到 aarch64-linux-gnu-gcc,ARM64 交叉编译可能失败"; \
|
||
echo "请运行: sudo apt-get install gcc-aarch64-linux-gnu"; \
|
||
else \
|
||
echo "✓ 检测到 aarch64-linux-gnu-gcc"; \
|
||
fi
|
||
@echo "工具链安装完成"
|
||
|
||
# 构建 amd64 版本
|
||
build-amd64:
|
||
@echo "构建 amd64 版本..."
|
||
cargo build --target $(ARCH_AMD64)
|
||
@mkdir -p $(RELEASE_DIR)
|
||
@cp $(BUILD_DIR)/$(ARCH_AMD64)/debug/$(PROJECT_NAME) $(RELEASE_DIR)/$(BINARY_AMD64)
|
||
@echo "amd64 版本构建完成: $(RELEASE_DIR)/$(BINARY_AMD64)"
|
||
|
||
# 构建 arm64 版本(适用于香橙派 Zero3)
|
||
build-arm64:
|
||
@echo "构建 arm64 版本(适用于香橙派 Zero3)..."
|
||
cargo build --target $(ARCH_ARM64)
|
||
@mkdir -p $(RELEASE_DIR)
|
||
@cp $(BUILD_DIR)/$(ARCH_ARM64)/debug/$(PROJECT_NAME) $(RELEASE_DIR)/$(BINARY_ARM64)
|
||
@echo "arm64 版本构建完成: $(RELEASE_DIR)/$(BINARY_ARM64)"
|
||
|
||
# 构建所有架构
|
||
build-all: build-amd64 build-arm64
|
||
@echo "所有架构构建完成"
|
||
|
||
# 发布版本(优化编译)
|
||
release:
|
||
@echo "构建优化版本..."
|
||
@mkdir -p $(RELEASE_DIR)
|
||
cargo build --release --target $(ARCH_AMD64)
|
||
cargo build --release --target $(ARCH_ARM64)
|
||
@cp $(BUILD_DIR)/$(ARCH_AMD64)/release/$(PROJECT_NAME) $(RELEASE_DIR)/$(BINARY_AMD64)
|
||
@cp $(BUILD_DIR)/$(ARCH_ARM64)/release/$(PROJECT_NAME) $(RELEASE_DIR)/$(BINARY_ARM64)
|
||
@echo "发布版本构建完成:"
|
||
@ls -lh $(RELEASE_DIR)/
|
||
|
||
# 运行测试
|
||
test:
|
||
cargo test
|
||
|
||
# 清理构建文件
|
||
clean:
|
||
cargo clean
|
||
rm -rf $(RELEASE_DIR)
|
||
@echo "清理完成"
|
||
|
||
# 准备发布文件(包含二进制文件和安装脚本)
|
||
prepare-release: release
|
||
@echo "准备发布文件..."
|
||
@cp install.sh $(RELEASE_DIR)/
|
||
@chmod +x $(RELEASE_DIR)/install.sh
|
||
@echo "发布文件已准备完成,位于 $(RELEASE_DIR)/ 目录"
|
||
@echo "请将以下文件上传到 Gitea Releases:"
|
||
@ls -lh $(RELEASE_DIR)/
|
||
|
||
# 创建 Gitea Release
|
||
create-release: prepare-release
|
||
@echo "创建 Gitea Release v$(VERSION)..."
|
||
tea releases create --tag v$(VERSION) --title "V$(VERSION) 版本发布" \
|
||
--asset "$(RELEASE_DIR)/install.sh" \
|
||
--asset "$(RELEASE_DIR)/$(BINARY_AMD64)" \
|
||
--asset "$(RELEASE_DIR)/$(BINARY_ARM64)"
|
||
@echo "Release 创建完成"
|
||
|
||
# 安装到系统(默认安装当前架构)
|
||
install:
|
||
cargo install --path .
|
||
@echo "安装完成"
|