diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/clang-legacy.bbclass (renamed from classes/clang.bbclass) | 49 | ||||
-rw-r--r-- | classes/clang-native.bbclass | 23 |
2 files changed, 16 insertions, 56 deletions
diff --git a/classes/clang.bbclass b/classes/clang-legacy.bbclass index 450500d..dbd600f 100644 --- a/classes/clang.bbclass +++ b/classes/clang-legacy.bbclass | |||
@@ -2,29 +2,17 @@ | |||
2 | CCACHE_COMPILERCHECK:toolchain-clang ?= "%compiler% -v" | 2 | CCACHE_COMPILERCHECK:toolchain-clang ?= "%compiler% -v" |
3 | HOST_CC_ARCH:prepend:toolchain-clang:class-target = "-target ${HOST_SYS} " | 3 | HOST_CC_ARCH:prepend:toolchain-clang:class-target = "-target ${HOST_SYS} " |
4 | HOST_CC_ARCH:prepend:toolchain-clang:class-nativesdk = "-target ${HOST_SYS} " | 4 | HOST_CC_ARCH:prepend:toolchain-clang:class-nativesdk = "-target ${HOST_SYS} " |
5 | CC:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 5 | LD:toolchain-clang:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '${HOST_PREFIX}ld.lld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', '${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', d)}" |
6 | CXX:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 6 | LD:toolchain-clang:class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '${HOST_PREFIX}ld.lld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', '${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', d)}" |
7 | CPP:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} -E" | 7 | |
8 | CCLD:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 8 | LTO:toolchain-clang:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}" |
9 | RANLIB:toolchain-clang = "${HOST_PREFIX}llvm-ranlib" | 9 | LTO:toolchain-clang:class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}" |
10 | AR:toolchain-clang = "${HOST_PREFIX}llvm-ar" | ||
11 | NM:toolchain-clang = "${HOST_PREFIX}llvm-nm" | ||
12 | OBJDUMP:toolchain-clang = "${HOST_PREFIX}llvm-objdump" | ||
13 | OBJCOPY:toolchain-clang = "${HOST_PREFIX}llvm-objcopy" | ||
14 | STRIP:toolchain-clang = "${HOST_PREFIX}llvm-strip" | ||
15 | STRINGS:toolchain-clang = "${HOST_PREFIX}llvm-strings" | ||
16 | READELF:toolchain-clang = "${HOST_PREFIX}llvm-readelf" | ||
17 | LD:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '${HOST_PREFIX}ld.lld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', '${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', d)}" | ||
18 | |||
19 | LTO:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}" | ||
20 | 10 | ||
21 | COMPILER_RT ??= "" | 11 | COMPILER_RT ??= "" |
22 | COMPILER_RT:class-native = "-rtlib=libgcc ${UNWINDLIB}" | ||
23 | COMPILER_RT:armeb = "-rtlib=libgcc ${UNWINDLIB}" | 12 | COMPILER_RT:armeb = "-rtlib=libgcc ${UNWINDLIB}" |
24 | COMPILER_RT:libc-klibc = "-rtlib=libgcc ${UNWINDLIB}" | 13 | COMPILER_RT:libc-klibc = "-rtlib=libgcc ${UNWINDLIB}" |
25 | 14 | ||
26 | UNWINDLIB ??= "" | 15 | UNWINDLIB ??= "" |
27 | UNWINDLIB:class-native = "--unwindlib=libgcc" | ||
28 | UNWINDLIB:armeb = "--unwindlib=libgcc" | 16 | UNWINDLIB:armeb = "--unwindlib=libgcc" |
29 | UNWINDLIB_libc-klibc = "--unwindlib=libgcc" | 17 | UNWINDLIB_libc-klibc = "--unwindlib=libgcc" |
30 | 18 | ||
@@ -34,10 +22,6 @@ LIBCPLUSPLUS:armv5 = "-stdlib=libstdc++" | |||
34 | CXXFLAGS:append:toolchain-clang = " ${LIBCPLUSPLUS}" | 22 | CXXFLAGS:append:toolchain-clang = " ${LIBCPLUSPLUS}" |
35 | LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" | 23 | LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" |
36 | 24 | ||
37 | TUNE_CCARGS:remove:toolchain-clang = "-meb" | ||
38 | TUNE_CCARGS:remove:toolchain-clang = "-mel" | ||
39 | TUNE_CCARGS:append:toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" | ||
40 | |||
41 | # Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes | 25 | # Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes |
42 | TUNE_CCARGS:remove:toolchain-clang = "\ | 26 | TUNE_CCARGS:remove:toolchain-clang = "\ |
43 | -mcpu=cortex-a57.cortex-a53${TUNE_CCARGS_MARCH_OPTS} \ | 27 | -mcpu=cortex-a57.cortex-a53${TUNE_CCARGS_MARCH_OPTS} \ |
@@ -79,15 +63,14 @@ LDFLAGS:toolchain-clang:class-nativesdk = "${BUILDSDK_LDFLAGS} \ | |||
79 | -Wl,-rpath,${libdir}/.. " | 63 | -Wl,-rpath,${libdir}/.. " |
80 | 64 | ||
81 | # Enable lld globally except for ppc32 where it causes random segfaults in Qemu usermode | 65 | # Enable lld globally except for ppc32 where it causes random segfaults in Qemu usermode |
82 | LDFLAGS:append:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}" | 66 | LDFLAGS:append:toolchain-clang:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}" |
67 | LDFLAGS:append:toolchain-clang:class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}" | ||
83 | LDFLAGS:remove:toolchain-clang:powerpc = "-fuse-ld=lld" | 68 | LDFLAGS:remove:toolchain-clang:powerpc = "-fuse-ld=lld" |
84 | 69 | ||
85 | # Remove gcc specific -fcanon-prefix-map option, added in gcc-13+ | 70 | # Remove gcc specific -fcanon-prefix-map option, added in gcc-13+ |
86 | # clang does not support it yet | 71 | # clang does not support it yet |
87 | DEBUG_PREFIX_MAP:remove:toolchain-clang = "-fcanon-prefix-map" | 72 | DEBUG_PREFIX_MAP:remove:toolchain-clang = "-fcanon-prefix-map" |
88 | 73 | ||
89 | # choose between 'gcc' 'clang' an empty '' can be used as well | ||
90 | TOOLCHAIN ??= "gcc" | ||
91 | # choose between 'gnu' 'llvm' | 74 | # choose between 'gnu' 'llvm' |
92 | TC_CXX_RUNTIME ??= "gnu" | 75 | TC_CXX_RUNTIME ??= "gnu" |
93 | # Using gcc or llvm runtime is only available when using clang for compiler | 76 | # Using gcc or llvm runtime is only available when using clang for compiler |
@@ -95,15 +78,15 @@ TC_CXX_RUNTIME ??= "gnu" | |||
95 | TC_CXX_RUNTIME:armeb = "gnu" | 78 | TC_CXX_RUNTIME:armeb = "gnu" |
96 | TC_CXX_RUNTIME:armv5 = "gnu" | 79 | TC_CXX_RUNTIME:armv5 = "gnu" |
97 | 80 | ||
98 | TOOLCHAIN:class-native = "gcc" | 81 | #TOOLCHAIN:class-native = "gcc" |
99 | TOOLCHAIN:class-nativesdk = "gcc" | 82 | #TOOLCHAIN:class-nativesdk = "gcc" |
100 | TOOLCHAIN:class-cross-canadian = "gcc" | 83 | #TOOLCHAIN:class-cross-canadian = "gcc" |
101 | TOOLCHAIN:class-crosssdk = "gcc" | 84 | #TOOLCHAIN:class-crosssdk = "gcc" |
102 | TOOLCHAIN:class-cross = "gcc" | 85 | #TOOLCHAIN:class-cross = "gcc" |
103 | 86 | ||
104 | OVERRIDES =. "${@['', 'toolchain-${TOOLCHAIN}:']['${TOOLCHAIN}' != '']}" | 87 | #OVERRIDES =. "${@['', 'toolchain-${TOOLCHAIN}:']['${TOOLCHAIN}' != '']}" |
105 | OVERRIDES =. "${@['', 'runtime-${TC_CXX_RUNTIME}:']['${TC_CXX_RUNTIME}' != '']}" | 88 | OVERRIDES =. "${@['', 'runtime-${TC_CXX_RUNTIME}:']['${TC_CXX_RUNTIME}' != '']}" |
106 | OVERRIDES[vardepsexclude] += "TOOLCHAIN TC_CXX_RUNTIME" | 89 | OVERRIDES[vardepsexclude] += "TC_CXX_RUNTIME" |
107 | 90 | ||
108 | YOCTO_ALTERNATE_EXE_PATH:toolchain-clang:class-target = "${STAGING_BINDIR}/llvm-config" | 91 | YOCTO_ALTERNATE_EXE_PATH:toolchain-clang:class-target = "${STAGING_BINDIR}/llvm-config" |
109 | YOCTO_ALTERNATE_LIBDIR:toolchain-clang:class-target = "/${BASELIB}" | 92 | YOCTO_ALTERNATE_LIBDIR:toolchain-clang:class-target = "/${BASELIB}" |
@@ -139,8 +122,8 @@ def clang_base_deps(d): | |||
139 | return "" | 122 | return "" |
140 | 123 | ||
141 | BASE_DEFAULT_DEPS:append:class-target:toolchain-clang:class-target = " ${@clang_base_deps(d)}" | 124 | BASE_DEFAULT_DEPS:append:class-target:toolchain-clang:class-target = " ${@clang_base_deps(d)}" |
142 | BASE_DEFAULT_DEPS:append:class-native:toolchain-clang:runtime-llvm = " libcxx-native compiler-rt-native" | 125 | BASE_DEFAULT_DEPS:append:class-native:runtime-llvm = " libcxx-native compiler-rt-native" |
143 | BASE_DEFAULT_DEPS:append:class-nativesdk:toolchain-clang:runtime-llvm = " clang-native nativesdk-libcxx nativesdk-compiler-rt" | 126 | BASE_DEFAULT_DEPS:append:class-nativesdk:runtime-llvm = " clang-native nativesdk-libcxx nativesdk-compiler-rt" |
144 | 127 | ||
145 | # do_populate_sysroot needs STRIP | 128 | # do_populate_sysroot needs STRIP |
146 | POPULATESYSROOTDEPS:toolchain-clang:class-target = "${MLPREFIX}clang-cross-${TARGET_ARCH}:do_populate_sysroot" | 129 | POPULATESYSROOTDEPS:toolchain-clang:class-target = "${MLPREFIX}clang-cross-${TARGET_ARCH}:do_populate_sysroot" |
diff --git a/classes/clang-native.bbclass b/classes/clang-native.bbclass deleted file mode 100644 index 51fafcd..0000000 --- a/classes/clang-native.bbclass +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | # inherit this class if you would like to use clang to compile the native | ||
2 | # version of your recipes instead of system compiler ( which is normally gcc ) | ||
3 | # on build machines | ||
4 | # to use it add | ||
5 | # | ||
6 | # inherit clang-native | ||
7 | # | ||
8 | # to the concerned recipe via a bbappend or directly to recipe file | ||
9 | # | ||
10 | DEPENDS:append:runtime-llvm = " clang-native compiler-rt-native libcxx-native" | ||
11 | # Use libcxx headers for native parts | ||
12 | CXXFLAGS:append:runtime-llvm = " -stdlib=libc++" | ||
13 | BUILD_CXXFLAGS:append:runtime-llvm = " -isysroot=${STAGING_DIR_NATIVE} -stdlib=libc++" | ||
14 | # Use libgcc for native parts | ||
15 | LDFLAGS:append:runtime-llvm = " -stdlib=libc++ -rtlib=libgcc -unwindlib=libgcc" | ||
16 | BUILD_LDFLAGS:append:runtime-llvm = " -stdlib=libc++ -rtlib=libgcc -unwindlib=libgcc" | ||
17 | BUILD_CC:runtime-llvm = "${CCACHE}clang -isysroot=${STAGING_DIR_NATIVE}" | ||
18 | BUILD_CXX:runtime-llvm = "${CCACHE}clang++ -isysroot=${STAGING_DIR_NATIVE}" | ||
19 | BUILD_CPP:runtime-llvm = "${CCACHE}clang -isysroot=${STAGING_DIR_NATIVE} -E" | ||
20 | BUILD_CCLD:runtime-llvm = "${CCACHE}clang" | ||
21 | BUILD_RANLIB:runtime-llvm = "llvm-ranlib" | ||
22 | BUILD_AR:runtime-llvm = "llvm-ar" | ||
23 | BUILD_NM:runtime-llvm = "llvm-nm" | ||