name: libc Precommit CI - shared tests permissions: contents: read on: pull_request: paths: - 'libc/**' - '.github/workflows/libc-shared-tests.yml' jobs: windows-msvc-shared: name: libc-shared-test with MSVC (${{ matrix.arch }}) strategy: fail-fast: false # If one arch fails, let the other finish matrix: include: - arch: amd64 os: windows-2022 - arch: amd64_x86 os: windows-2022 - arch: arm64 os: windows-11-arm runs-on: ${{ matrix.os }} steps: - name: Checkout LLVM uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Setup MSVC Dev Environment uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0 with: arch: ${{ matrix.arch }} - name: Configure CMake run: | cmake -B build -S runtimes -G Ninja ` -DLLVM_ENABLE_RUNTIMES=libc ` -DCMAKE_C_COMPILER=cl ` -DCMAKE_CXX_COMPILER=cl ` -DCMAKE_BUILD_TYPE=Release - name: Build and Test run: cmake --build build --target libc-shared-tests linux-cross-arch-shared: name: libc-shared-tests on (${{ matrix.arch }}) runs-on: ubuntu-24.04 strategy: fail-fast: false # If one arch fails, let the other finish matrix: include: - arch: aarch64 libc: libc6-dev-arm64-cross libcpp: libstdc++6-arm64-cross target_triple: aarch64-linux-gnu gcc_arch: aarch64-linux-gnu - arch: riscv64 libc: libc6-dev-riscv64-cross libcpp: libstdc++6-riscv64-cross target_triple: riscv64-linux-gnu gcc_arch: riscv64-linux-gnu - arch: ppc64le libc: libc6-dev-ppc64el-cross libcpp: libstdc++6-ppc64el-cross target_triple: powerpc64le-linux-gnu gcc_arch: powerpc64le-linux-gnu steps: - name: Checkout LLVM uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: persist-credentials: false - name: Prepare dependencies run: | sudo apt-get update -y sudo apt-get install -y cmake ninja-build clang lld qemu-user-static \ ${{ matrix.libc }} ${{ matrix.libcpp }} \ gcc-${{ matrix.target_triple }} g++-${{ matrix.target_triple }} - name: Configure CMake - Clang run: | cmake -B build/clang -S runtimes -G Ninja \ -DLLVM_ENABLE_RUNTIMES=libc \ -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_BUILD_TYPE=Release \ -DLIBC_TARGET_TRIPLE=${{ matrix.target_triple }} - name: Build and Run - Clang env: QEMU_LD_PREFIX: /usr/${{ matrix.target_triple }} run: | cmake --build build/clang --target libc-shared-tests - name: Configure CMake - gcc run: | cmake -B build/gcc -S runtimes -G Ninja \ -DLLVM_ENABLE_RUNTIMES=libc \ -DCMAKE_C_COMPILER=${{ matrix.target_triple }}-gcc \ -DCMAKE_CXX_COMPILER=${{ matrix.target_triple }}-g++ \ -DCMAKE_BUILD_TYPE=Release \ -DLIBC_TARGET_TRIPLE=${{ matrix.target_triple }} - name: Build and Run - gcc env: QEMU_LD_PREFIX: /usr/${{ matrix.target_triple }} run: | cmake --build build/gcc --target libc-shared-tests