mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
- Rename Docker job to **"LLVM ${{ matrix.llvm_version }}
Compatibility"** for better visibility.
- Limit `build_type` to **Debug** for MSYS2, OpenBSD, NetBSD, and Nix
jobs to reduce CI time.
- Refactor **Alpine Linux** job: updated to 3.23, simplified dependency
installation, and removed redundant LLVM matrix.
- Modernize **Docker** builds:
- Added automatic architecture detection (x86_64/ARM) for CMake
downloads.
- Generalized LLVM repository logic to support multiple Ubuntu
codenames (Focal/Jammy/Noble).
- Fixed git permissions issues in containerized builds using
`safe.directory`.
- Standardized Android build packaging and added conditional testing for
Debug builds.
46 lines
1.2 KiB
Bash
Executable File
46 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
: ${DOCKER:=docker}
|
|
: ${IMAGE:="c3c-builder"}
|
|
: ${CMAKE_BUILD_TYPE:=Release}
|
|
: ${LLVM_VERSION:=18}
|
|
: ${UBUNTU_VERSION:="22.04"}
|
|
: ${CMAKE_VERSION:="3.20.0"}
|
|
|
|
cd docker || exit 1 # Exit if the 'docker' directory doesn't exist
|
|
|
|
$DOCKER build \
|
|
--build-arg LLVM_VERSION=$LLVM_VERSION \
|
|
--build-arg CMAKE_VERSION=$CMAKE_VERSION \
|
|
--build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
|
|
-t $IMAGE .
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Docker image build failed. Exiting."
|
|
exit 1
|
|
fi
|
|
|
|
cd ..
|
|
|
|
rm -rf build bin
|
|
mkdir -p build bin
|
|
|
|
chmod -R 777 build bin
|
|
|
|
exec $DOCKER run -i --rm \
|
|
-v "$PWD":/home/c3c/source \
|
|
-w /home/c3c/source $IMAGE bash -c \
|
|
"git config --global --add safe.directory /home/c3c/source && \
|
|
cmake -S . -B build \
|
|
-G Ninja \
|
|
-DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE \
|
|
-DCMAKE_C_COMPILER=clang-$LLVM_VERSION \
|
|
-DCMAKE_CXX_COMPILER=clang++-$LLVM_VERSION \
|
|
-DCMAKE_LINKER=lld-$LLVM_VERSION \
|
|
-DCMAKE_OBJCOPY=llvm-objcopy-$LLVM_VERSION \
|
|
-DCMAKE_STRIP=llvm-strip-$LLVM_VERSION \
|
|
-DCMAKE_DLLTOOL=llvm-dlltool-$LLVM_VERSION \
|
|
-DC3_LLVM_VERSION=auto && \
|
|
cmake --build build && \
|
|
cp -r build/c3c build/lib bin"
|