[libc] init uefi os target #188
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow is for pre-commit testing of the LLVM-libc project. | |
name: LLVM-libc Pre-commit Overlay Tests | |
permissions: | |
contents: read | |
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@v4 | |
# Libc's build is relatively small comparing with other components of LLVM. | |
# A fresh linux overlay takes about 180MiB of uncompressed disk space, which can | |
# be compressed into ~40MiB. MacOS and Windows overlay builds are less than 10MiB | |
# after compression. Limiting the cache size to 1G should be enough. | |
# Prefer sccache as it is modern and it has a guarantee to work with MSVC. | |
# Do not use direct GHAC access even though it is supported by sccache. GHAC rejects | |
# frequent small object writes. | |
- name: Setup ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
max-size: 1G | |
key: libc_overlay_build_${{ matrix.os }}_${{ matrix.compiler.c_compiler }} | |
variant: sccache | |
# MPFR is required by some of the mathlib tests. | |
- 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 | |
# Chocolatey is shipped with Windows runners. Windows Server 2025 recommends WinGet. | |
# Consider migrating to WinGet when Windows Server 2025 is available. | |
- 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" | |
# Use MinSizeRel to reduce the size of the build. | |
# Notice that CMP0141=NEW and MSVC_DEBUG_INFORMATION_FORMAT=Embedded are required | |
# by the sccache tool. | |
- 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 | |
-DCMAKE_MSVC_DEBUG_INFORMATION_FORMAT=Embedded | |
-DLLVM_ENABLE_RUNTIMES=libc | |
-G Ninja | |
-S ${{ github.workspace }}/runtimes | |
- name: Build | |
run: > | |
cmake | |
--build ${{ steps.strings.outputs.build-output-dir }} | |
--parallel | |
--config MinSizeRel | |
--target libc | |
- name: Test | |
run: > | |
cmake | |
--build ${{ steps.strings.outputs.build-output-dir }} | |
--parallel | |
--target check-libc |