summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2019-07-31 17:08:37 -0700
committerKhem Raj <raj.khem@gmail.com>2019-08-12 22:00:22 -0700
commit34c98ae16d995a21e95f1af7f5535ee3b4cbed38 (patch)
treed78d1760884204a70bcb27d5d4ba069616cba749
parent410caea6379431d07939e0acabdc414bbdb86192 (diff)
downloadmeta-clang-34c98ae16d995a21e95f1af7f5535ee3b4cbed38.tar.gz
libcxx: Provide libunwind and fix risv support
Use llvm libunwind as default for clang toolchain Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--classes/clang.bbclass12
-rw-r--r--recipes-devtools/clang/libcxx_git.bb20
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"
8AR_toolchain-clang = "${HOST_PREFIX}llvm-ar" 8AR_toolchain-clang = "${HOST_PREFIX}llvm-ar"
9NM_toolchain-clang = "${HOST_PREFIX}llvm-nm" 9NM_toolchain-clang = "${HOST_PREFIX}llvm-nm"
10 10
11COMPILER_RT ??= "--rtlib=compiler-rt --unwindlib=libunwind" 11COMPILER_RT ??= "--rtlib=compiler-rt ${UNWINDLIB}"
12
13UNWINDLIB ??= "--unwindlib=libunwind"
14UNWINDLIB_riscv64 = "--unwindlib=libgcc"
15UNWINDLIB_riscv32 = "--unwindlib=libgcc"
16
12LIBCPLUSPLUS ??= "--stdlib=libc++" 17LIBCPLUSPLUS ??= "--stdlib=libc++"
13 18
14COMPILER_RT_toolchain-gcc = "" 19COMPILER_RT_toolchain-gcc = ""
@@ -62,5 +67,8 @@ def clang_dep_prepend(d):
62BASEDEPENDS_remove_toolchain-clang_class-target = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs" 67BASEDEPENDS_remove_toolchain-clang_class-target = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs"
63BASEDEPENDS_append_toolchain-clang_class-target = "${@clang_dep_prepend(d)}" 68BASEDEPENDS_append_toolchain-clang_class-target = "${@clang_dep_prepend(d)}"
64 69
65PREFERRED_PROVIDER_libunwind = "libunwind" 70PREFERRED_PROVIDER_libunwind_toolchain-clang = "libcxx"
71PREFERRED_PROVIDER_libunwind ?= "libunwind"
66PREFERRED_PROVIDER_libunwind_mipsarch = "libunwind" 72PREFERRED_PROVIDER_libunwind_mipsarch = "libunwind"
73PREFERRED_PROVIDER_libunwind_riscv32 = "libunwind"
74PREFERRED_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
19PACKAGECONFIG ??= "unwind" 19PACKAGECONFIG ??= "unwind"
20PACKAGECONFIG_powerpc = "" 20PACKAGECONFIG_powerpc = ""
21PACKAGECONFIG_riscv64 = "" 21PACKAGECONFIG_riscv64 = ""
22PACKAGECONFIG_riscv32 = ""
22PACKAGECONFIG[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," 23PACKAGECONFIG[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,"
23 24
24#PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}" 25#PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}"
@@ -37,6 +38,7 @@ EXTRA_OECMAKE += "\
37 -DLIBCXX_USE_COMPILER_RT=YES \ 38 -DLIBCXX_USE_COMPILER_RT=YES \
38 -DLIBCXXABI_USE_COMPILER_RT=YES \ 39 -DLIBCXXABI_USE_COMPILER_RT=YES \
39 -DCXX_SUPPORTS_CXX11=ON \ 40 -DCXX_SUPPORTS_CXX11=ON \
41 -DLIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \
40 -DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include \ 42 -DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include \
41 -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ 43 -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \
42 -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/lib \ 44 -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/lib \
@@ -51,7 +53,16 @@ EXTRA_OECMAKE += "\
51EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" 53EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF"
52EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" 54EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF"
53EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " 55EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON "
54 56EXTRA_OECMAKE_append_riscv64 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
57 -DLIBCXX_ENABLE_EXCEPTIONS=ON \
58 -DLIBOMP_LIBFLAGS='-latomic' \
59 -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \
60 "
61EXTRA_OECMAKE_append_riscv32 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \
62 -DLIBCXX_ENABLE_EXCEPTIONS=ON \
63 -DLIBOMP_LIBFLAGS='-latomic' \
64 -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \
65 "
55do_compile() { 66do_compile() {
56 if ${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'true', 'false', d)}; then 67 if ${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'true', 'false', d)}; then
57 ninja -v ${PARALLEL_MAKE} unwind 68 ninja -v ${PARALLEL_MAKE} unwind
@@ -70,8 +81,11 @@ do_install() {
70ALLOW_EMPTY_${PN} = "1" 81ALLOW_EMPTY_${PN} = "1"
71 82
72#PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs" 83#PROVIDES = "virtual/${TARGET_PREFIX}compilerlibs"
73 84RPROVIDES_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}"
74RDEPENDS_${PN}-dev += "${PN}-staticdev" 85RPROVIDES_${PN}-dev += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-dev', '', d)}"
86RPROVIDES_${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-doc', '', d)}"
87RPROVIDES_${PN}-staticdev += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-staticdev', '', d)}"
88RPROVIDES_${PN}-locale += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-locale', '', d)}"
75 89
76BBCLASSEXTEND = "native nativesdk" 90BBCLASSEXTEND = "native nativesdk"
77TOOLCHAIN_forcevariable = "clang" 91TOOLCHAIN_forcevariable = "clang"