FROM ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main
# Install clang, libclang (for bindgen), and dependencies
RUN apt-get update && apt-get install -y \
cmake \
pkg-config \
clang \
llvm \
libclang-dev \
crossbuild-essential-arm64 \
&& rm -rf /var/lib/apt/lists/*
# Bake all cross-compilation environment variables into the image
ENV LIBCLANG_PATH=/usr/lib/llvm-10/lib
ENV CC=clang
ENV CXX=clang++
ENV PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig
ENV PKG_CONFIG_SYSROOT_DIR=/usr/aarch64-linux-gnu
ENV PKG_CONFIG_ALLOW_CROSS=1
# Increase rustc stack size to prevent stack overflow during compilation of complex crates (linux-raw-sys, bindgen output)
ENV RUST_MIN_STACK=16777216