diff options
| author | Khem Raj <raj.khem@gmail.com> | 2021-06-24 14:49:45 -0700 |
|---|---|---|
| committer | Khem Raj <raj.khem@gmail.com> | 2021-06-25 10:54:39 -0700 |
| commit | 4d066667c3cbba3b88d2f8d6c5640f5f793d10b4 (patch) | |
| tree | e121032befbe9e247be7d08de6e1cb96bc3b98c1 | |
| parent | b9c9325d65fdcc6a1bfdb15b538c7454894ce15f (diff) | |
| download | meta-clang-4d066667c3cbba3b88d2f8d6c5640f5f793d10b4.tar.gz | |
libcxx: Fix native build
Use libgcc with clang-native to compile it
Fixes #465
Signed-off-by: Khem Raj <raj.khem@gmail.com>
| -rw-r--r-- | classes/clang.bbclass | 24 | ||||
| -rw-r--r-- | recipes-devtools/clang/libcxx_git.bb | 24 |
2 files changed, 30 insertions, 18 deletions
diff --git a/classes/clang.bbclass b/classes/clang.bbclass index 0f9e46c..0fbdd2d 100644 --- a/classes/clang.bbclass +++ b/classes/clang.bbclass | |||
| @@ -1,31 +1,33 @@ | |||
| 1 | # Add the necessary override | 1 | # Add the necessary override |
| 2 | CCACHE_COMPILERCHECK_class-target_toolchain-clang ?= "%compiler% -v" | 2 | CCACHE_COMPILERCHECK_toolchain-clang ?= "%compiler% -v" |
| 3 | HOST_CC_ARCH_prepend_class-target_toolchain-clang = "-target ${HOST_SYS} " | 3 | HOST_CC_ARCH_prepend_toolchain-clang = "-target ${HOST_SYS} " |
| 4 | CC_class-target_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 4 | CC_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" |
| 5 | CXX_class-target_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 5 | CXX_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" |
| 6 | CPP_class-target_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} -E" | 6 | CPP_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} -E" |
| 7 | CCLD_class-target_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 7 | CCLD_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" |
| 8 | RANLIB_class-target_toolchain-clang = "${HOST_PREFIX}llvm-ranlib" | 8 | RANLIB_toolchain-clang = "${HOST_PREFIX}llvm-ranlib" |
| 9 | AR_class-target_toolchain-clang = "${HOST_PREFIX}llvm-ar" | 9 | AR_toolchain-clang = "${HOST_PREFIX}llvm-ar" |
| 10 | NM_class-target_toolchain-clang = "${HOST_PREFIX}llvm-nm" | 10 | NM_toolchain-clang = "${HOST_PREFIX}llvm-nm" |
| 11 | 11 | ||
| 12 | LTO_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}" | 12 | LTO_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}" |
| 13 | PACKAGE_DEBUG_SPLIT_STYLE_toolchain-clang = "debug-without-src" | 13 | PACKAGE_DEBUG_SPLIT_STYLE_toolchain-clang = "debug-without-src" |
| 14 | 14 | ||
| 15 | COMPILER_RT ??= "" | 15 | COMPILER_RT ??= "" |
| 16 | COMPILER_RT_class-native = "-rtlib=libgcc ${UNWINDLIB}" | ||
| 16 | COMPILER_RT_powerpc = "-rtlib=libgcc ${UNWINDLIB}" | 17 | COMPILER_RT_powerpc = "-rtlib=libgcc ${UNWINDLIB}" |
| 17 | COMPILER_RT_armeb = "-rtlib=libgcc ${UNWINDLIB}" | 18 | COMPILER_RT_armeb = "-rtlib=libgcc ${UNWINDLIB}" |
| 18 | COMPILER_RT_libc-klibc = "-rtlib=libgcc ${UNWINDLIB}" | 19 | COMPILER_RT_libc-klibc = "-rtlib=libgcc ${UNWINDLIB}" |
| 19 | 20 | ||
| 20 | UNWINDLIB ??= "" | 21 | UNWINDLIB ??= "" |
| 22 | UNWINDLIB_class-native = "--unwindlib=libgcc" | ||
| 21 | UNWINDLIB_powerpc = "--unwindlib=libgcc" | 23 | UNWINDLIB_powerpc = "--unwindlib=libgcc" |
| 22 | UNWINDLIB_armeb = "--unwindlib=libgcc" | 24 | UNWINDLIB_armeb = "--unwindlib=libgcc" |
| 23 | UNWINDLIB_libc-klibc = "--unwindlib=libgcc" | 25 | UNWINDLIB_libc-klibc = "--unwindlib=libgcc" |
| 24 | 26 | ||
| 25 | LIBCPLUSPLUS ??= "" | 27 | LIBCPLUSPLUS ??= "" |
| 26 | 28 | ||
| 27 | TARGET_CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}" | 29 | CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}" |
| 28 | TUNE_CCARGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" | 30 | LDFLAGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" |
| 29 | 31 | ||
| 30 | TUNE_CCARGS_remove_toolchain-clang = "-meb" | 32 | TUNE_CCARGS_remove_toolchain-clang = "-meb" |
| 31 | TUNE_CCARGS_remove_toolchain-clang = "-mel" | 33 | TUNE_CCARGS_remove_toolchain-clang = "-mel" |
diff --git a/recipes-devtools/clang/libcxx_git.bb b/recipes-devtools/clang/libcxx_git.bb index b5bda2e..bdb364e 100644 --- a/recipes-devtools/clang/libcxx_git.bb +++ b/recipes-devtools/clang/libcxx_git.bb | |||
| @@ -12,7 +12,7 @@ inherit cmake cmake-native python3native | |||
| 12 | 12 | ||
| 13 | PACKAGECONFIG ??= "compiler-rt exceptions ${@bb.utils.contains("RUNTIME", "llvm", "unwind unwind-shared", "", d)}" | 13 | PACKAGECONFIG ??= "compiler-rt exceptions ${@bb.utils.contains("RUNTIME", "llvm", "unwind unwind-shared", "", d)}" |
| 14 | PACKAGECONFIG_append_armv5 = " no-atomics" | 14 | PACKAGECONFIG_append_armv5 = " no-atomics" |
| 15 | 15 | PACKAGECONFIG_remove_class-native = "compiler-rt" | |
| 16 | PACKAGECONFIG[unwind] = "-DLIBCXXABI_USE_LLVM_UNWINDER=ON -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON,-DLIBCXXABI_USE_LLVM_UNWINDER=OFF,," | 16 | PACKAGECONFIG[unwind] = "-DLIBCXXABI_USE_LLVM_UNWINDER=ON -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON,-DLIBCXXABI_USE_LLVM_UNWINDER=OFF,," |
| 17 | PACKAGECONFIG[exceptions] = "-DLIBCXXABI_ENABLE_EXCEPTIONS=ON -DDLIBCXX_ENABLE_EXCEPTIONS=ON,-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF -DLIBCXX_ENABLE_EXCEPTIONS=OFF -DCMAKE_REQUIRED_FLAGS='-fno-exceptions'," | 17 | PACKAGECONFIG[exceptions] = "-DLIBCXXABI_ENABLE_EXCEPTIONS=ON -DDLIBCXX_ENABLE_EXCEPTIONS=ON,-DLIBCXXABI_ENABLE_EXCEPTIONS=OFF -DLIBCXX_ENABLE_EXCEPTIONS=OFF -DCMAKE_REQUIRED_FLAGS='-fno-exceptions'," |
| 18 | PACKAGECONFIG[no-atomics] = "-D_LIBCXXABI_HAS_ATOMIC_BUILTINS=OFF -DCMAKE_SHARED_LINKER_FLAGS='-latomic',," | 18 | PACKAGECONFIG[no-atomics] = "-D_LIBCXXABI_HAS_ATOMIC_BUILTINS=OFF -DCMAKE_SHARED_LINKER_FLAGS='-latomic',," |
| @@ -21,10 +21,13 @@ PACKAGECONFIG[unwind-shared] = "-DLIBUNWIND_ENABLE_SHARED=ON,-DLIBUNWIND_ENABLE_ | |||
| 21 | 21 | ||
| 22 | DEPENDS += "ninja-native" | 22 | DEPENDS += "ninja-native" |
| 23 | DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc virtual/${TARGET_PREFIX}compilerlibs" | 23 | DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} virtual/${MLPREFIX}libc virtual/${TARGET_PREFIX}compilerlibs" |
| 24 | DEPENDS_append_class-native = " clang-native" | ||
| 24 | 25 | ||
| 25 | LIBCPLUSPLUS = "" | 26 | LIBCPLUSPLUS = "" |
| 26 | COMPILER_RT ?= "-rtlib=compiler-rt" | 27 | COMPILER_RT ?= "-rtlib=compiler-rt" |
| 27 | 28 | ||
| 29 | CC_append_toolchain-clang_class-native = " -unwindlib=libgcc -rtlib=libgcc" | ||
| 30 | |||
| 28 | CXXFLAGS += "-stdlib=libstdc++" | 31 | CXXFLAGS += "-stdlib=libstdc++" |
| 29 | LDFLAGS += "-unwindlib=libgcc -stdlib=libstdc++" | 32 | LDFLAGS += "-unwindlib=libgcc -stdlib=libstdc++" |
| 30 | INHIBIT_DEFAULT_DEPS = "1" | 33 | INHIBIT_DEFAULT_DEPS = "1" |
| @@ -51,16 +54,23 @@ EXTRA_OECMAKE += "\ | |||
| 51 | -DLIBCXX_CXX_ABI=libcxxabi \ | 54 | -DLIBCXX_CXX_ABI=libcxxabi \ |
| 52 | -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ | 55 | -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ |
| 53 | -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/lib${LLVM_LIBDIR_SUFFIX} \ | 56 | -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/lib${LLVM_LIBDIR_SUFFIX} \ |
| 54 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ | ||
| 55 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ | ||
| 56 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ | ||
| 57 | -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi;libunwind' \ | 57 | -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi;libunwind' \ |
| 58 | -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ | 58 | -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ |
| 59 | " | 59 | " |
| 60 | 60 | ||
| 61 | EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" | 61 | EXTRA_OECMAKE_append_class-target = " \ |
| 62 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ | ||
| 63 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ | ||
| 64 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ | ||
| 65 | " | ||
| 66 | EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF \ | ||
| 67 | " | ||
| 62 | 68 | ||
| 63 | EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" | 69 | EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF \ |
| 70 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ | ||
| 71 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ | ||
| 72 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ | ||
| 73 | " | ||
| 64 | 74 | ||
| 65 | EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " | 75 | EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " |
| 66 | 76 | ||
| @@ -84,4 +94,4 @@ PACKAGES_append_runtime-llvm = " libunwind" | |||
| 84 | FILES_libunwind_runtime-llvm = "${libdir}/libunwind.so.*" | 94 | FILES_libunwind_runtime-llvm = "${libdir}/libunwind.so.*" |
| 85 | 95 | ||
| 86 | BBCLASSEXTEND = "native nativesdk" | 96 | BBCLASSEXTEND = "native nativesdk" |
| 87 | TOOLCHAIN = "clang" | 97 | TOOLCHAIN_forcevariable = "clang" |
