Skip to content

[libc] add multi-platform pre-commit github actions #11

[libc] add multi-platform pre-commit github actions

[libc] add multi-platform pre-commit github actions #11

# This workflow is for pre-commit testing of the LLVM-libc project.
name: LLVM-libc Pre-commit Overlay Tests
on:
pull_request:
branches: [ "main" ]
paths:
- 'libc/**'
- '.github/workflows/libc-overlay-tests.yml'
jobs:
build:
env:
SCCACHE_GHA_ENABLED: "true"
runs-on: ${{ matrix.os }}
strategy:
# Set fail-fast to false to ensure that feedback is delivered for all matrix combinations.
fail-fast: false
matrix:
os: [ ubuntu-24.04, windows-2022, macos-14 ]
compiler: [
{ c_compiler: gcc, cpp_compiler: g++ },
{ c_compiler: clang, cpp_compiler: clang++ },
{ c_compiler: clang-cl, cpp_compiler: clang-cl }
]
exclude:
- os: windows-2022
compiler: { c_compiler: gcc, cpp_compiler: g++ }
- os: windows-2022
compiler: { c_compiler: clang, cpp_compiler: clang++ }
- os: ubuntu-24.04
compiler: { c_compiler: clang-cl, cpp_compiler: clang-cl }
- os: macos-14
compiler: { c_compiler: clang-cl, cpp_compiler: clang-cl }
- os: macos-14
compiler: { c_compiler: gcc, cpp_compiler: g++ }
steps:
- uses: actions/checkout@v4
- name: Run sccache-cache
uses: mozilla-actions/[email protected]
- name: Prepare dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y cmake libmpfr-dev libgmp-dev libmpc-dev
- name: Prepare dependencies (Windows)
if: runner.os == 'Windows'
run: |
echo "C:\\Program Files\\LLVM\\bin" >> $GITHUB_PATH
- name: Set reusable strings
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
- name: Configure CMake
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_CXX_COMPILER=${{ matrix.compiler.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.compiler.c_compiler }}
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DCMAKE_C_COMPILER_LAUNCHER=sccache
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
-DLLVM_ENABLE_RUNTIMES=libc
-S ${{ github.workspace }}/runtimes
- name: Build
run: >
cmake
--build ${{ steps.strings.outputs.build-output-dir }}
--parallel
--config RelWithDebInfo
--target libc
- name: Test
run: >
cmake
--build ${{ steps.strings.outputs.build-output-dir }}
--parallel
--target check-libc