# Dockerfile.build - Agentic-Warden 跨平台编译环境
#
# 用途: 在容器中编译 musl 静态二进制
# 支持: Linux x86_64, Linux ARM64, Windows, macOS 的代码在容器中编译
#
# 使用:
#   docker build -f Dockerfile.build -t aiw-builder .
#   docker run --rm -v $(pwd):/workspace aiw-builder cargo build --release --target x86_64-unknown-linux-musl

FROM rust:latest

LABEL maintainer="agentic-warden"
LABEL description="Agentic-Warden cross-platform build environment"

# 设置工作目录
WORKDIR /workspace

# 更新系统包并安装编译工具链
RUN set -ex && \
    apt-get update && \
    apt-get install -y --no-install-recommends \
        # 基础编译工具
        build-essential \
        pkg-config \
        \
        # Musl 工具链（用于 Linux 静态编译）
        musl-tools \
        musl-dev \
        \
        # MinGW 工具链（用于 Windows 交叉编译）
        gcc-mingw-w64-x86-64 \
        g++-mingw-w64-x86-64 \
        binutils-mingw-w64-x86-64 \
        \
        # 其他有用的工具
        git \
        curl \
        wget \
        ca-certificates \
        && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get clean

# 安装 Rust 目标
RUN rustup target add x86_64-unknown-linux-gnu && \
    rustup target add x86_64-apple-darwin && \
    rustup target add aarch64-apple-darwin && \
    rustup target add x86_64-pc-windows-gnu

# 配置 MinGW 工具链链接
RUN mkdir -p /root/.cargo && printf '%s\n' \
    '[target.x86_64-pc-windows-gnu]' \
    'linker = "x86_64-w64-mingw32-gcc"' \
    'ar = "x86_64-w64-mingw32-ar"' \
    > /root/.cargo/config.toml

# 缓存 Rust 编译器
RUN cargo new --bin dummy_project && \
    cd dummy_project && \
    cargo build --release --target x86_64-unknown-linux-gnu 2>/dev/null || true && \
    cd .. && \
    rm -rf dummy_project

# 显示版本信息
RUN echo "=== Rust Build Environment ===" && \
    rustc --version && \
    cargo --version && \
    echo "" && \
    echo "=== Installed Targets ===" && \
    rustup target list --installed && \
    echo "" && \
    echo "=== System Tools ===" && \
    gcc --version | head -n 1 && \
    x86_64-w64-mingw32-gcc --version | head -n 1

# 默认命令：显示帮助
CMD ["cargo", "--help"]
