Files
pt-disk-report/Makefile
2026-02-22 20:55:05 +08:00

121 lines
4.0 KiB
Makefile
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-gccARM64 交叉编译可能失败"; \
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 "安装完成"