File tree Expand file tree Collapse file tree 3 files changed +23
-1
lines changed
samples/arm-picolibc-eabi
scripts/build/companion_libs Expand file tree Collapse file tree 3 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,16 @@ config LIBC_PICOLIBC_GCC_LIBSTDCXX
2020 picolibc. This version is linked when "--specs=picolibcpp.specs"
2121 is specified.
2222
23+ config LIBC_PICOLIBC_GCC_LIBSTDCXX_NOEXCEPT
24+ bool
25+ prompt "Compile libstdc++ picolibc variant with exceptions disabled"
26+ default y
27+ depends on CC_LANG_CXX
28+ help
29+ This option compiles an additional target libstdc++ for use with
30+ picolibc. This version is linked when "--specs=picolibcpp_noexcept.specs"
31+ is specified.
32+
2333config LIBC_PICOLIBC_CXA_ATEXIT
2434 def_bool y
2535 select LIBC_PROVIDES_CXA_ATEXIT
Original file line number Diff line number Diff line change @@ -9,3 +9,4 @@ CT_CC_GCC_MULTILIB_LIST="rmprofile"
99CT_CC_GCC_CONFIG_TLS=y
1010CT_CC_LANG_CXX=y
1111CT_COMP_LIBS_PICOLIBC=y
12+ CT_LIBC_PICOLIBC_GCC_LIBSTDCXX_NOEXCEPT=y
Original file line number Diff line number Diff line change @@ -27,8 +27,10 @@ do_picolibc_extract() {
2727# flag for libstdc++ "picolibc" variant.
2828do_cc_libstdcxx_picolibc ()
2929{
30+ local variant=" $1 "
3031 local -a final_opts
3132 local final_backend
33+ local suffix=
3234
3335 if [ " ${CT_LIBC_PICOLIBC_GCC_LIBSTDCXX} " = " y" ]; then
3436 final_opts+=( " host=${CT_HOST} " )
@@ -46,6 +48,10 @@ do_cc_libstdcxx_picolibc()
4648 if [ " ${CT_LIBC_PICOLIBC_ENABLE_TARGET_OPTSPACE} " = " y" ]; then
4749 final_opts+=( " enable_optspace=yes" )
4850 fi
51+ if [ " ${variant} " = " noexcept" ]; then
52+ final_opts+=( " extra_cxxflags_for_target=-fno-exceptions" )
53+ suffix=" -noexcept"
54+ fi
4955
5056 if [ " ${CT_BARE_METAL} " = " y" ]; then
5157 final_opts+=( " mode=baremetal" )
@@ -61,8 +67,9 @@ do_cc_libstdcxx_picolibc()
6167 fi
6268
6369 CT_DoStep INFO " Installing libstdc++ picolibc"
64- CT_mkdir_pushd " ${CT_BUILD_DIR} /build-cc-libstdcxx-picolibc"
70+ CT_mkdir_pushd " ${CT_BUILD_DIR} /build-cc-libstdcxx-picolibc${suffix} "
6571 " ${final_backend} " " ${final_opts[@]} "
72+ # TODO: suffix
6673 CT_Popd
6774
6875 CT_EndStep
170177
171178 do_cc_libstdcxx_picolibc
172179
180+ if [ " ${CT_LIBC_PICOLIBC_GCC_LIBSTDCXX_NOEXCEPT} " = " y" ]; then
181+ do_cc_libstdcxx_picolibc noexcept
182+ fi
183+
173184 if [ " ${CT_STRIP_TARGET_TOOLCHAIN_LIBRARIES} " = " y" ]; then
174185
175186 CT_DoStep INFO " Stripping Picolibc library"
You can’t perform that action at this time.
0 commit comments