mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 03:51:18 +00:00
CMakeLists and CI: Use our custom llvm (#2893)
* c3-llvm: new CMakeLists and CI uses custom llvm version 21.x from "https://github.com//ManuLinares/llvm-custom-builds/" * use c3lang/llvm-for-c3 latest release --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com>
This commit is contained in:
74
.github/workflows/main.yml
vendored
74
.github/workflows/main.yml
vendored
@@ -8,9 +8,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
LLVM_RELEASE_VERSION_WINDOWS: 21.1.8
|
||||
LLVM_RELEASE_VERSION_MAC: 21
|
||||
LLVM_RELEASE_VERSION_LINUX: 21
|
||||
LLVM_RELEASE_VERSION: 21.x
|
||||
LLVM_RELEASE_VERSION_LINUX_MUSL: 20
|
||||
LLVM_RELEASE_VERSION_OPENBSD: 20
|
||||
LLVM_RELEASE_VERSION_NETBSD: 19
|
||||
@@ -33,7 +31,7 @@ jobs:
|
||||
- uses: actions/cache@v5
|
||||
with:
|
||||
path: build/_deps
|
||||
key: ${{ runner.os }}-llvm-${{ env.LLVM_RELEASE_VERSION_WINDOWS }}-${{ matrix.build_type }}-${{ hashFiles('CMakeLists.txt', '.github/workflows/main.yml') }}
|
||||
key: ${{ runner.os }}-llvm-${{ env.LLVM_RELEASE_VERSION }}-${{ matrix.build_type }}-${{ hashFiles('CMakeLists.txt', '.github/workflows/main.yml') }}
|
||||
|
||||
# set up the environment for Ninja
|
||||
- uses: ilammy/msvc-dev-cmd@v1
|
||||
@@ -42,7 +40,7 @@ jobs:
|
||||
|
||||
- name: CMake Build
|
||||
run: |
|
||||
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
||||
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DC3_FETCH_LLVM=ON
|
||||
cmake --build build --config ${{ matrix.build_type }}
|
||||
|
||||
# We remove the GNU link tool so C3C picks up the MSVC link.exe
|
||||
@@ -132,40 +130,17 @@ jobs:
|
||||
run: ./scripts/tools/ci_tests.sh "./build/c3c"
|
||||
|
||||
build-linux:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
build_type: [Release, Debug]
|
||||
llvm_version: [17, 18, 19, 20, 21, 22]
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- run: sudo apt-get update && sudo apt-get install -y zlib1g zlib1g-dev python3 ninja-build curl libcurl4-openssl-dev
|
||||
- name: Install Clang ${{matrix.llvm_version}}
|
||||
run: |
|
||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
|
||||
REPO_URL="http://apt.llvm.org/focal/ llvm-toolchain-focal"
|
||||
if [[ "${{matrix.llvm_version}}" != "${{env.LLVM_DEV_VERSION}}" ]]; then REPO_URL="$REPO_URL-${{matrix.llvm_version}}"; fi
|
||||
sudo add-apt-repository "deb $REPO_URL main"
|
||||
sudo apt-get update
|
||||
PKGS="clang-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}} llvm-${{matrix.llvm_version}}-dev lld-${{matrix.llvm_version}} liblld-${{matrix.llvm_version}}-dev libpolly-${{matrix.llvm_version}}-dev"
|
||||
if [[ "${{matrix.llvm_version}}" < 18 ]]; then PKGS="$PKGS libmlir-${{matrix.llvm_version}} libmlir-${{matrix.llvm_version}}-dev mlir-${{matrix.llvm_version}}-tools"; fi
|
||||
sudo apt-get install -y $PKGS
|
||||
- name: CMake Build
|
||||
run: |
|
||||
C3_LLVM_VER=${{matrix.llvm_version}}
|
||||
if [[ "${{matrix.llvm_version}}" -ge 18 && "${{matrix.llvm_version}}" != "${{env.LLVM_DEV_VERSION}}" ]]; then C3_LLVM_VER="${{matrix.llvm_version}}.1"; fi
|
||||
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
|
||||
-DCMAKE_C_COMPILER=clang-${{matrix.llvm_version}} \
|
||||
-DCMAKE_CXX_COMPILER=clang++-${{matrix.llvm_version}} \
|
||||
-DCMAKE_LINKER=lld-link-${{matrix.llvm_version}} \
|
||||
-DCMAKE_OBJCOPY=llvm-objcopy-${{matrix.llvm_version}} \
|
||||
-DCMAKE_STRIP=llvm-strip-${{matrix.llvm_version}} \
|
||||
-DCMAKE_DLLTOOL=llvm-dlltool-${{matrix.llvm_version}} \
|
||||
-DLLVM_ENABLE_LIBXML2=OFF \
|
||||
-DC3_LLVM_VERSION=$C3_LLVM_VER
|
||||
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DC3_FETCH_LLVM=ON
|
||||
cmake --build build
|
||||
- name: Run Unified Tests
|
||||
run: ./scripts/tools/ci_tests.sh "./build/c3c"
|
||||
@@ -177,11 +152,9 @@ jobs:
|
||||
make C3C_PATH=../../../../build/ run
|
||||
|
||||
- name: Bundle & Upload (Linux)
|
||||
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_LINUX
|
||||
run: |
|
||||
bash ./scripts/tools/package_build.sh "./build/c3c" "c3-linux-${{matrix.build_type}}" "tar"
|
||||
- uses: actions/upload-artifact@v6
|
||||
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_LINUX
|
||||
with:
|
||||
name: c3-linux-${{matrix.build_type}}
|
||||
path: c3-linux-${{matrix.build_type}}.tar.gz
|
||||
@@ -224,44 +197,11 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
build_type: [Release, Debug]
|
||||
llvm_version: [17, 18, 19, 20, 21]
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Download LLVM
|
||||
run: |
|
||||
brew_install() {
|
||||
for pkg in "$@"; do
|
||||
brew list "$pkg" &>/dev/null || brew install "$pkg"
|
||||
done
|
||||
}
|
||||
if [[ "${{ matrix.llvm_version }}" == "21" ]]; then
|
||||
brew_install llvm lld ninja curl
|
||||
echo "/opt/homebrew/opt/llvm/bin" >> $GITHUB_PATH
|
||||
echo "/opt/homebrew/opt/lld/bin" >> $GITHUB_PATH
|
||||
else
|
||||
brew_install llvm@${{ matrix.llvm_version }} ninja curl
|
||||
echo "/opt/homebrew/opt/llvm@${{ matrix.llvm_version }}/bin" >> $GITHUB_PATH
|
||||
if [[ "${{ matrix.llvm_version }}" -ge 19 ]]; then
|
||||
brew_install lld@${{ matrix.llvm_version }}
|
||||
echo "/opt/homebrew/opt/lld@${{ matrix.llvm_version }}/bin" >> $GITHUB_PATH
|
||||
fi
|
||||
fi
|
||||
echo "CPATH=$(xcrun --show-sdk-path)/user/include" >> $GITHUB_ENV
|
||||
- name: CMake Build
|
||||
run: |
|
||||
C3_LLVM_VER=${{matrix.llvm_version}}
|
||||
if [[ "${{matrix.llvm_version}}" -ge 18 ]]; then C3_LLVM_VER="${{matrix.llvm_version}}.1"; fi
|
||||
if [[ "${{ matrix.llvm_version }}" == "21" ]]; then
|
||||
C3_LLD_DIR="/opt/homebrew/opt/lld/lib"
|
||||
C3_LLD_INCLUDE_DIR="/opt/homebrew/opt/lld/include"
|
||||
elif [[ "${{ matrix.llvm_version }}" -ge 19 ]]; then
|
||||
C3_LLD_DIR="/opt/homebrew/opt/lld@${{ matrix.llvm_version }}/lib"
|
||||
C3_LLD_INCLUDE_DIR="/opt/homebrew/opt/lld@${{ matrix.llvm_version }}/include"
|
||||
else
|
||||
C3_LLD_DIR=""
|
||||
C3_LLD_INCLUDE_DIR=""
|
||||
fi
|
||||
cmake -B build -G Ninja -DC3_LLVM_VERSION=$C3_LLVM_VER -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DC3_LLD_DIR=$C3_LLD_DIR -DC3_LLD_INCLUDE_DIR=$C3_LLD_INCLUDE_DIR
|
||||
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DC3_FETCH_LLVM=ON
|
||||
cmake --build build
|
||||
- name: Run Unified Tests
|
||||
run: ./scripts/tools/ci_tests.sh "./build/c3c"
|
||||
@@ -272,10 +212,8 @@ jobs:
|
||||
../../build/c3c build hello_world_lib -vv --trust=full
|
||||
|
||||
- name: Bundle & Upload (Mac)
|
||||
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_MAC
|
||||
run: bash ./scripts/tools/package_build.sh "./build/c3c" "c3-macos-${{matrix.build_type}}" "zip"
|
||||
- uses: actions/upload-artifact@v6
|
||||
if: matrix.llvm_version == env.LLVM_RELEASE_VERSION_MAC
|
||||
with:
|
||||
name: c3-macos-${{matrix.build_type}}
|
||||
path: c3-macos-${{matrix.build_type}}.zip
|
||||
|
||||
Reference in New Issue
Block a user