getpkg/test/crossbuild.sh
2025-05-26 14:51:00 +12:00

34 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
TARGET_ARCH="aarch64"
OUTDIR="output-${TARGET_ARCH}"
# Create volume if it doesn't exist
docker volume create cppbuild-cache-${TARGET_ARCH}
# Build command to run in the container
BUILD_COMMAND="mkdir -p /app/build && \
cd /app/build && \
cmake -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=/app/src/cmake/${TARGET_ARCH}-linux-gnu.cmake \
/app/src && \
ninja -j$(nproc) && \
mkdir -p /app/src/$OUTDIR && \
cp /app/build/ipdemo /app/src/$OUTDIR/ipdemo && \
chown -R $(id -u):$(id -g) /app/src/$OUTDIR"
# Run the build in the container
docker run --rm \
-v cppbuild-cache-${TARGET_ARCH}:/app/build \
-v $(pwd):/app/src \
-w /app/src \
-e CCACHE_DIR=/app/build/.ccache \
-e CC="ccache /opt/cross/bin/aarch64-unknown-linux-musl-gcc" \
-e CXX="ccache /opt/cross/bin/aarch64-unknown-linux-musl-g++" \
-e LD=mold \
-e CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) \
-e NINJA_STATUS="[%f/%t] " \
cpp-httplib-builder:latest \
-c "$BUILD_COMMAND"
echo "Build completed. Output is in $OUTDIR directory"