From d87c406c0f54e0e1ad4fb6aa2d0ecba93136139d Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 9 Oct 2019 00:28:42 -0700 Subject: clang: Merge libunwind back into libcxx Do not export libunwind to other recipes besides libcxx itself, we use non-gnu libunwind on linux in general and its not a drop in replacement as of yet Signed-off-by: Khem Raj --- classes/clang.bbclass | 17 +------ recipes-devtools/clang/libcxx_git.bb | 15 +++++- recipes-devtools/clang/llvm-libunwind.bb | 81 -------------------------------- 3 files changed, 15 insertions(+), 98 deletions(-) delete mode 100644 recipes-devtools/clang/llvm-libunwind.bb diff --git a/classes/clang.bbclass b/classes/clang.bbclass index f36830e..3ca3ae5 100644 --- a/classes/clang.bbclass +++ b/classes/clang.bbclass @@ -12,7 +12,7 @@ COMPILER_RT ??= "--rtlib=compiler-rt ${UNWINDLIB}" COMPILER_RT_toolchain-gcc = "" COMPILER_RT_powerpc = "--rtlib=libgcc ${UNWINDLIB}" -UNWINDLIB ??= "--unwindlib=libunwind" +UNWINDLIB ??= "--unwindlib=libgcc" UNWINDLIB_riscv64 = "--unwindlib=libgcc" UNWINDLIB_riscv32 = "--unwindlib=libgcc" UNWINDLIB_powerpc = "--unwindlib=libgcc" @@ -68,7 +68,7 @@ def clang_base_deps(d): else: ret += " libgcc " if (d.getVar('COMPILER_RT').find('--unwindlib=libunwind') != -1): - ret += " llvm-libunwind " + ret += " libcxx " if (d.getVar('LIBCPLUSPLUS').find('--stdlib=libc++') != -1): ret += " libcxx " else: @@ -76,18 +76,5 @@ def clang_base_deps(d): return ret return "" -def clang_remove_deps(d): - ret = "" - if (d.getVar('UNWINDLIB').find('--unwindlib=libunwind') != -1): - ret += "libunwind" - return ret - -def clang_add_deps(d): - ret = "" - if (d.getVar('UNWINDLIB').find('--unwindlib=libunwind') != -1): - ret += " llvm-libunwind " - return ret BASE_DEFAULT_DEPS_toolchain-clang_class-target = "${@clang_base_deps(d)}" -DEPENDS_remove_class-target = "${@clang_remove_deps(d)}" -BASE_DEFAULT_DEPS_append_class-target = "${@clang_add_deps(d)}" diff --git a/recipes-devtools/clang/libcxx_git.bb b/recipes-devtools/clang/libcxx_git.bb index 425ecda..2d530c5 100644 --- a/recipes-devtools/clang/libcxx_git.bb +++ b/recipes-devtools/clang/libcxx_git.bb @@ -15,7 +15,7 @@ PACKAGECONFIG_riscv32 = "exceptions" PACKAGECONFIG_riscv64 = "exceptions" PACKAGECONFIG_append_armv5 = " no-atomics" -PACKAGECONFIG[unwind] = "-DLIBCXXABI_USE_LLVM_UNWINDER=ON,-DLIBCXXABI_USE_LLVM_UNWINDER=OFF,llvm-libunwind" +PACKAGECONFIG[unwind] = "-DLIBCXXABI_USE_LLVM_UNWINDER=ON -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=ON -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_STATIC_LIBRARY=ON,-DLIBCXXABI_USE_LLVM_UNWINDER=OFF,," PACKAGECONFIG[exceptions] = "-DLIBCXXABI_ENABLE_EXCEPTIONS=ON -DDLIBCXX_ENABLE_EXCEPTIONS=ON,-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF -DLIBCXX_ENABLE_EXCEPTIONS=OFF -DCMAKE_REQUIRED_FLAGS='-fno-exceptions'," PACKAGECONFIG[no-atomics] = "-D_LIBCXXABI_HAS_ATOMIC_BUILTINS=OFF -DCMAKE_SHARED_LINKER_FLAGS='-latomic',," PACKAGECONFIG[compiler-rt] = "-DLIBCXXABI_USE_COMPILER_RT=ON -DLIBCXX_USE_COMPILER_RT=ON,-DLIBCXXABI_USE_COMPILER_RT=OFF -DLIBCXX_USE_COMPILER_RT=OFF,compiler-rt" @@ -29,11 +29,16 @@ INHIBIT_DEFAULT_DEPS = "1" LIC_FILES_CHKSUM = "file://libcxx/LICENSE.TXT;md5=55d89dd7eec8d3b4204b680e27da3953 \ file://libcxxabi/LICENSE.TXT;md5=7b9334635b542c56868400a46b272b1e \ + file://libunwind/LICENSE.TXT;md5=f66970035d12f196030658b11725e1a1 \ " EXTRA_OECMAKE += "\ -DCMAKE_CROSSCOMPILING=ON \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ + -DLIBUNWIND_ENABLE_SHARED=OFF \ + -DLIBUNWIND_ENABLE_THREADS=OFF \ + -DLIBUNWIND_WEAK_PTHREAD_LIB=ON \ + -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON \ -DLIBCXXABI_INCLUDE_TESTS=OFF \ -DLIBCXXABI_ENABLE_SHARED=ON \ -DLIBCXXABI_USE_COMPILER_RT=ON \ @@ -45,7 +50,7 @@ EXTRA_OECMAKE += "\ -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ - -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi' \ + -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi;libunwind' \ -DLLVM_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ -G Ninja \ ${S}/llvm \ @@ -60,11 +65,17 @@ EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " CXXFLAGS_append_armv5 = " -mfpu=vfp2" do_compile() { + if [ -n "${@bb.utils.filter('PACKAGECONFIG', 'unwind', d)}" ]; then + ninja -v ${PARALLEL_MAKE} unwind + fi ninja -v ${PARALLEL_MAKE} cxxabi ninja -v ${PARALLEL_MAKE} cxx } do_install() { + #DESTDIR=${D} ninja ${PARALLEL_MAKE} install-unwind + #install -d ${D}${includedir} + #install -m 644 ${S}/libunwind/include/*.h ${D}${includedir} DESTDIR=${D} ninja ${PARALLEL_MAKE} install-cxx install-cxxabi } diff --git a/recipes-devtools/clang/llvm-libunwind.bb b/recipes-devtools/clang/llvm-libunwind.bb deleted file mode 100644 index c7be359..0000000 --- a/recipes-devtools/clang/llvm-libunwind.bb +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright (C) 2015 Khem Raj -# Released under the MIT license (see COPYING.MIT for the terms) - -DESCRIPTION = "C++ runtime stack unwinder from LLVM" -HOMEPAGE = "https://github.com/llvm-mirror/libunwind" -SECTION = "base" - -require clang.inc -require common-source.inc - -inherit cmake pythonnative - -DEPENDS += "ninja-native" -DEPENDS += "ninja-native compiler-rt clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc virtual/${TARGET_PREFIX}compilerlibs" -LIBCPLUSPLUS = "" -UNWINDLIB = "" -INHIBIT_DEFAULT_DEPS = "1" - -COMPATIBLE_HOST_riscv32 = "null" -COMPATIBLE_HOST_riscv64 = "null" - -LIC_FILES_CHKSUM = "file://libunwind/LICENSE.TXT;md5=f66970035d12f196030658b11725e1a1 \ -" - -EXTRA_OECMAKE += "\ - -DCMAKE_CROSSCOMPILING=ON \ - -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ - -DLIBUNWIND_ENABLE_SHARED=ON \ - -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ - -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ - -DLIBCXXABI_LIBUNWIND_INCLUDES=${S}/projects/libunwind/include \ - -DLIBUNWIND_ENABLE_THREADS=OFF \ - -DLIBUNWIND_WEAK_PTHREAD_LIB=ON \ - -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON \ - -DLLVM_ENABLE_LIBCXX=ON \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ - -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/${baselib} \ - -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ - -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ - -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ - -DLLVM_ENABLE_PROJECTS='libunwind' \ - -DLLVM_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ - -G Ninja \ - ${S}/llvm \ -" - -EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " -EXTRA_OECMAKE_append_riscv64 = " -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ - " - -EXTRA_OECMAKE_append_arm = " -DCMAKE_REQUIRED_FLAGS='-fno-exceptions'" - -EXTRA_OECMAKE_append_riscv32 = " -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ - " -EXTRA_OECMAKE_append_powerpc = " -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ - " -do_compile() { - ninja -v ${PARALLEL_MAKE} unwind -} - -do_install() { - DESTDIR=${D} ninja ${PARALLEL_MAKE} install-unwind - install -d ${D}${includedir} - install -m 644 ${S}/libunwind/include/*.h ${D}${includedir} -} - -ALLOW_EMPTY_${PN} = "1" - -RPROVIDES_${PN} += "libunwind" -RPROVIDES_${PN}-dbg += "libunwind-dbg" -RPROVIDES_${PN}-dev += "libunwind-dev" -RPROVIDES_${PN}-doc += "libunwind-doc" -RPROVIDES_${PN}-staticdev += "libunwind-staticdev" -RPROVIDES_${PN}-locale += "libunwind-locale" -RPROVIDES_${PN}-src += "libunwind-src" - -PACKAGES_DYNAMIC += "^libunwind-locale-.*" - -BBCLASSEXTEND = "native nativesdk" -TOOLCHAIN = "clang" - -- cgit v1.2.3-54-g00ecf