diff options
-rw-r--r-- | classes/clang.bbclass | 2 | ||||
-rw-r--r-- | recipes-devtools/clang/libcxx_git.bb | 51 | ||||
-rw-r--r-- | recipes-devtools/clang/llvm-libunwind.bb | 84 |
3 files changed, 103 insertions, 34 deletions
diff --git a/classes/clang.bbclass b/classes/clang.bbclass index 99b80a4..58fe6b6 100644 --- a/classes/clang.bbclass +++ b/classes/clang.bbclass | |||
@@ -77,7 +77,7 @@ def clang_dep_prepend(d): | |||
77 | 77 | ||
78 | BASE_DEFAULT_DEPS_toolchain-clang_class-target = "${@clang_dep_prepend(d)}" | 78 | BASE_DEFAULT_DEPS_toolchain-clang_class-target = "${@clang_dep_prepend(d)}" |
79 | 79 | ||
80 | PREFERRED_PROVIDER_libunwind_toolchain-clang = "libcxx" | 80 | PREFERRED_PROVIDER_libunwind_toolchain-clang = "llvm-libunwind" |
81 | PREFERRED_PROVIDER_libunwind ?= "libunwind" | 81 | PREFERRED_PROVIDER_libunwind ?= "libunwind" |
82 | PREFERRED_PROVIDER_libunwind_powerpc = "libunwind" | 82 | PREFERRED_PROVIDER_libunwind_powerpc = "libunwind" |
83 | PREFERRED_PROVIDER_libunwind_riscv32 = "libunwind" | 83 | PREFERRED_PROVIDER_libunwind_riscv32 = "libunwind" |
diff --git a/recipes-devtools/clang/libcxx_git.bb b/recipes-devtools/clang/libcxx_git.bb index c88d868..c12831a 100644 --- a/recipes-devtools/clang/libcxx_git.bb +++ b/recipes-devtools/clang/libcxx_git.bb | |||
@@ -10,26 +10,20 @@ require common-source.inc | |||
10 | 10 | ||
11 | inherit cmake pythonnative | 11 | inherit cmake pythonnative |
12 | 12 | ||
13 | DEPENDS += "ninja-native" | 13 | DEPENDS += "ninja-native llvm-libunwind" |
14 | |||
15 | DEPENDS_remove_powerpc = "llvm-libunwind" | ||
16 | DEPENDS_remove_riscv32 = "llvm-libunwind" | ||
17 | DEPENDS_remove_riscv64 = "llvm-libunwind" | ||
18 | |||
14 | BASEDEPENDS_remove_toolchain-clang = "libcxx" | 19 | BASEDEPENDS_remove_toolchain-clang = "libcxx" |
15 | DEPENDS_append_toolchain-clang = " virtual/${TARGET_PREFIX}compilerlibs" | 20 | DEPENDS_append_toolchain-clang = " virtual/${TARGET_PREFIX}compilerlibs" |
16 | 21 | ||
17 | TARGET_CXXFLAGS_remove_toolchain-clang = "--stdlib=libc++" | 22 | TARGET_CXXFLAGS_remove_toolchain-clang = "--stdlib=libc++" |
18 | TUNE_CCARGS_remove_toolchain-clang = "--unwindlib=libunwind --stdlib=libc++" | 23 | TUNE_CCARGS_remove_toolchain-clang = "--stdlib=libc++" |
19 | |||
20 | PACKAGECONFIG ??= "${@bb.utils.contains('PREFERRED_PROVIDER_libunwind', 'libcxx', 'unwind', '', d)}" | ||
21 | PACKAGECONFIG_powerpc = "" | ||
22 | PACKAGECONFIG_riscv64 = "" | ||
23 | PACKAGECONFIG_riscv32 = "" | ||
24 | |||
25 | PACKAGECONFIG[unwind] = "-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, -DLIBCXXABI_USE_LLVM_UNWINDER=OFF -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s'," | ||
26 | |||
27 | PROVIDES += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}" | ||
28 | LIBUNWIND = "${@bb.utils.contains('PACKAGECONFIG', 'unwind', ';libunwind', '', d)}" | ||
29 | 24 | ||
30 | LIC_FILES_CHKSUM = "file://libcxx/LICENSE.TXT;md5=55d89dd7eec8d3b4204b680e27da3953 \ | 25 | LIC_FILES_CHKSUM = "file://libcxx/LICENSE.TXT;md5=55d89dd7eec8d3b4204b680e27da3953 \ |
31 | file://libcxxabi/LICENSE.TXT;md5=7b9334635b542c56868400a46b272b1e \ | 26 | file://libcxxabi/LICENSE.TXT;md5=7b9334635b542c56868400a46b272b1e \ |
32 | file://libunwind/LICENSE.TXT;md5=f66970035d12f196030658b11725e1a1 \ | ||
33 | " | 27 | " |
34 | THUMB_TUNE_CCARGS = "" | 28 | THUMB_TUNE_CCARGS = "" |
35 | #TUNE_CCARGS += "-nostdlib" | 29 | #TUNE_CCARGS += "-nostdlib" |
@@ -45,14 +39,21 @@ EXTRA_OECMAKE += "\ | |||
45 | -DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include \ | 39 | -DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include \ |
46 | -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ | 40 | -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ |
47 | -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/${baselib} \ | 41 | -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/${baselib} \ |
42 | -DCMAKE_SHARED_LINKER_FLAGS='${SHAREDFLAGS}' \ | ||
48 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ | 43 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ |
49 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ | 44 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ |
50 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ | 45 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ |
51 | -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi${LIBUNWIND}' \ | 46 | -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi' \ |
52 | -DLLVM_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ | 47 | -DLLVM_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ |
53 | -G Ninja \ | 48 | -G Ninja \ |
54 | ${S}/llvm \ | 49 | ${S}/llvm \ |
55 | " | 50 | " |
51 | SHAREDFLAGS ?= "-lunwind" | ||
52 | SHAREDFLAGS_riscv32 = "-lgcc_s -latomic" | ||
53 | SHAREDFLAGS_riscv64 = "-lgcc_s -latomic" | ||
54 | SHAREDFLAGS_powerpc = "-lgcc_s -latomic" | ||
55 | SHAREDFLAGS_append_arm = " -latomic" | ||
56 | SHAREDFLAGS_append_armeb = " -latomic" | ||
56 | 57 | ||
57 | EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" | 58 | EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" |
58 | EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" | 59 | EXTRA_OECMAKE_append_class-nativesdk = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" |
@@ -60,7 +61,7 @@ EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " | |||
60 | EXTRA_OECMAKE_append_riscv64 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ | 61 | EXTRA_OECMAKE_append_riscv64 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ |
61 | -DLIBCXX_ENABLE_EXCEPTIONS=ON \ | 62 | -DLIBCXX_ENABLE_EXCEPTIONS=ON \ |
62 | -DLIBOMP_LIBFLAGS='-latomic' \ | 63 | -DLIBOMP_LIBFLAGS='-latomic' \ |
63 | -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ | 64 | -DLIBCXX_HAS_GCC_S_LIB=ON \ |
64 | " | 65 | " |
65 | 66 | ||
66 | EXTRA_OECMAKE_append_armv5 = " -D_LIBCXXABI_HAS_ATOMIC_BUILTINS=OFF" | 67 | EXTRA_OECMAKE_append_armv5 = " -D_LIBCXXABI_HAS_ATOMIC_BUILTINS=OFF" |
@@ -70,40 +71,24 @@ EXTRA_OECMAKE_append_arm = " -DCMAKE_REQUIRED_FLAGS='-fno-exceptions'" | |||
70 | EXTRA_OECMAKE_append_riscv32 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ | 71 | EXTRA_OECMAKE_append_riscv32 = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ |
71 | -DLIBCXX_ENABLE_EXCEPTIONS=ON \ | 72 | -DLIBCXX_ENABLE_EXCEPTIONS=ON \ |
72 | -DLIBOMP_LIBFLAGS='-latomic' \ | 73 | -DLIBOMP_LIBFLAGS='-latomic' \ |
73 | -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ | 74 | -DLIBCXX_HAS_GCC_S_LIB=ON \ |
74 | " | 75 | " |
75 | EXTRA_OECMAKE_append_powerpc = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ | 76 | EXTRA_OECMAKE_append_powerpc = " -DLIBCXXABI_ENABLE_EXCEPTIONS=ON \ |
76 | -DLIBCXX_ENABLE_EXCEPTIONS=ON \ | 77 | -DLIBCXX_ENABLE_EXCEPTIONS=ON \ |
77 | -DLIBOMP_LIBFLAGS='-latomic' \ | 78 | -DLIBOMP_LIBFLAGS='-latomic' \ |
78 | -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ | 79 | -DLIBCXX_HAS_GCC_S_LIB=ON \ |
79 | " | 80 | " |
80 | do_compile() { | 81 | do_compile() { |
81 | if ${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'true', 'false', d)}; then | ||
82 | ninja -v ${PARALLEL_MAKE} unwind | ||
83 | fi | ||
84 | ninja -v ${PARALLEL_MAKE} cxxabi | 82 | ninja -v ${PARALLEL_MAKE} cxxabi |
85 | ninja -v ${PARALLEL_MAKE} cxx | 83 | ninja -v ${PARALLEL_MAKE} cxx |
86 | } | 84 | } |
87 | 85 | ||
88 | do_install() { | 86 | do_install() { |
89 | if ${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'true', 'false', d)}; then | ||
90 | DESTDIR=${D} ninja ${PARALLEL_MAKE} install-unwind | ||
91 | fi | ||
92 | DESTDIR=${D} ninja ${PARALLEL_MAKE} install-cxx install-cxxabi | 87 | DESTDIR=${D} ninja ${PARALLEL_MAKE} install-cxx install-cxxabi |
93 | } | 88 | } |
94 | 89 | ||
95 | ALLOW_EMPTY_${PN} = "1" | 90 | ALLOW_EMPTY_${PN} = "1" |
96 | 91 | ||
97 | RPROVIDES_${PN} += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind', '', d)}" | ||
98 | RPROVIDES_${PN}-dbg += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-dbg', '', d)}" | ||
99 | RPROVIDES_${PN}-dev += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-dev', '', d)}" | ||
100 | RPROVIDES_${PN}-doc += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-doc', '', d)}" | ||
101 | RPROVIDES_${PN}-staticdev += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-staticdev', '', d)}" | ||
102 | RPROVIDES_${PN}-locale += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-locale', '', d)}" | ||
103 | RPROVIDES_${PN}-src += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', 'libunwind-src', '', d)}" | ||
104 | |||
105 | PACKAGES_DYNAMIC += "${@bb.utils.contains('PACKAGECONFIG', 'unwind', '^libunwind-locale-.*', '', d)}" | ||
106 | |||
107 | BBCLASSEXTEND = "native nativesdk" | 92 | BBCLASSEXTEND = "native nativesdk" |
108 | TOOLCHAIN = "clang" | 93 | TOOLCHAIN = "clang" |
109 | 94 | ||
diff --git a/recipes-devtools/clang/llvm-libunwind.bb b/recipes-devtools/clang/llvm-libunwind.bb new file mode 100644 index 0000000..83bd92a --- /dev/null +++ b/recipes-devtools/clang/llvm-libunwind.bb | |||
@@ -0,0 +1,84 @@ | |||
1 | # Copyright (C) 2015 Khem Raj <raj.khem@gmail.com> | ||
2 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
3 | |||
4 | DESCRIPTION = "C++ runtime stack unwinder from LLVM" | ||
5 | HOMEPAGE = "https://github.com/llvm-mirror/libunwind" | ||
6 | SECTION = "base" | ||
7 | |||
8 | require clang.inc | ||
9 | require common-source.inc | ||
10 | |||
11 | inherit cmake pythonnative | ||
12 | |||
13 | DEPENDS += "ninja-native" | ||
14 | BASEDEPENDS_remove_toolchain-clang = "libcxx" | ||
15 | DEPENDS_append_toolchain-clang = " virtual/${TARGET_PREFIX}compilerlibs" | ||
16 | |||
17 | TARGET_CXXFLAGS_remove_toolchain-clang = "--stdlib=libc++" | ||
18 | TUNE_CCARGS_remove_toolchain-clang = "--unwindlib=libunwind --stdlib=libc++" | ||
19 | |||
20 | COMPATIBLE_HOST_powerpc = "null" | ||
21 | COMPATIBLE_HOST_riscv32 = "null" | ||
22 | COMPATIBLE_HOST_riscv64 = "null" | ||
23 | |||
24 | LIC_FILES_CHKSUM = "file://libunwind/LICENSE.TXT;md5=f66970035d12f196030658b11725e1a1 \ | ||
25 | " | ||
26 | THUMB_TUNE_CCARGS = "" | ||
27 | #TUNE_CCARGS += "-nostdlib" | ||
28 | |||
29 | EXTRA_OECMAKE += "\ | ||
30 | -DCMAKE_CROSSCOMPILING=ON \ | ||
31 | -DLIBCXXABI_USE_LLVM_UNWINDER=ON \ | ||
32 | -DLIBUNWIND_ENABLE_SHARED=ON \ | ||
33 | -DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \ | ||
34 | -DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=OFF \ | ||
35 | -DLIBCXXABI_LIBUNWIND_INCLUDES=${S}/projects/libunwind/include \ | ||
36 | -DLIBUNWIND_ENABLE_THREADS=OFF \ | ||
37 | -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON \ | ||
38 | -DLLVM_ENABLE_LIBCXX=ON \ | ||
39 | -DLIBCXX_CXX_ABI_INCLUDE_PATHS=${S}/libcxxabi/include \ | ||
40 | -DLIBCXX_CXX_ABI_LIBRARY_PATH=${B}/${baselib} \ | ||
41 | -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${AR} \ | ||
42 | -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${NM} \ | ||
43 | -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ | ||
44 | -DLLVM_ENABLE_PROJECTS='libunwind' \ | ||
45 | -DLLVM_LIBDIR_SUFFIX=${@d.getVar('baselib').replace('lib', '')} \ | ||
46 | -G Ninja \ | ||
47 | ${S}/llvm \ | ||
48 | " | ||
49 | |||
50 | EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " | ||
51 | EXTRA_OECMAKE_append_riscv64 = " -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ | ||
52 | " | ||
53 | |||
54 | EXTRA_OECMAKE_append_arm = " -DCMAKE_REQUIRED_FLAGS='-fno-exceptions'" | ||
55 | |||
56 | EXTRA_OECMAKE_append_riscv32 = " -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ | ||
57 | " | ||
58 | EXTRA_OECMAKE_append_powerpc = " -DCMAKE_SHARED_LINKER_FLAGS='-lgcc_s -latomic' \ | ||
59 | " | ||
60 | do_compile() { | ||
61 | ninja -v ${PARALLEL_MAKE} unwind | ||
62 | } | ||
63 | |||
64 | do_install() { | ||
65 | DESTDIR=${D} ninja ${PARALLEL_MAKE} install-unwind | ||
66 | install -d ${D}${includedir} | ||
67 | install -m 644 ${S}/libunwind/include/*.h ${D}${includedir} | ||
68 | } | ||
69 | |||
70 | ALLOW_EMPTY_${PN} = "1" | ||
71 | |||
72 | RPROVIDES_${PN} += "libunwind" | ||
73 | RPROVIDES_${PN}-dbg += "libunwind-dbg" | ||
74 | RPROVIDES_${PN}-dev += "libunwind-dev" | ||
75 | RPROVIDES_${PN}-doc += "libunwind-doc" | ||
76 | RPROVIDES_${PN}-staticdev += "libunwind-staticdev" | ||
77 | RPROVIDES_${PN}-locale += "libunwind-locale" | ||
78 | RPROVIDES_${PN}-src += "libunwind-src" | ||
79 | |||
80 | PACKAGES_DYNAMIC += "^libunwind-locale-.*" | ||
81 | |||
82 | BBCLASSEXTEND = "native nativesdk" | ||
83 | TOOLCHAIN = "clang" | ||
84 | |||