# 定义项目名称与变量
BINARY_NAME := toolbox
TARGET_DIR := target

# 目标平台配置
TARGET_MAC_ARM := aarch64-apple-darwin
TARGET_LINUX_AMD := x86_64-unknown-linux-musl
TARGET_LINUX_ARM := aarch64-unknown-linux-musl

.PHONY: all help init build-mac-arm build-linux-amd build-linux-arm clean

# 默认目标：显示帮助信息
help:
	@echo "使用说明:"
	@echo "  make init             - 安装多平台交叉编译所需的 target"
	@echo "  make all              - 编译所有平台 (macOS ARM, Linux AMD64, Linux ARM64)"
	@echo "  make build-mac-arm    - 仅编译 macOS Apple Silicon (ARM64)"
	@echo "  make build-linux-amd  - 仅编译 Linux AMD64 (x86_64 musl)"
	@echo "  make build-linux-arm  - 仅编译 Linux ARM64 (aarch64 musl)"
	@echo "  make clean            - 清理编译产物"

# 首次使用时环境初始化（安装 target）
init:
	rustup target add $(TARGET_MAC_ARM)
	rustup target add $(TARGET_LINUX_AMD)
	rustup target add $(TARGET_LINUX_ARM)

# 编译所有平台
all: build-mac-arm build-linux-amd build-linux-arm
	@echo "\n🎉 所有平台编译完成！产物路径："
	@echo "  - macOS ARM64:  $(TARGET_DIR)/$(TARGET_MAC_ARM)/release/$(BINARY_NAME)"
	@echo "  - Linux AMD64:  $(TARGET_DIR)/$(TARGET_LINUX_AMD)/release/$(BINARY_NAME)"
	@echo "  - Linux ARM64:  $(TARGET_DIR)/$(TARGET_LINUX_ARM)/release/$(BINARY_NAME)"

# 单个平台编译命令
build-mac-arm:
	@echo "🚀 编译 macOS ARM64 ($(TARGET_MAC_ARM))..."
	cross build --release --target $(TARGET_MAC_ARM)

build-linux-amd:
	@echo "🚀 编译 Linux AMD64 ($(TARGET_LINUX_AMD))..."
	cross build --release --target $(TARGET_LINUX_AMD)

build-linux-arm:
	@echo "🚀 编译 Linux ARM64 ($(TARGET_LINUX_ARM))..."
	cross build --release --target $(TARGET_LINUX_ARM)

# 清理生成文件
clean:
	cargo clean