mirror of
https://github.com/intel/llvm.git
synced 2026-01-17 06:40:01 +08:00
[libc++] Add a picolibc test configuration with exceptions enabled (#75462)
This commit is contained in:
@@ -13,17 +13,18 @@ set(COMPILER_RT_BUILD_XRAY OFF CACHE BOOL "")
|
||||
set(COMPILER_RT_DEFAULT_TARGET_ONLY ON CACHE BOOL "")
|
||||
set(LIBCXXABI_BAREMETAL ON CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_ASSERTIONS OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_EXCEPTIONS ON CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_STATIC ON CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_STATIC_UNWINDER ON CACHE BOOL "")
|
||||
set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
|
||||
set(LIBCXXABI_USE_COMPILER_RT ON CACHE BOOL "")
|
||||
set(LIBCXXABI_USE_LLVM_UNWINDER ON CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_EXCEPTIONS ON CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE STRING "")
|
||||
set(LIBCXX_ENABLE_MONOTONIC_CLOCK OFF CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_RTTI ON CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
|
||||
|
||||
@@ -224,6 +224,13 @@ steps:
|
||||
arch: aarch64
|
||||
<<: *common
|
||||
|
||||
- label: Armv7-M picolibc -fno-exceptions
|
||||
command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions
|
||||
agents:
|
||||
queue: libcxx-builders-linaro-arm
|
||||
arch: aarch64
|
||||
<<: *common
|
||||
|
||||
- group: AIX
|
||||
steps:
|
||||
- label: AIX (32-bit)
|
||||
|
||||
@@ -203,6 +203,43 @@ function check-cxx-benchmarks() {
|
||||
${NINJA} -vC "${BUILD_DIR}" check-cxx-benchmarks
|
||||
}
|
||||
|
||||
function test-armv7m-picolibc() {
|
||||
clean
|
||||
|
||||
# To make it easier to get this builder up and running, build picolibc
|
||||
# from scratch. Anecdotally, the build-picolibc script takes about 16 seconds.
|
||||
# This could be optimised by building picolibc into the Docker container.
|
||||
${MONOREPO_ROOT}/libcxx/utils/ci/build-picolibc.sh \
|
||||
--build-dir "${BUILD_DIR}" \
|
||||
--install-dir "${INSTALL_DIR}" \
|
||||
--target armv7m-none-eabi
|
||||
|
||||
echo "--- Generating CMake"
|
||||
flags="--sysroot=${INSTALL_DIR}"
|
||||
${CMAKE} \
|
||||
-S "${MONOREPO_ROOT}/compiler-rt" \
|
||||
-B "${BUILD_DIR}/compiler-rt" \
|
||||
-GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
|
||||
-DCMAKE_C_FLAGS="${flags}" \
|
||||
-DCMAKE_CXX_FLAGS="${flags}" \
|
||||
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
|
||||
"${@}"
|
||||
generate-cmake \
|
||||
-DLIBCXX_TEST_CONFIG="armv7m-picolibc-libc++.cfg.in" \
|
||||
-DLIBCXXABI_TEST_CONFIG="armv7m-picolibc-libc++abi.cfg.in" \
|
||||
-DLIBUNWIND_TEST_CONFIG="armv7m-picolibc-libunwind.cfg.in" \
|
||||
-DCMAKE_C_FLAGS="${flags}" \
|
||||
-DCMAKE_CXX_FLAGS="${flags}" \
|
||||
"${@}"
|
||||
|
||||
${NINJA} -vC "${BUILD_DIR}/compiler-rt" install
|
||||
mv "${BUILD_DIR}/install/lib/armv7m-none-eabi"/* "${BUILD_DIR}/install/lib"
|
||||
|
||||
check-runtimes
|
||||
}
|
||||
|
||||
# Print the version of a few tools to aid diagnostics in some cases
|
||||
${CMAKE} --version
|
||||
${NINJA} --version
|
||||
@@ -616,39 +653,16 @@ armv7-no-exceptions)
|
||||
check-runtimes
|
||||
;;
|
||||
armv7m-picolibc)
|
||||
clean
|
||||
|
||||
# To make it easier to get this builder up and running, build picolibc
|
||||
# from scratch. Anecdotally, the build-picolibc script takes about 16 seconds.
|
||||
# This could be optimised by building picolibc into the Docker container.
|
||||
${MONOREPO_ROOT}/libcxx/utils/ci/build-picolibc.sh \
|
||||
--build-dir "${BUILD_DIR}" \
|
||||
--install-dir "${INSTALL_DIR}" \
|
||||
--target armv7m-none-eabi
|
||||
|
||||
echo "--- Generating CMake"
|
||||
flags="--sysroot=${INSTALL_DIR}"
|
||||
${CMAKE} \
|
||||
-S "${MONOREPO_ROOT}/compiler-rt" \
|
||||
-B "${BUILD_DIR}/compiler-rt" \
|
||||
-GNinja -DCMAKE_MAKE_PROGRAM="${NINJA}" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
|
||||
test-armv7m-picolibc \
|
||||
-C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7M-picolibc.cmake"
|
||||
;;
|
||||
armv7m-picolibc-no-exceptions)
|
||||
test-armv7m-picolibc \
|
||||
-C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7M-picolibc.cmake" \
|
||||
-DCMAKE_C_FLAGS="${flags}" \
|
||||
-DCMAKE_CXX_FLAGS="${flags}" \
|
||||
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
|
||||
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Armv7M-picolibc.cmake" \
|
||||
-DLIBCXX_TEST_CONFIG="armv7m-picolibc-libc++.cfg.in" \
|
||||
-DLIBCXXABI_TEST_CONFIG="armv7m-picolibc-libc++abi.cfg.in" \
|
||||
-DLIBUNWIND_TEST_CONFIG="armv7m-picolibc-libunwind.cfg.in" \
|
||||
-DCMAKE_C_FLAGS="${flags}" \
|
||||
-DCMAKE_CXX_FLAGS="${flags}"
|
||||
|
||||
${NINJA} -vC "${BUILD_DIR}/compiler-rt" install
|
||||
mv "${BUILD_DIR}/install/lib/armv7m-none-eabi"/* "${BUILD_DIR}/install/lib"
|
||||
|
||||
check-runtimes
|
||||
-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
|
||||
-DLIBCXXABI_ENABLE_STATIC_UNWINDER=OFF \
|
||||
-DLIBCXX_ENABLE_EXCEPTIONS=OFF \
|
||||
-DLIBCXX_ENABLE_RTTI=OFF
|
||||
;;
|
||||
clang-cl-dll)
|
||||
clean
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
// 1b00fc5d8133 made it in the dylib in macOS 10.11
|
||||
// XFAIL: stdlib=apple-libc++ && target={{.+}}-apple-macosx10.{{9|10}}
|
||||
|
||||
// mps2-an385 machine used for testing of picolibc has just 4 MB of "flash"
|
||||
// memory and this test requires almost 5 MB
|
||||
// UNSUPPORTED: LIBCXX-PICOLIBC-FIXME
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
|
||||
Reference in New Issue
Block a user