From 56db6070b7d8605a945c0ae8dd15651ba651f20b Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 13:26:25 -0800 Subject: [PATCH 01/30] [libc][Github] Perform baremetal libc builds Currently there are no 32 bit presubmit builds for libc. This PR performs 32 bit build only (no test) to check any changes that land in libc break 32 bit builds. --- .github/workflows/libc-fullbuild-tests.yml | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 3a048aeb9405b..dfa4c8e4c4764 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -24,30 +24,42 @@ jobs: cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Release c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04-arm build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: aarch64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-uefi-llvm include_scudo: OFF + enable_baremetal_build: OFF + - os: ubuntu-24.04 + build__type: Release + c_compiler: clang-22 + cpp_compiler: clang++-22 + target: armv6m-none-eabi + include_scudo: OFF + enable_baremetal_build: ON # TODO: add back gcc build when it is fixed # - c_compiler: gcc # cpp_compiler: g++ @@ -102,6 +114,18 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi + if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then + export RUNTIMES="$RUNTIMES;libc" + export CMAKE_FLAGS=" + -DCMAKE_BUILD_TYPE=Release + -DLLVM_LIBC_FULL_BUILD=ON + -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi + -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi + -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi + -DCMAKE_C_FLAGS=-mfloat-abi=soft + -DCMAKE_CXX_FLAGS=-mfloat-abi=soft" + fi + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ From 981b670ee855ef120f84debbbb7ed8afc5b4c5f5 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 13:43:37 -0800 Subject: [PATCH 02/30] Carve out a separate build step. --- .github/workflows/libc-fullbuild-tests.yml | 46 ++++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index dfa4c8e4c4764..7b482e12814fa 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -98,6 +98,8 @@ jobs: run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" echo "build-install-dir=${{ github.workspace }}/install" >> "$GITHUB_OUTPUT" + echo "build-baremetal-output-dir=${{ github.workspace }}/build_baremetal" >> "$GITHUB_OUTPUT" + echo "build-baremetal-install-dir=${{ github.workspace }}/install_baremetal" >> "$GITHUB_OUTPUT" # Configure libc fullbuild with scudo. # Use MinSizeRel to reduce the size of the build. @@ -114,18 +116,6 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then - export RUNTIMES="$RUNTIMES;libc" - export CMAKE_FLAGS=" - -DCMAKE_BUILD_TYPE=Release - -DLLVM_LIBC_FULL_BUILD=ON - -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi - -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi - -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi - -DCMAKE_C_FLAGS=-mfloat-abi=soft - -DCMAKE_CXX_FLAGS=-mfloat-abi=soft" - fi - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ @@ -155,3 +145,35 @@ jobs: --build ${{ steps.strings.outputs.build-output-dir }} --parallel --target check-libc + + - name: Configure CMake for baremetal + run: | + export RUNTIMES="libc" + if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then + cmake -B ${{ steps.strings.outputs.build-baremetal-output-dir }} \ + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ + -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_C_FLAGS=-mfloat-abi=soft \ + -DCMAKE_CXX_FLAGS=-mfloat-abi=soft \ + fi + + - name: Build Baremtal + run: > + cmake + --build ${{ steps.strings.outputs.build-baremetal-output-dir }} + --parallel + --target install From 91c956ffea4f3a64731f0cbdd0b093170a8f18cf Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:01:27 -0800 Subject: [PATCH 03/30] Conditionally enable baremetal build. --- .github/workflows/libc-fullbuild-tests.yml | 54 ++++++++++------------ 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 7b482e12814fa..9bba0cd93928a 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -131,6 +131,7 @@ jobs: $CMAKE_FLAGS - name: Build + if: ${{ matrix.enable_baremetal_build == "OFF" }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} @@ -139,41 +140,34 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == "OFF" }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} --parallel --target check-libc - - name: Configure CMake for baremetal + - name: Configure and build for baremetal + if: ${{ matrix.enable_baremetal_build == "ON" }} run: | export RUNTIMES="libc" - if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then - cmake -B ${{ steps.strings.outputs.build-baremetal-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ - -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ - -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_C_FLAGS=-mfloat-abi=soft \ - -DCMAKE_CXX_FLAGS=-mfloat-abi=soft \ - fi - - - name: Build Baremtal - run: > - cmake - --build ${{ steps.strings.outputs.build-baremetal-output-dir }} - --parallel - --target install + cmake -B ${{ steps.strings.outputs.build-baremetal-output-dir }} \ + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ + -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_C_FLAGS=-mfloat-abi=soft \ + -DCMAKE_CXX_FLAGS=-mfloat-abi=soft + ninja libc From 16dac5324c4f57eb4f4a5868f5a6231d2e1b9f67 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:09:25 -0800 Subject: [PATCH 04/30] Add build step. --- .github/workflows/libc-fullbuild-tests.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 9bba0cd93928a..53dcdae50e575 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -170,4 +170,10 @@ jobs: -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ -DCMAKE_C_FLAGS=-mfloat-abi=soft \ -DCMAKE_CXX_FLAGS=-mfloat-abi=soft - ninja libc + - name: Build baremetal + if: ${{ matrix.enable_baremetal_build == "ON" }} + run: > + cmake + --build ${{ steps.strings.outputs.build-baremetal-output-dir }} + --parallel + --target install From a4b12f6bea74c58de4640f8340f820c412d6780b Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:13:46 -0800 Subject: [PATCH 05/30] Reuse build and install directories. --- .github/workflows/libc-fullbuild-tests.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 53dcdae50e575..cc6bacc972b19 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -98,8 +98,6 @@ jobs: run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" echo "build-install-dir=${{ github.workspace }}/install" >> "$GITHUB_OUTPUT" - echo "build-baremetal-output-dir=${{ github.workspace }}/build_baremetal" >> "$GITHUB_OUTPUT" - echo "build-baremetal-install-dir=${{ github.workspace }}/install_baremetal" >> "$GITHUB_OUTPUT" # Configure libc fullbuild with scudo. # Use MinSizeRel to reduce the size of the build. @@ -147,17 +145,18 @@ jobs: --parallel --target check-libc - - name: Configure and build for baremetal + - name: Configure baremetal if: ${{ matrix.enable_baremetal_build == "ON" }} run: | export RUNTIMES="libc" - cmake -B ${{ steps.strings.outputs.build-baremetal-output-dir }} \ + + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ -DLLVM_LIBC_FULL_BUILD=ON \ @@ -170,10 +169,11 @@ jobs: -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ -DCMAKE_C_FLAGS=-mfloat-abi=soft \ -DCMAKE_CXX_FLAGS=-mfloat-abi=soft + - name: Build baremetal if: ${{ matrix.enable_baremetal_build == "ON" }} run: > cmake - --build ${{ steps.strings.outputs.build-baremetal-output-dir }} + --build ${{ steps.strings.outputs.build-output-dir }} --parallel --target install From 2a3c203693f4078db196993ddfbea7cbdccf5ae5 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:19:09 -0800 Subject: [PATCH 06/30] Guard baremetal config inside cmake step. --- .github/workflows/libc-fullbuild-tests.yml | 82 +++++++++------------- 1 file changed, 35 insertions(+), 47 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index cc6bacc972b19..04df8f8d25526 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -114,22 +114,43 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ - -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ - $CMAKE_FLAGS + if [[ ${{ matrix.enable_baremetal_build == "ON" ]]; then + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ + -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_C_FLAGS=-mfloat-abi=soft \ + -DCMAKE_CXX_FLAGS=-mfloat-abi=soft + else + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ + -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + $CMAKE_FLAGS + fi - name: Build - if: ${{ matrix.enable_baremetal_build == "OFF" }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} @@ -144,36 +165,3 @@ jobs: --build ${{ steps.strings.outputs.build-output-dir }} --parallel --target check-libc - - - name: Configure baremetal - if: ${{ matrix.enable_baremetal_build == "ON" }} - run: | - export RUNTIMES="libc" - - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ - -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_C_FLAGS=-mfloat-abi=soft \ - -DCMAKE_CXX_FLAGS=-mfloat-abi=soft - - - name: Build baremetal - if: ${{ matrix.enable_baremetal_build == "ON" }} - run: > - cmake - --build ${{ steps.strings.outputs.build-output-dir }} - --parallel - --target install From 6d660cd81fc308c7941bd2b2ece0f3e9565b62bb Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:23:17 -0800 Subject: [PATCH 07/30] Remove baremetal check. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 04df8f8d25526..6f3b747c6665d 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -159,7 +159,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == "OFF" }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From 484396b3e3e28fc63f7e204477be145e2c0c467c Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:31:16 -0800 Subject: [PATCH 08/30] Add missing braces. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 6f3b747c6665d..d45f631489424 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -114,7 +114,7 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - if [[ ${{ matrix.enable_baremetal_build == "ON" ]]; then + if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ From a4f6878e7e8affdf3c34970cdd20804282dd275d Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:42:03 -0800 Subject: [PATCH 09/30] Guard test step. Skip compiler works cmake checks. --- .github/workflows/libc-fullbuild-tests.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index d45f631489424..d67083c31527c 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -133,7 +133,9 @@ jobs: -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ -DCMAKE_C_FLAGS=-mfloat-abi=soft \ - -DCMAKE_CXX_FLAGS=-mfloat-abi=soft + -DCMAKE_CXX_FLAGS=-mfloat-abi=soft \ + -DCMAKE_C_COMPILER_WORKS = ON \ + -DCMAKE_CXX_COMPILER_WORKS = ON else cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ @@ -159,7 +161,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == "OFF" }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From 65d51075878e3ed0ef55949c44669de8b08d0858 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:43:13 -0800 Subject: [PATCH 10/30] Remove problematic test guard for now. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index d67083c31527c..eb00a1318eca1 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -161,7 +161,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == "OFF" }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From adf1e4f4e0766fe465596f9cca005bb4801737df Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:47:34 -0800 Subject: [PATCH 11/30] Remove unnecessary spaces. --- .github/workflows/libc-fullbuild-tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index eb00a1318eca1..3ba99a9e8ed6a 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -134,8 +134,8 @@ jobs: -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ -DCMAKE_C_FLAGS=-mfloat-abi=soft \ -DCMAKE_CXX_FLAGS=-mfloat-abi=soft \ - -DCMAKE_C_COMPILER_WORKS = ON \ - -DCMAKE_CXX_COMPILER_WORKS = ON + -DCMAKE_C_COMPILER_WORKS=ON \ + -DCMAKE_CXX_COMPILER_WORKS=ON else cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ From 14b3572396357f5256b7f8eff352bc577f7ca6e4 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Tue, 11 Nov 2025 14:57:26 -0800 Subject: [PATCH 12/30] Introduce a second target. --- .github/workflows/libc-fullbuild-tests.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 3ba99a9e8ed6a..0ec85bc3221dd 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -60,6 +60,13 @@ jobs: target: armv6m-none-eabi include_scudo: OFF enable_baremetal_build: ON + - os: ubuntu-24.04 + build__type: Release + c_compiler: clang-22 + cpp_compiler: clang++-22 + target: armv7m-none-eabi + include_scudo: OFF + enable_baremetal_build: ON # TODO: add back gcc build when it is fixed # - c_compiler: gcc # cpp_compiler: g++ @@ -129,9 +136,9 @@ jobs: -S ${{ github.workspace }}/runtimes \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_LIBC_FULL_BUILD=ON \ - -DCMAKE_C_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_CXX_COMPILER_TARGET=armv6m-none-abi \ - -DCMAKE_ASM_COMPILER_TARGET=armv6m-none-abi \ + -DCMAKE_C_COMPILER_TARGET=${{ matrix.target }} \ + -DCMAKE_CXX_COMPILER_TARGET=${{ matrix.target }} \ + -DCMAKE_ASM_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_C_FLAGS=-mfloat-abi=soft \ -DCMAKE_CXX_FLAGS=-mfloat-abi=soft \ -DCMAKE_C_COMPILER_WORKS=ON \ @@ -161,7 +168,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ matrix.enable_baremetal_build }} == "OFF" run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From f5797ba8e852f9b4ec093d32cf2fbefda58fc33c Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 13:16:52 -0800 Subject: [PATCH 13/30] Use cache file for libc standalone build. --- .github/workflows/libc-fullbuild-tests.yml | 24 ++++--------------- .../caches/Standalone_libc_baremetal.cache | 11 +++++++++ 2 files changed, 16 insertions(+), 19 deletions(-) create mode 100644 clang/cmake/caches/Standalone_libc_baremetal.cache diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 0ec85bc3221dd..7666670fb2c3f 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -24,49 +24,42 @@ jobs: cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Release c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04-arm build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: aarch64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-uefi-llvm include_scudo: OFF - enable_baremetal_build: OFF - os: ubuntu-24.04 build__type: Release c_compiler: clang-22 cpp_compiler: clang++-22 target: armv6m-none-eabi include_scudo: OFF - enable_baremetal_build: ON - os: ubuntu-24.04 build__type: Release c_compiler: clang-22 cpp_compiler: clang++-22 target: armv7m-none-eabi include_scudo: OFF - enable_baremetal_build: ON # TODO: add back gcc build when it is fixed # - c_compiler: gcc # cpp_compiler: g++ @@ -121,7 +114,7 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then + if [[ ${{ contains(matrix.target, '-none-') }} ]]; then cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ @@ -130,19 +123,12 @@ jobs: -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ - -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ - -DCMAKE_BUILD_TYPE=Release \ - -DLLVM_LIBC_FULL_BUILD=ON \ -DCMAKE_C_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_CXX_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_ASM_COMPILER_TARGET=${{ matrix.target }} \ - -DCMAKE_C_FLAGS=-mfloat-abi=soft \ - -DCMAKE_CXX_FLAGS=-mfloat-abi=soft \ - -DCMAKE_C_COMPILER_WORKS=ON \ - -DCMAKE_CXX_COMPILER_WORKS=ON + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache else cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ @@ -168,7 +154,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ matrix.enable_baremetal_build }} == "OFF" + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ ! contains(matrix.target, '-none-') }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} diff --git a/clang/cmake/caches/Standalone_libc_baremetal.cache b/clang/cmake/caches/Standalone_libc_baremetal.cache new file mode 100644 index 0000000000000..f727e8f5bd5ae --- /dev/null +++ b/clang/cmake/caches/Standalone_libc_baremetal.cache @@ -0,0 +1,11 @@ +set(LLVM_ENABLE_RUNTIMES "libc" CACHE STRING "") +set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") +set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") +set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") +set(CMAKE_C_FLAGS "-mfloat-abi=soft -mthumb" CACHE STRING "") +set(CMAKE_CXX_FLAGS "-mfloat-abi=soft -mthumb" CACHE STRING "") +set(CMAKE_SYSROOT "" CACHE STRING "") +set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") + +set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") From efc999f04b13a37e7acfdce12529e0d3c8befa7b Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 14:24:10 -0800 Subject: [PATCH 14/30] Try to fix target if condition. Update cache file. --- .github/workflows/libc-fullbuild-tests.yml | 8 ++++---- .../cmake/caches/Standalone_libc_baremetal.cache | 16 +++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 7666670fb2c3f..96059764fbe21 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -114,14 +114,14 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - if [[ ${{ contains(matrix.target, '-none-') }} ]]; then - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ + if [[ ${{ endsWith(matrix.target, '-none-eabi') }} ]]; then + cmake -B ${{ steps.strings.outputs.build-baremetal-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ -DCMAKE_C_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_CXX_COMPILER_TARGET=${{ matrix.target }} \ @@ -154,7 +154,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ ! contains(matrix.target, '-none-') }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ ! endsWith(matrix.target, '-none-eabi') }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} diff --git a/clang/cmake/caches/Standalone_libc_baremetal.cache b/clang/cmake/caches/Standalone_libc_baremetal.cache index f727e8f5bd5ae..0fa4bf208ac0e 100644 --- a/clang/cmake/caches/Standalone_libc_baremetal.cache +++ b/clang/cmake/caches/Standalone_libc_baremetal.cache @@ -1,11 +1,17 @@ +set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "libc" CACHE STRING "") +set(LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "") +set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") +set(LIBC_ENABLE_USE_BY_CLANG ON CACHE BOOL "") set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") -set(CMAKE_C_FLAGS "-mfloat-abi=soft -mthumb" CACHE STRING "") -set(CMAKE_CXX_FLAGS "-mfloat-abi=soft -mthumb" CACHE STRING "") set(CMAKE_SYSROOT "" CACHE STRING "") -set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") -set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") +set(LLVM_LIBC_INCLUDE_SCUDO OFF CACHE BOOL "") + +foreach(lang C;CXX;ASM) + set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") +endforeach() From 37bc7095f580223bbdae8391fe9857a1c7ea3dbc Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 14:42:38 -0800 Subject: [PATCH 15/30] Bring back enable_baremetal_build for experimentation. --- .github/workflows/libc-fullbuild-tests.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 96059764fbe21..3c5f6037b398c 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -24,42 +24,49 @@ jobs: cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Release c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04-arm build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: aarch64-unknown-linux-llvm include_scudo: ON + enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-uefi-llvm include_scudo: OFF + enable_baremetal_build: OFF - os: ubuntu-24.04 - build__type: Release + build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv6m-none-eabi include_scudo: OFF + enable_baremetal_build: ON - os: ubuntu-24.04 - build__type: Release + build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv7m-none-eabi include_scudo: OFF + enable_baremetal_build: ON # TODO: add back gcc build when it is fixed # - c_compiler: gcc # cpp_compiler: g++ @@ -114,8 +121,8 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - if [[ ${{ endsWith(matrix.target, '-none-eabi') }} ]]; then - cmake -B ${{ steps.strings.outputs.build-baremetal-output-dir }} \ + if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ @@ -154,7 +161,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ ! endsWith(matrix.target, '-none-eabi') }} + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ matrix.enable_baremetal_build }} == "OFF" run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From 97a969d1248a69123ab3e0ff160ce1768c326250 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 16:36:43 -0800 Subject: [PATCH 16/30] Add default target triple. --- .github/workflows/libc-fullbuild-tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 3c5f6037b398c..41ccc021d7d26 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -130,6 +130,7 @@ jobs: -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLLVM_DEFAULT_TARGET_TRIPLE=${{ matrix.target }} \ -DCMAKE_C_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_CXX_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_ASM_COMPILER_TARGET=${{ matrix.target }} \ From 0601f69dfec60b520ea2b1d291ddac95b2e4aec1 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 17:10:32 -0800 Subject: [PATCH 17/30] Add LIBC_TARGET_TRIPLE --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 41ccc021d7d26..45f6718eac686 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -129,7 +129,7 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ - -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLIBC_TARGET_TRIPLE=${{ matrix.target }} \ -DLLVM_DEFAULT_TARGET_TRIPLE=${{ matrix.target }} \ -DCMAKE_C_COMPILER_TARGET=${{ matrix.target }} \ -DCMAKE_CXX_COMPILER_TARGET=${{ matrix.target }} \ From e6165579d17f04d2d23fdf6b9b62fd69e2a6ca48 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 17:54:15 -0800 Subject: [PATCH 18/30] Cleanup cache file. Make it generic for all relevant baremetal targets. Add more targets to build. --- .github/workflows/libc-fullbuild-tests.yml | 36 +++++++++++++++---- .../caches/Standalone_libc_baremetal.cache | 34 ++++++++++++++++-- 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 45f6718eac686..94613163bbfbe 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -67,6 +67,34 @@ jobs: target: armv7m-none-eabi include_scudo: OFF enable_baremetal_build: ON + - os: ubuntu-24.04 + build__type: MinSizeRel + c_compiler: clang-22 + cpp_compiler: clang++-22 + target: armv7em-none-eabi + include_scudo: OFF + enable_baremetal_build: ON + - os: ubuntu-24.04 + build__type: MinSizeRel + c_compiler: clang-22 + cpp_compiler: clang++-22 + target: armv8m.main-none-eabi + include_scudo: OFF + enable_baremetal_build: ON + - os: ubuntu-24.04 + build__type: MinSizeRel + c_compiler: clang-22 + cpp_compiler: clang++-22 + target: armv8.1m.main-none-eabi + include_scudo: OFF + enable_baremetal_build: ON + - os: ubuntu-24.04 + build__type: MinSizeRel + c_compiler: clang-22 + cpp_compiler: clang++-22 + target: riscv32-unknown-elf + include_scudo: OFF + enable_baremetal_build: ON # TODO: add back gcc build when it is fixed # - c_compiler: gcc # cpp_compiler: g++ @@ -128,12 +156,8 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-baremetal-install-dir }} \ - -DLIBC_TARGET_TRIPLE=${{ matrix.target }} \ - -DLLVM_DEFAULT_TARGET_TRIPLE=${{ matrix.target }} \ - -DCMAKE_C_COMPILER_TARGET=${{ matrix.target }} \ - -DCMAKE_CXX_COMPILER_TARGET=${{ matrix.target }} \ - -DCMAKE_ASM_COMPILER_TARGET=${{ matrix.target }} \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ + -DARCH_TRIPLE="${{ matrix.target }}" -G Ninja \ -S ${{ github.workspace }}/runtimes \ -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache diff --git a/clang/cmake/caches/Standalone_libc_baremetal.cache b/clang/cmake/caches/Standalone_libc_baremetal.cache index 0fa4bf208ac0e..ad66fabab20d4 100644 --- a/clang/cmake/caches/Standalone_libc_baremetal.cache +++ b/clang/cmake/caches/Standalone_libc_baremetal.cache @@ -1,5 +1,6 @@ +message(STATUS "--- Discovered target triple: ${ARCH_TRIPLE} ---") + set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") -set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "libc" CACHE STRING "") set(LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "") @@ -9,9 +10,36 @@ set(LIBC_ENABLE_USE_BY_CLANG ON CACHE BOOL "") set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_SYSROOT "" CACHE STRING "") - set(LLVM_LIBC_INCLUDE_SCUDO OFF CACHE BOOL "") +set(LLVM_DEFAULT_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") +set(LIBC_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") +set(CMAKE_C_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") +set(CMAKE_CXX_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") +set(CMAKE_ASM_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") + +if(ARCH_TRIPLE MATCHES "^arm.*") + set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +endif() +if(ARCH_TRIPLE MATCHES "^riscv.*") + set(CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") +endif() + + foreach(lang C;CXX;ASM) - set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") + if(${ARCH_TRIPLE} STREQUAL "armv6m-none-eabi") + set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") + endif() + if(${ARCH_TRIPLE} STREQUAL "armv7m-none-eabi") + set(CMAKE_${lang}_FLAGS "-march=armv7m -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") + endif() + if(${ARCH_TRIPLE} STREQUAL "armv7em-none-eabi") + set(CMAKE_${lang}_FLAGS "-march=armv7em -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") + endif() + if(${ARCH_TRIPLE} STREQUAL "armv8m.main-none-eabi") + set(CMAKE_${lang}_FLAGS "-mfloat-abi=softfp -march=armv8m.main+fp+dsp -mcpu=cortex-m33" CACHE STRING "") + endif() + if(${ARCH_TRIPLE} STREQUAL "armv8.1m.main-none-eabi") + set(CMAKE_${lang}_FLAGS "-mfloat-abi=hard -march=armv8.1-m.main+mve.fp+fp.dp -mcpu=cortex-m55" CACHE STRING "") + endif() endforeach() From 2810c45eec933ade54e9db93360de5da2e635d5a Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 17:57:40 -0800 Subject: [PATCH 19/30] Fix missing backslash. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 94613163bbfbe..93a85c467ac7a 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -157,7 +157,7 @@ jobs: -DCMAKE_C_COMPILER_LAUNCHER=sccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DARCH_TRIPLE="${{ matrix.target }}" + -DARCH_TRIPLE="${{ matrix.target }}" \ -G Ninja \ -S ${{ github.workspace }}/runtimes \ -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache From 9c203f5765a17aee6bc77c63d712c0ce2abb941a Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 18:03:52 -0800 Subject: [PATCH 20/30] Disable tests on baremetal builders. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 93a85c467ac7a..3b96435db8be4 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -186,7 +186,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') }} && ${{ matrix.enable_baremetal_build }} == "OFF" + if: ${{ ! endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build }} == "OFF" }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From 2f4781f4dff454210cd55d38872397a7f5b60377 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 18:30:05 -0800 Subject: [PATCH 21/30] Fix ending braces. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 3b96435db8be4..ba4128a61ac39 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -186,7 +186,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ ! endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build }} == "OFF" }} + if: ${{ !endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == "OFF" }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From c00ac42d33d327c41b1f27fbf221dee2de7853ee Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 18:47:36 -0800 Subject: [PATCH 22/30] Use single quotes. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index ba4128a61ac39..2db1b84a6aa67 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -186,7 +186,7 @@ jobs: - name: Test # Skip UEFI tests until we have testing set up. - if: ${{ !endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == "OFF" }} + if: ${{ !endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == 'OFF' }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From 7f00c885f7cff2be2e1a396074be2cef3878d315 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 19:02:56 -0800 Subject: [PATCH 23/30] Drop enable_baremetal_build --- .github/workflows/libc-fullbuild-tests.yml | 75 ++++++++++------------ 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 2db1b84a6aa67..ac8567e053a37 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -24,77 +24,66 @@ jobs: cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Release c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04-arm build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: aarch64-unknown-linux-llvm include_scudo: ON - enable_baremetal_build: OFF - os: ubuntu-24.04 build_type: Debug c_compiler: clang-22 cpp_compiler: clang++-22 target: x86_64-unknown-uefi-llvm include_scudo: OFF - enable_baremetal_build: OFF - os: ubuntu-24.04 build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv6m-none-eabi include_scudo: OFF - enable_baremetal_build: ON - os: ubuntu-24.04 build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv7m-none-eabi include_scudo: OFF - enable_baremetal_build: ON - os: ubuntu-24.04 build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv7em-none-eabi include_scudo: OFF - enable_baremetal_build: ON - os: ubuntu-24.04 build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv8m.main-none-eabi include_scudo: OFF - enable_baremetal_build: ON - os: ubuntu-24.04 build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: armv8.1m.main-none-eabi include_scudo: OFF - enable_baremetal_build: ON - os: ubuntu-24.04 build__type: MinSizeRel c_compiler: clang-22 cpp_compiler: clang++-22 target: riscv32-unknown-elf include_scudo: OFF - enable_baremetal_build: ON # TODO: add back gcc build when it is fixed # - c_compiler: gcc # cpp_compiler: g++ @@ -149,33 +138,35 @@ jobs: -DCOMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED=OFF" fi - if [[ ${{ matrix.enable_baremetal_build}} == "ON" ]]; then - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DARCH_TRIPLE="${{ matrix.target }}" \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ - -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache - else - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ - -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ - $CMAKE_FLAGS - fi + case "${{ matrix.target }}" in + *-none-eabi|riscv32-unknown-elf) + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ + -DARCH_TRIPLE="${{ matrix.target }}" \ + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache + ;; + *) + cmake -B ${{ steps.strings.outputs.build-output-dir }} \ + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_C_COMPILER_LAUNCHER=sccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ + -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -G Ninja \ + -S ${{ github.workspace }}/runtimes \ + $CMAKE_FLAGS + esac - name: Build run: > @@ -185,8 +176,12 @@ jobs: --target install - name: Test - # Skip UEFI tests until we have testing set up. - if: ${{ !endsWith(matrix.target, '-uefi-llvm') && matrix.enable_baremetal_build == 'OFF' }} + # Skip UEFI and baremetal tests until we have testing set up. + if: ${{ + !endsWith(matrix.target, '-uefi-llvm') && + !endsWith(matrix.target, '-none-eabi') && + matrix.target != 'riscv32-unknown-elf' + }} run: > cmake --build ${{ steps.strings.outputs.build-output-dir }} From 500ddf274be99077aa40bd83c707084c279a02e1 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Wed, 12 Nov 2025 19:39:10 -0800 Subject: [PATCH 24/30] Cleanup cache file. --- .github/workflows/libc-fullbuild-tests.yml | 1 + clang/cmake/caches/Standalone_libc_baremetal.cache | 12 +++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index ac8567e053a37..f0550f741b100 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -166,6 +166,7 @@ jobs: -G Ninja \ -S ${{ github.workspace }}/runtimes \ $CMAKE_FLAGS + ;; esac - name: Build diff --git a/clang/cmake/caches/Standalone_libc_baremetal.cache b/clang/cmake/caches/Standalone_libc_baremetal.cache index ad66fabab20d4..642d0d11bf23e 100644 --- a/clang/cmake/caches/Standalone_libc_baremetal.cache +++ b/clang/cmake/caches/Standalone_libc_baremetal.cache @@ -1,22 +1,21 @@ +# Expects target triple to be passed as `ARCH_TRIPLE` message(STATUS "--- Discovered target triple: ${ARCH_TRIPLE} ---") set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") set(LLVM_ENABLE_RUNTIMES "libc" CACHE STRING "") -set(LLVM_ENABLE_ASSERTIONS OFF CACHE BOOL "") set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") -set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") -set(LIBC_ENABLE_USE_BY_CLANG ON CACHE BOOL "") set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_SYSROOT "" CACHE STRING "") -set(LLVM_LIBC_INCLUDE_SCUDO OFF CACHE BOOL "") -set(LLVM_DEFAULT_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") -set(LIBC_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") set(CMAKE_C_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") set(CMAKE_CXX_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") set(CMAKE_ASM_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") +set(LLVM_DEFAULT_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") +set(LIBC_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") + +set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") if(ARCH_TRIPLE MATCHES "^arm.*") set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") @@ -25,7 +24,6 @@ if(ARCH_TRIPLE MATCHES "^riscv.*") set(CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") endif() - foreach(lang C;CXX;ASM) if(${ARCH_TRIPLE} STREQUAL "armv6m-none-eabi") set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") From dbe9e260be2207d08f87ca27c8d276fa7126f684 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Thu, 13 Nov 2025 10:56:34 -0800 Subject: [PATCH 25/30] Address reviw comments. --- .github/workflows/libc-fullbuild-tests.yml | 36 ++++++++----------- .../caches/Standalone_libc_baremetal.cache | 13 ++++++- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index f0550f741b100..8f8d329b5bb0d 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -129,9 +129,20 @@ jobs: run: | export RUNTIMES="libc" + export CMAKE_FLAGS=" + -G Ninja + -S ${{ github.workspace }}/runtimes + -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -DCMAKE_C_COMPILER_LAUNCHER=sccache + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache + -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }}" + if [[ ${{ matrix.include_scudo}} == "ON" ]]; then export RUNTIMES="$RUNTIMES;compiler-rt" - export CMAKE_FLAGS=" + export CMAKE_FLAGS="$CMAKE_FLAGS -DLLVM_LIBC_INCLUDE_SCUDO=ON -DCOMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC=ON -DCOMPILER_RT_BUILD_GWP_ASAN=OFF @@ -140,31 +151,14 @@ jobs: case "${{ matrix.target }}" in *-none-eabi|riscv32-unknown-elf) - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DARCH_TRIPLE="${{ matrix.target }}" \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ + cmake -DARCH_TRIPLE="${{ matrix.target }}" \ + $CMAKE_FLAGS \ -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache ;; *) - cmake -B ${{ steps.strings.outputs.build-output-dir }} \ - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} \ - -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_C_COMPILER_LAUNCHER=sccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=sccache \ - -DCMAKE_INSTALL_PREFIX=${{ steps.strings.outputs.build-install-dir }} \ - -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ + cmake -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ -DLLVM_ENABLE_RUNTIMES="$RUNTIMES" \ -DLLVM_LIBC_FULL_BUILD=ON \ - -G Ninja \ - -S ${{ github.workspace }}/runtimes \ $CMAKE_FLAGS ;; esac diff --git a/clang/cmake/caches/Standalone_libc_baremetal.cache b/clang/cmake/caches/Standalone_libc_baremetal.cache index 642d0d11bf23e..2b4d27a9ab276 100644 --- a/clang/cmake/caches/Standalone_libc_baremetal.cache +++ b/clang/cmake/caches/Standalone_libc_baremetal.cache @@ -1,5 +1,16 @@ # Expects target triple to be passed as `ARCH_TRIPLE` -message(STATUS "--- Discovered target triple: ${ARCH_TRIPLE} ---") +# A sample invocation: +# +# cmake -S . -B build \ +# -DCMAKE_CXX_COMPILER=/usr/bin/clang \ +# -DCMAKE_C_COMPILER=/usr/bin/clang++ \ +# -DCMAKE_BUILD_TYPE=MinSizeRel \ +# -DCMAKE_C_COMPILER_LAUNCHER=ccache \ +# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ +# -DARCH_TRIPLE=riscv32-unknown-elf \ +# -G Ninja \ +# -S runtimes \ +# -C clang/cmake/caches/Standalone_libc_baremetal.cache set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") From 9a6a569c1834f33f7abccc27db1dee37fc35a12e Mon Sep 17 00:00:00 2001 From: prabhukr Date: Thu, 13 Nov 2025 12:51:39 -0800 Subject: [PATCH 26/30] Cache file location and name fix. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- .../cmake/caches/Standalone_libc_baremetal.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename clang/cmake/caches/Standalone_libc_baremetal.cache => libc/cmake/caches/Standalone_libc_baremetal.cmake (97%) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 8f8d329b5bb0d..7a456da90482e 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -153,7 +153,7 @@ jobs: *-none-eabi|riscv32-unknown-elf) cmake -DARCH_TRIPLE="${{ matrix.target }}" \ $CMAKE_FLAGS \ - -C ${{ github.workspace }}/clang/cmake/caches/Standalone_libc_baremetal.cache + -C ${{ github.workspace }}/libc/cmake/caches/Standalone_libc_baremetal.cmake ;; *) cmake -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ diff --git a/clang/cmake/caches/Standalone_libc_baremetal.cache b/libc/cmake/caches/Standalone_libc_baremetal.cmake similarity index 97% rename from clang/cmake/caches/Standalone_libc_baremetal.cache rename to libc/cmake/caches/Standalone_libc_baremetal.cmake index 2b4d27a9ab276..96e77e78f27ce 100644 --- a/clang/cmake/caches/Standalone_libc_baremetal.cache +++ b/libc/cmake/caches/Standalone_libc_baremetal.cmake @@ -10,7 +10,7 @@ # -DARCH_TRIPLE=riscv32-unknown-elf \ # -G Ninja \ # -S runtimes \ -# -C clang/cmake/caches/Standalone_libc_baremetal.cache +# -C libc/cmake/caches/Standalone_libc_baremetal.cmake set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") From 54bf5539da80c5061d1335ed84d1a90e66e2b745 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Fri, 14 Nov 2025 16:27:12 -0800 Subject: [PATCH 27/30] Break out architecture specific flags into dedicated cache files. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- .../caches/Standalone_libc_baremetal.cmake | 54 ------------------- libc/cmake/caches/armv6m-none-eabi.cmake | 7 +++ libc/cmake/caches/armv7em-none-eabi.cmake | 7 +++ libc/cmake/caches/armv7m-none-eabi.cmake | 7 +++ .../caches/armv8.1m.main-none-eabi.cmake | 7 +++ libc/cmake/caches/armv8m.main-none-eabi.cmake | 7 +++ libc/cmake/caches/baremetal_common.cmake | 17 ++++++ libc/cmake/caches/riscv32-unknown-elf.cmake | 3 ++ 9 files changed, 56 insertions(+), 55 deletions(-) delete mode 100644 libc/cmake/caches/Standalone_libc_baremetal.cmake create mode 100644 libc/cmake/caches/armv6m-none-eabi.cmake create mode 100644 libc/cmake/caches/armv7em-none-eabi.cmake create mode 100644 libc/cmake/caches/armv7m-none-eabi.cmake create mode 100644 libc/cmake/caches/armv8.1m.main-none-eabi.cmake create mode 100644 libc/cmake/caches/armv8m.main-none-eabi.cmake create mode 100644 libc/cmake/caches/baremetal_common.cmake create mode 100644 libc/cmake/caches/riscv32-unknown-elf.cmake diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 7a456da90482e..e4f156c24a08a 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -153,7 +153,7 @@ jobs: *-none-eabi|riscv32-unknown-elf) cmake -DARCH_TRIPLE="${{ matrix.target }}" \ $CMAKE_FLAGS \ - -C ${{ github.workspace }}/libc/cmake/caches/Standalone_libc_baremetal.cmake + -C ${{ github.workspace }}/libc/cmake/caches/${{ matrix.target }}.cmake ;; *) cmake -DLLVM_RUNTIME_TARGETS=${{ matrix.target }} \ diff --git a/libc/cmake/caches/Standalone_libc_baremetal.cmake b/libc/cmake/caches/Standalone_libc_baremetal.cmake deleted file mode 100644 index 96e77e78f27ce..0000000000000 --- a/libc/cmake/caches/Standalone_libc_baremetal.cmake +++ /dev/null @@ -1,54 +0,0 @@ -# Expects target triple to be passed as `ARCH_TRIPLE` -# A sample invocation: -# -# cmake -S . -B build \ -# -DCMAKE_CXX_COMPILER=/usr/bin/clang \ -# -DCMAKE_C_COMPILER=/usr/bin/clang++ \ -# -DCMAKE_BUILD_TYPE=MinSizeRel \ -# -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -# -DARCH_TRIPLE=riscv32-unknown-elf \ -# -G Ninja \ -# -S runtimes \ -# -C libc/cmake/caches/Standalone_libc_baremetal.cmake - -set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") -set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") -set(LLVM_ENABLE_RUNTIMES "libc" CACHE STRING "") -set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") -set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") -set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") -set(CMAKE_SYSROOT "" CACHE STRING "") - -set(CMAKE_C_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") -set(CMAKE_CXX_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") -set(CMAKE_ASM_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") -set(LLVM_DEFAULT_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") -set(LIBC_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") - -set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") - -if(ARCH_TRIPLE MATCHES "^arm.*") - set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -endif() -if(ARCH_TRIPLE MATCHES "^riscv.*") - set(CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") -endif() - -foreach(lang C;CXX;ASM) - if(${ARCH_TRIPLE} STREQUAL "armv6m-none-eabi") - set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") - endif() - if(${ARCH_TRIPLE} STREQUAL "armv7m-none-eabi") - set(CMAKE_${lang}_FLAGS "-march=armv7m -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") - endif() - if(${ARCH_TRIPLE} STREQUAL "armv7em-none-eabi") - set(CMAKE_${lang}_FLAGS "-march=armv7em -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") - endif() - if(${ARCH_TRIPLE} STREQUAL "armv8m.main-none-eabi") - set(CMAKE_${lang}_FLAGS "-mfloat-abi=softfp -march=armv8m.main+fp+dsp -mcpu=cortex-m33" CACHE STRING "") - endif() - if(${ARCH_TRIPLE} STREQUAL "armv8.1m.main-none-eabi") - set(CMAKE_${lang}_FLAGS "-mfloat-abi=hard -march=armv8.1-m.main+mve.fp+fp.dp -mcpu=cortex-m55" CACHE STRING "") - endif() -endforeach() diff --git a/libc/cmake/caches/armv6m-none-eabi.cmake b/libc/cmake/caches/armv6m-none-eabi.cmake new file mode 100644 index 0000000000000..aec741a839ed0 --- /dev/null +++ b/libc/cmake/caches/armv6m-none-eabi.cmake @@ -0,0 +1,7 @@ +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") + +foreach(lang C;CXX;ASM) + set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") +endforeach() + +include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) diff --git a/libc/cmake/caches/armv7em-none-eabi.cmake b/libc/cmake/caches/armv7em-none-eabi.cmake new file mode 100644 index 0000000000000..ac159f2815a7d --- /dev/null +++ b/libc/cmake/caches/armv7em-none-eabi.cmake @@ -0,0 +1,7 @@ +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") + +foreach(lang C;CXX;ASM) + set(CMAKE_${lang}_FLAGS "-march=armv7em -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") +endforeach() + +include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) diff --git a/libc/cmake/caches/armv7m-none-eabi.cmake b/libc/cmake/caches/armv7m-none-eabi.cmake new file mode 100644 index 0000000000000..eeb06538b7688 --- /dev/null +++ b/libc/cmake/caches/armv7m-none-eabi.cmake @@ -0,0 +1,7 @@ +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") + +foreach(lang C;CXX;ASM) + set(CMAKE_${lang}_FLAGS "-march=armv7m -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") +endforeach() + +include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) diff --git a/libc/cmake/caches/armv8.1m.main-none-eabi.cmake b/libc/cmake/caches/armv8.1m.main-none-eabi.cmake new file mode 100644 index 0000000000000..1334ba4cd4a87 --- /dev/null +++ b/libc/cmake/caches/armv8.1m.main-none-eabi.cmake @@ -0,0 +1,7 @@ +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") + +foreach(lang C;CXX;ASM) + set(CMAKE_${lang}_FLAGS "-mfloat-abi=hard -march=armv8.1-m.main+mve.fp+fp.dp -mcpu=cortex-m55" CACHE STRING "") +endforeach() + +include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) diff --git a/libc/cmake/caches/armv8m.main-none-eabi.cmake b/libc/cmake/caches/armv8m.main-none-eabi.cmake new file mode 100644 index 0000000000000..c0b7df50582dc --- /dev/null +++ b/libc/cmake/caches/armv8m.main-none-eabi.cmake @@ -0,0 +1,7 @@ +set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") + +foreach(lang C;CXX;ASM) + set(CMAKE_${lang}_FLAGS "-mfloat-abi=softfp -march=armv8m.main+fp+dsp -mcpu=cortex-m33" CACHE STRING "") +endforeach() + +include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) diff --git a/libc/cmake/caches/baremetal_common.cmake b/libc/cmake/caches/baremetal_common.cmake new file mode 100644 index 0000000000000..b6feb86e26ce8 --- /dev/null +++ b/libc/cmake/caches/baremetal_common.cmake @@ -0,0 +1,17 @@ +# Expects target triple to be passed as `ARCH_TRIPLE` + +set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") +set(LLVM_ENABLE_RUNTIMES "libc" CACHE STRING "") +set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") +set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") +set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") +set(CMAKE_SYSROOT "" CACHE STRING "") + +set(CMAKE_C_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") +set(CMAKE_CXX_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") +set(CMAKE_ASM_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") +set(LLVM_DEFAULT_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") +set(LIBC_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") + +set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") diff --git a/libc/cmake/caches/riscv32-unknown-elf.cmake b/libc/cmake/caches/riscv32-unknown-elf.cmake new file mode 100644 index 0000000000000..aa9f65f03a861 --- /dev/null +++ b/libc/cmake/caches/riscv32-unknown-elf.cmake @@ -0,0 +1,3 @@ +set(CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") + +include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) From 4a3a8ca15974930a91b7e1fd3b8f6172809e13fd Mon Sep 17 00:00:00 2001 From: prabhukr Date: Fri, 14 Nov 2025 16:36:56 -0800 Subject: [PATCH 28/30] Set ARCH_TRIPLE from cache files and not yml file. --- .github/workflows/libc-fullbuild-tests.yml | 1 - libc/cmake/caches/armv6m-none-eabi.cmake | 1 + libc/cmake/caches/armv7em-none-eabi.cmake | 1 + libc/cmake/caches/armv7m-none-eabi.cmake | 1 + libc/cmake/caches/armv8.1m.main-none-eabi.cmake | 1 + libc/cmake/caches/armv8m.main-none-eabi.cmake | 1 + libc/cmake/caches/riscv32-unknown-elf.cmake | 1 + 7 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index e4f156c24a08a..9c2c951031847 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -151,7 +151,6 @@ jobs: case "${{ matrix.target }}" in *-none-eabi|riscv32-unknown-elf) - cmake -DARCH_TRIPLE="${{ matrix.target }}" \ $CMAKE_FLAGS \ -C ${{ github.workspace }}/libc/cmake/caches/${{ matrix.target }}.cmake ;; diff --git a/libc/cmake/caches/armv6m-none-eabi.cmake b/libc/cmake/caches/armv6m-none-eabi.cmake index aec741a839ed0..60665f70515ac 100644 --- a/libc/cmake/caches/armv6m-none-eabi.cmake +++ b/libc/cmake/caches/armv6m-none-eabi.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +set(ARCH_TRIPLE "armv6m-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") diff --git a/libc/cmake/caches/armv7em-none-eabi.cmake b/libc/cmake/caches/armv7em-none-eabi.cmake index ac159f2815a7d..d486d9fd4d3a5 100644 --- a/libc/cmake/caches/armv7em-none-eabi.cmake +++ b/libc/cmake/caches/armv7em-none-eabi.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +set(ARCH_TRIPLE "armv7em-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-march=armv7em -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") diff --git a/libc/cmake/caches/armv7m-none-eabi.cmake b/libc/cmake/caches/armv7m-none-eabi.cmake index eeb06538b7688..357633924584a 100644 --- a/libc/cmake/caches/armv7m-none-eabi.cmake +++ b/libc/cmake/caches/armv7m-none-eabi.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +set(ARCH_TRIPLE "armv7m-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-march=armv7m -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") diff --git a/libc/cmake/caches/armv8.1m.main-none-eabi.cmake b/libc/cmake/caches/armv8.1m.main-none-eabi.cmake index 1334ba4cd4a87..0bb1a0d5ba741 100644 --- a/libc/cmake/caches/armv8.1m.main-none-eabi.cmake +++ b/libc/cmake/caches/armv8.1m.main-none-eabi.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +set(ARCH_TRIPLE "armv8.1m.main-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-mfloat-abi=hard -march=armv8.1-m.main+mve.fp+fp.dp -mcpu=cortex-m55" CACHE STRING "") diff --git a/libc/cmake/caches/armv8m.main-none-eabi.cmake b/libc/cmake/caches/armv8m.main-none-eabi.cmake index c0b7df50582dc..0c0342799893d 100644 --- a/libc/cmake/caches/armv8m.main-none-eabi.cmake +++ b/libc/cmake/caches/armv8m.main-none-eabi.cmake @@ -1,4 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") +set(ARCH_TRIPLE "armv8m.main-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-mfloat-abi=softfp -march=armv8m.main+fp+dsp -mcpu=cortex-m33" CACHE STRING "") diff --git a/libc/cmake/caches/riscv32-unknown-elf.cmake b/libc/cmake/caches/riscv32-unknown-elf.cmake index aa9f65f03a861..db8d645d48635 100644 --- a/libc/cmake/caches/riscv32-unknown-elf.cmake +++ b/libc/cmake/caches/riscv32-unknown-elf.cmake @@ -1,3 +1,4 @@ set(CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") +set(ARCH_TRIPLE "riscv32-unknown-elf" CACHE STRING "") include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake) From bccaf16839ced8d3f40eee113de1b057c8036d26 Mon Sep 17 00:00:00 2001 From: prabhukr Date: Fri, 14 Nov 2025 16:40:23 -0800 Subject: [PATCH 29/30] Kinda important to set the command name. --- .github/workflows/libc-fullbuild-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 9c2c951031847..79194427ba1e3 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -151,7 +151,7 @@ jobs: case "${{ matrix.target }}" in *-none-eabi|riscv32-unknown-elf) - $CMAKE_FLAGS \ + cmake $CMAKE_FLAGS \ -C ${{ github.workspace }}/libc/cmake/caches/${{ matrix.target }}.cmake ;; *) From 384331f857e31698d4c06713939fbefd7ba613fb Mon Sep 17 00:00:00 2001 From: prabhukr Date: Mon, 17 Nov 2025 09:07:22 -0800 Subject: [PATCH 30/30] Rename ARCH_TRIPLE and address other review comments. --- .github/workflows/libc-fullbuild-tests.yml | 3 ++- libc/cmake/caches/armv6m-none-eabi.cmake | 2 +- libc/cmake/caches/armv7em-none-eabi.cmake | 2 +- libc/cmake/caches/armv7m-none-eabi.cmake | 2 +- libc/cmake/caches/armv8.1m.main-none-eabi.cmake | 2 +- libc/cmake/caches/armv8m.main-none-eabi.cmake | 2 +- libc/cmake/caches/baremetal_common.cmake | 16 ++++++++++------ libc/cmake/caches/riscv32-unknown-elf.cmake | 2 +- 8 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.github/workflows/libc-fullbuild-tests.yml b/.github/workflows/libc-fullbuild-tests.yml index 79194427ba1e3..c5b7f606a115a 100644 --- a/.github/workflows/libc-fullbuild-tests.yml +++ b/.github/workflows/libc-fullbuild-tests.yml @@ -133,8 +133,9 @@ jobs: -G Ninja -S ${{ github.workspace }}/runtimes -B ${{ steps.strings.outputs.build-output-dir }} - -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_ASM_COMPILER=${{ matrix.c_compiler }} -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache diff --git a/libc/cmake/caches/armv6m-none-eabi.cmake b/libc/cmake/caches/armv6m-none-eabi.cmake index 60665f70515ac..1f463ae5c0ead 100644 --- a/libc/cmake/caches/armv6m-none-eabi.cmake +++ b/libc/cmake/caches/armv6m-none-eabi.cmake @@ -1,5 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -set(ARCH_TRIPLE "armv6m-none-eabi" CACHE STRING "") +set(RUNTIMES_TARGET_TRIPLE "armv6m-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-march=armv6m -mcpu=cortex-m0plus -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") diff --git a/libc/cmake/caches/armv7em-none-eabi.cmake b/libc/cmake/caches/armv7em-none-eabi.cmake index d486d9fd4d3a5..afbe9c87dffe1 100644 --- a/libc/cmake/caches/armv7em-none-eabi.cmake +++ b/libc/cmake/caches/armv7em-none-eabi.cmake @@ -1,5 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -set(ARCH_TRIPLE "armv7em-none-eabi" CACHE STRING "") +set(RUNTIMES_TARGET_TRIPLE "armv7em-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-march=armv7em -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") diff --git a/libc/cmake/caches/armv7m-none-eabi.cmake b/libc/cmake/caches/armv7m-none-eabi.cmake index 357633924584a..796adb2f31148 100644 --- a/libc/cmake/caches/armv7m-none-eabi.cmake +++ b/libc/cmake/caches/armv7m-none-eabi.cmake @@ -1,5 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -set(ARCH_TRIPLE "armv7m-none-eabi" CACHE STRING "") +set(RUNTIMES_TARGET_TRIPLE "armv7m-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-march=armv7m -mcpu=cortex-m4 -mfloat-abi=soft -Wno-atomic-alignment \"-Dvfprintf(stream, format, vlist)=vprintf(format, vlist)\" \"-Dfprintf(stream, format, ...)=printf(format)\" \"-Dfputs(string, stream)=puts(string)\" -D_LIBCPP_PRINT=1" CACHE STRING "") diff --git a/libc/cmake/caches/armv8.1m.main-none-eabi.cmake b/libc/cmake/caches/armv8.1m.main-none-eabi.cmake index 0bb1a0d5ba741..4095facce46ac 100644 --- a/libc/cmake/caches/armv8.1m.main-none-eabi.cmake +++ b/libc/cmake/caches/armv8.1m.main-none-eabi.cmake @@ -1,5 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -set(ARCH_TRIPLE "armv8.1m.main-none-eabi" CACHE STRING "") +set(RUNTIMES_TARGET_TRIPLE "armv8.1m.main-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-mfloat-abi=hard -march=armv8.1-m.main+mve.fp+fp.dp -mcpu=cortex-m55" CACHE STRING "") diff --git a/libc/cmake/caches/armv8m.main-none-eabi.cmake b/libc/cmake/caches/armv8m.main-none-eabi.cmake index 0c0342799893d..4b69f6a822e71 100644 --- a/libc/cmake/caches/armv8m.main-none-eabi.cmake +++ b/libc/cmake/caches/armv8m.main-none-eabi.cmake @@ -1,5 +1,5 @@ set(CMAKE_SYSTEM_PROCESSOR arm CACHE STRING "") -set(ARCH_TRIPLE "armv8m.main-none-eabi" CACHE STRING "") +set(RUNTIMES_TARGET_TRIPLE "armv8m.main-none-eabi" CACHE STRING "") foreach(lang C;CXX;ASM) set(CMAKE_${lang}_FLAGS "-mfloat-abi=softfp -march=armv8m.main+fp+dsp -mcpu=cortex-m33" CACHE STRING "") diff --git a/libc/cmake/caches/baremetal_common.cmake b/libc/cmake/caches/baremetal_common.cmake index b6feb86e26ce8..c0d665d790393 100644 --- a/libc/cmake/caches/baremetal_common.cmake +++ b/libc/cmake/caches/baremetal_common.cmake @@ -1,4 +1,4 @@ -# Expects target triple to be passed as `ARCH_TRIPLE` +# Expects target triple to be passed as `RUNTIMES_TARGET_TRIPLE` set(CMAKE_SYSTEM_NAME Generic CACHE STRING "") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY CACHE STRING "") @@ -7,11 +7,15 @@ set(LLVM_INCLUDE_TESTS OFF CACHE BOOL "") set(CMAKE_C_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_CXX_COMPILER_WORKS ON CACHE BOOL "") set(CMAKE_SYSROOT "" CACHE STRING "") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) -set(CMAKE_C_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") -set(CMAKE_CXX_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") -set(CMAKE_ASM_COMPILER_TARGET ${ARCH_TRIPLE} CACHE STRING "") -set(LLVM_DEFAULT_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") -set(LIBC_TARGET_TRIPLE ${ARCH_TRIPLE} CACHE STRING "") +set(CMAKE_C_COMPILER_TARGET ${RUNTIMES_TARGET_TRIPLE} CACHE STRING "") +set(CMAKE_CXX_COMPILER_TARGET ${RUNTIMES_TARGET_TRIPLE} CACHE STRING "") +set(CMAKE_ASM_COMPILER_TARGET ${RUNTIMES_TARGET_TRIPLE} CACHE STRING "") +set(LLVM_DEFAULT_TARGET_TRIPLE ${RUNTIMES_TARGET_TRIPLE} CACHE STRING "") +set(LIBC_TARGET_TRIPLE ${RUNTIMES_TARGET_TRIPLE} CACHE STRING "") set(LLVM_LIBC_FULL_BUILD "ON" CACHE BOOL "") diff --git a/libc/cmake/caches/riscv32-unknown-elf.cmake b/libc/cmake/caches/riscv32-unknown-elf.cmake index db8d645d48635..960fb2bb51a4f 100644 --- a/libc/cmake/caches/riscv32-unknown-elf.cmake +++ b/libc/cmake/caches/riscv32-unknown-elf.cmake @@ -1,4 +1,4 @@ set(CMAKE_SYSTEM_PROCESSOR RISCV CACHE STRING "") -set(ARCH_TRIPLE "riscv32-unknown-elf" CACHE STRING "") +set(RUNTIMES_TARGET_TRIPLE "riscv32-unknown-elf" CACHE STRING "") include(${CMAKE_CURRENT_LIST_DIR}/baremetal_common.cmake)