Some baremetal applications might require support from libstdc++. On newlib based toolchains, libstdc++ can be built as a static library that applications can then link against it.
Pass libsdtc++-(static)dev to LIBC_DEPENDENCIES allowing the library to be present for cross compilation as well as on sdk builds. This also requires to modify the gcc-runtime recipe to explictly build only libsdtc++ correctly. Signed-off-by: Alejandro Enedino Hernandez Samaniego <[email protected]> --- meta/conf/distro/include/tclibc-newlib.inc | 7 +++---- meta/recipes-devtools/gcc/gcc-runtime.inc | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/meta/conf/distro/include/tclibc-newlib.inc b/meta/conf/distro/include/tclibc-newlib.inc index 896c0b1..8338003 100644 --- a/meta/conf/distro/include/tclibc-newlib.inc +++ b/meta/conf/distro/include/tclibc-newlib.inc @@ -25,12 +25,11 @@ LIBC_DEPENDENCIES = "\ libgloss-dbg \ libgcc-dev \ libgcc-dbg \ + libstdc++-dev \ + libstdc++-staticdev \ " -# compilerlibs defaults to gcc-runtime, but we get runtime from libgloss -# we set ASSUME_PROVIDED because we cant set PREFERRED_PROVIDER -# for compilerlibs since its overridden by tcmode-default -ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}compilerlibs virtual/crypt" +ASSUME_PROVIDED += "virtual/crypt" # Its useful to be able to extend newlib, but we dont provide a native variant of libgloss NEWLIB_EXTENDED ?= "libgloss libgcc" diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc index d3f8ae8..f035fbd 100644 --- a/meta/recipes-devtools/gcc/gcc-runtime.inc +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc @@ -17,6 +17,9 @@ EXTRA_OECONF_PATHS = "\ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu" EXTRA_OECONF_append = " --cache-file=${B}/config.cache" +EXTRA_OECONF_remove_libc-newlib = "--enable-symvers=gnu" +EXTRA_OECONF_append_libc-newlib = " --with-newlib" + # Disable ifuncs for libatomic on arm conflicts -march/-mcpu EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no " @@ -33,6 +36,9 @@ RUNTIMELIBITM_riscv64 = "" RUNTIMELIBSSP ?= "" RUNTIMELIBSSP_mingw32 ?= "libssp" +# Only build libstdc++ for newlib +RUNTIMETARGET_libc-newlib = "libstdc++-v3" + RUNTIMETARGET = "${RUNTIMELIBSSP} libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \ ${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \ " -- 2.7.4 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
