@@ -203,6 +203,43 @@ function check-cxx-benchmarks() {
203
203
${NINJA} -vC " ${BUILD_DIR} " check-cxx-benchmarks
204
204
}
205
205
206
+ function test-armv7m-picolibc() {
207
+ clean
208
+
209
+ # To make it easier to get this builder up and running, build picolibc
210
+ # from scratch. Anecdotally, the build-picolibc script takes about 16 seconds.
211
+ # This could be optimised by building picolibc into the Docker container.
212
+ ${MONOREPO_ROOT} /libcxx/utils/ci/build-picolibc.sh \
213
+ --build-dir " ${BUILD_DIR} " \
214
+ --install-dir " ${INSTALL_DIR} " \
215
+ --target armv7m-none-eabi
216
+
217
+ echo " --- Generating CMake"
218
+ flags=" --sysroot=${INSTALL_DIR} "
219
+ ${CMAKE} \
220
+ -S " ${MONOREPO_ROOT} /compiler-rt" \
221
+ -B " ${BUILD_DIR} /compiler-rt" \
222
+ -GNinja -DCMAKE_MAKE_PROGRAM=" ${NINJA} " \
223
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
224
+ -DCMAKE_INSTALL_PREFIX=" ${INSTALL_DIR} " \
225
+ -DCMAKE_C_FLAGS=" ${flags} " \
226
+ -DCMAKE_CXX_FLAGS=" ${flags} " \
227
+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
228
+ " ${@ } "
229
+ generate-cmake \
230
+ -DLIBCXX_TEST_CONFIG=" armv7m-picolibc-libc++.cfg.in" \
231
+ -DLIBCXXABI_TEST_CONFIG=" armv7m-picolibc-libc++abi.cfg.in" \
232
+ -DLIBUNWIND_TEST_CONFIG=" armv7m-picolibc-libunwind.cfg.in" \
233
+ -DCMAKE_C_FLAGS=" ${flags} " \
234
+ -DCMAKE_CXX_FLAGS=" ${flags} " \
235
+ " ${@ } "
236
+
237
+ ${NINJA} -vC " ${BUILD_DIR} /compiler-rt" install
238
+ mv " ${BUILD_DIR} /install/lib/armv7m-none-eabi" /* " ${BUILD_DIR} /install/lib"
239
+
240
+ check-runtimes
241
+ }
242
+
206
243
# Print the version of a few tools to aid diagnostics in some cases
207
244
${CMAKE} --version
208
245
${NINJA} --version
@@ -616,39 +653,16 @@ armv7-no-exceptions)
616
653
check-runtimes
617
654
;;
618
655
armv7m-picolibc)
619
- clean
620
-
621
- # To make it easier to get this builder up and running, build picolibc
622
- # from scratch. Anecdotally, the build-picolibc script takes about 16 seconds.
623
- # This could be optimised by building picolibc into the Docker container.
624
- ${MONOREPO_ROOT} /libcxx/utils/ci/build-picolibc.sh \
625
- --build-dir " ${BUILD_DIR} " \
626
- --install-dir " ${INSTALL_DIR} " \
627
- --target armv7m-none-eabi
628
-
629
- echo " --- Generating CMake"
630
- flags=" --sysroot=${INSTALL_DIR} "
631
- ${CMAKE} \
632
- -S " ${MONOREPO_ROOT} /compiler-rt" \
633
- -B " ${BUILD_DIR} /compiler-rt" \
634
- -GNinja -DCMAKE_MAKE_PROGRAM=" ${NINJA} " \
635
- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
636
- -DCMAKE_INSTALL_PREFIX=" ${INSTALL_DIR} " \
656
+ test-armv7m-picolibc \
657
+ -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Armv7M-picolibc.cmake"
658
+ ;;
659
+ armv7m-picolibc-no-exceptions)
660
+ test-armv7m-picolibc \
637
661
-C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Armv7M-picolibc.cmake" \
638
- -DCMAKE_C_FLAGS=" ${flags} " \
639
- -DCMAKE_CXX_FLAGS=" ${flags} " \
640
- -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON
641
- generate-cmake -C " ${MONOREPO_ROOT} /libcxx/cmake/caches/Armv7M-picolibc.cmake" \
642
- -DLIBCXX_TEST_CONFIG=" armv7m-picolibc-libc++.cfg.in" \
643
- -DLIBCXXABI_TEST_CONFIG=" armv7m-picolibc-libc++abi.cfg.in" \
644
- -DLIBUNWIND_TEST_CONFIG=" armv7m-picolibc-libunwind.cfg.in" \
645
- -DCMAKE_C_FLAGS=" ${flags} " \
646
- -DCMAKE_CXX_FLAGS=" ${flags} "
647
-
648
- ${NINJA} -vC " ${BUILD_DIR} /compiler-rt" install
649
- mv " ${BUILD_DIR} /install/lib/armv7m-none-eabi" /* " ${BUILD_DIR} /install/lib"
650
-
651
- check-runtimes
662
+ -DLIBCXXABI_ENABLE_EXCEPTIONS=OFF \
663
+ -DLIBCXXABI_ENABLE_STATIC_UNWINDER=OFF \
664
+ -DLIBCXX_ENABLE_EXCEPTIONS=OFF \
665
+ -DLIBCXX_ENABLE_RTTI=OFF
652
666
;;
653
667
clang-cl-dll)
654
668
clean
0 commit comments