[llvm] [libc] add multi-platform pre-commit github actions (PR #119104)

Schrodinger ZHU Yifan via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 9 11:58:39 PST 2024


================
@@ -0,0 +1,92 @@
+# 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:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations.
+      fail-fast: false
+      matrix:
+        include:
+          # TODO: add linux gcc when it is fixed
+          - os: ubuntu-24.04
+            compiler:
+              c_compiler: clang
+              cpp_compiler: clang++
+          - os: windows-2022
+            compiler:
+              c_compiler: clang-cl
+              cpp_compiler: clang-cl
+          - os: macos-14
+            compiler:
+              c_compiler: clang
+              cpp_compiler: clang++
+    
+    steps:
+    - uses: actions/checkout at v4
+
+    - name: Setup ccache
+      uses: hendrikmuhs/ccache-action at v1
+      with:
+        max-size: 1G
+        key: libc_overlay_build_${{ matrix.os }}_${{ matrix.compiler.c_compiler }}
+        variant: sccache
+    
+    - name: Prepare dependencies (Ubuntu)
+      if: runner.os == 'Linux'
+      run: |
+        sudo apt-get update
+        sudo apt-get install -y libmpfr-dev libgmp-dev libmpc-dev ninja-build
+    
+    - name: Prepare dependencies (Windows)
+      if: runner.os == 'Windows'
+      run: |
+        choco install ninja
+    
+    - name: Prepare dependencies (macOS)
+      if: runner.os == 'macOS'
+      run: |
+        brew install ninja
+
+    - 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=MinSizeRel
+        -DCMAKE_C_COMPILER_LAUNCHER=sccache
+        -DCMAKE_CXX_COMPILER_LAUNCHER=sccache
+        -DCMAKE_POLICY_DEFAULT_CMP0141=NEW
----------------
SchrodingerZhu wrote:

Same as above, following the instructions from https://github.com/mozilla/sccache/tree/main?tab=readme-ov-file#usage

https://github.com/llvm/llvm-project/pull/119104


More information about the llvm-commits mailing list