From 34c98ae16d995a21e95f1af7f5535ee3b4cbed38 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 31 Jul 2019 17:08:37 -0700 Subject: libcxx: Provide libunwind and fix risv support Use llvm libunwind as default for clang toolchain Signed-off-by: Khem Raj --- classes/clang.bbclass | 12 ++++++++++-- recipes-devtools/clang/libcxx_git.bb | 20 +++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/classes/clang.bbclass b/classes/clang.bbclass index 93d3581..cfd92d9 100644 --- a/classes/clang.bbclass +++ b/classes/clang.bbclass @@ -8,7 +8,12 @@ RANLIB_toolchain-clang = "${HOST_PREFIX}llvm-ranlib" AR_toolchain-clang = "${HOST_PREFIX}llvm-ar" NM_toolchain-clang = "${HOST_PREFIX}llvm-nm" -COMPILER_RT ??= "--rtlib=compiler-rt --unwindlib=libunwind" +COMPILER_RT ??= "--rtlib=compiler-rt ${UNWINDLIB}" + +UNWINDLIB ??= "--unwindlib=libunwind" +UNWINDLIB_riscv64 = "--unwindlib=libgcc" +UNWINDLIB_riscv32 = "--unwindlib=libgcc" + LIBCPLUSPLUS ??= "--stdlib=libc++" COMPILER_RT_toolchain-gcc = "" @@ -62,5 +67,8 @@ def clang_dep_prepend(d): BASEDEPENDS_remove_toolchain-clang_class-target = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs" BASEDEPENDS_append_toolchain-clang_class-target = "${@clang_dep_prepend(d)}" -PREFERRED_PROVIDER_libunwind = "libunwind" +PREFERRED_PROVIDER_libunwind_toolchain-clang = "libcxx" +PREFERRED_PROVIDER_libunwind ?= "libunwind" PREFERRED_PROVIDER_libunwind_mipsarch = "libunwind" +PREFERRED_PROVIDER_libunwind_riscv32 = "libunwind" +PREFERRED_PROVIDER_libunwind_riscv64 = "libunwind" diff --git a/recipes-devtools/clang/libcxx_git.bb b/recipes-devtools/clang/libcxx_git.bb index 76b1ea0..dafeccc 100644 --- a/recipes-devtools/clang/libcxx_git.bb +++ b/recipes-devtools/clang/libcxx_git.bb @@ -19,6 +19,7 @@ TUNE_CCARGS_remove_toolchain-clang = "--rtlib=compiler-rt --unwindlib=libunwind PACKAGECONFIG ??= "unwind" PACKAGECONFIG_powerpc = "" PACKAGECONFIG_riscv64 = "" +PACKAGECONFIG_riscv32 = "" PACKAGECONFIG[unwind] = "-DLIBCXXABI_USE_LLVM_UNWINDER=ON -DLIBUNWIND_ENABLE_SHARED=ON -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON -DLIBCXXABI_LIBUNWIND_INCLUDES=${S}/projects/libunwind/include, -DLIBCXXABI_USE_LLVM_UNWINDER=OFF," #PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}" @@ -37,6 +38,7 @@ EXTRA_OECMAKE += "\ -DLIBCXX_USE_COMPILER_RT=YES \ -DLIBCXXABI_USE_COMPILER_RT=YES \ -DCXX_SUPPORTS_CXX11=ON \ + -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ -DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include \ -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/lib \ @@ -51,7 +53,16 @@ EXTRA_OECMAKE += "\ EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " - +EXTRA_OECMAKE_append_riscv64 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ + -DLIBCXX_ENABLE_EXCEPTIONS=ON \ + -DLIBOMP_LIBFLAGS='-latomic' \ + -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ + " +EXTRA_OECMAKE_append_riscv32 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ + -DLIBCXX_ENABLE_EXCEPTIONS=ON \ + -DLIBOMP_LIBFLAGS='-latomic' \ + -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ + " do_compile() { if ${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'true', 'false', d)}; then ninja -v ${PARALLEL_MAKE} unwind @@ -70,8 +81,11 @@ do_install() { ALLOW_EMPTY_${PN} = "1" #PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs" - -RDEPENDS_${PN}-dev += "${PN}-staticdev" +RPROVIDES_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}" +RPROVIDES_${PN}-dev += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-dev', '', d)}" +RPROVIDES_${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-doc', '', d)}" +RPROVIDES_${PN}-staticdev += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-staticdev', '', d)}" +RPROVIDES_${PN}-locale += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-locale', '', d)}" BBCLASSEXTEND = "native nativesdk" TOOLCHAIN_forcevariable = "clang" -- cgit v1.2.3-54-g00ecf