summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/clang-legacy.bbclass (renamed from classes/clang.bbclass)49
-rw-r--r--classes/clang-native.bbclass23
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 @@
2CCACHE_COMPILERCHECK:toolchain-clang ?= "%compiler% -v" 2CCACHE_COMPILERCHECK:toolchain-clang ?= "%compiler% -v"
3HOST_CC_ARCH:prepend:toolchain-clang:class-target = "-target ${HOST_SYS} " 3HOST_CC_ARCH:prepend:toolchain-clang:class-target = "-target ${HOST_SYS} "
4HOST_CC_ARCH:prepend:toolchain-clang:class-nativesdk = "-target ${HOST_SYS} " 4HOST_CC_ARCH:prepend:toolchain-clang:class-nativesdk = "-target ${HOST_SYS} "
5CC:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" 5LD: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)}"
6CXX:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" 6LD: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)}"
7CPP:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} -E" 7
8CCLD:toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" 8LTO:toolchain-clang:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}"
9RANLIB:toolchain-clang = "${HOST_PREFIX}llvm-ranlib" 9LTO:toolchain-clang:class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}"
10AR:toolchain-clang = "${HOST_PREFIX}llvm-ar"
11NM:toolchain-clang = "${HOST_PREFIX}llvm-nm"
12OBJDUMP:toolchain-clang = "${HOST_PREFIX}llvm-objdump"
13OBJCOPY:toolchain-clang = "${HOST_PREFIX}llvm-objcopy"
14STRIP:toolchain-clang = "${HOST_PREFIX}llvm-strip"
15STRINGS:toolchain-clang = "${HOST_PREFIX}llvm-strings"
16READELF:toolchain-clang = "${HOST_PREFIX}llvm-readelf"
17LD: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
19LTO:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}"
20 10
21COMPILER_RT ??= "" 11COMPILER_RT ??= ""
22COMPILER_RT:class-native = "-rtlib=libgcc ${UNWINDLIB}"
23COMPILER_RT:armeb = "-rtlib=libgcc ${UNWINDLIB}" 12COMPILER_RT:armeb = "-rtlib=libgcc ${UNWINDLIB}"
24COMPILER_RT:libc-klibc = "-rtlib=libgcc ${UNWINDLIB}" 13COMPILER_RT:libc-klibc = "-rtlib=libgcc ${UNWINDLIB}"
25 14
26UNWINDLIB ??= "" 15UNWINDLIB ??= ""
27UNWINDLIB:class-native = "--unwindlib=libgcc"
28UNWINDLIB:armeb = "--unwindlib=libgcc" 16UNWINDLIB:armeb = "--unwindlib=libgcc"
29UNWINDLIB_libc-klibc = "--unwindlib=libgcc" 17UNWINDLIB_libc-klibc = "--unwindlib=libgcc"
30 18
@@ -34,10 +22,6 @@ LIBCPLUSPLUS:armv5 = "-stdlib=libstdc++"
34CXXFLAGS:append:toolchain-clang = " ${LIBCPLUSPLUS}" 22CXXFLAGS:append:toolchain-clang = " ${LIBCPLUSPLUS}"
35LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" 23LDFLAGS:append:toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}"
36 24
37TUNE_CCARGS:remove:toolchain-clang = "-meb"
38TUNE_CCARGS:remove:toolchain-clang = "-mel"
39TUNE_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
42TUNE_CCARGS:remove:toolchain-clang = "\ 26TUNE_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
82LDFLAGS:append:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}" 66LDFLAGS:append:toolchain-clang:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}"
67LDFLAGS:append:toolchain-clang:class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=lld', '', d)}"
83LDFLAGS:remove:toolchain-clang:powerpc = "-fuse-ld=lld" 68LDFLAGS: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
87DEBUG_PREFIX_MAP:remove:toolchain-clang = "-fcanon-prefix-map" 72DEBUG_PREFIX_MAP:remove:toolchain-clang = "-fcanon-prefix-map"
88 73
89# choose between 'gcc' 'clang' an empty '' can be used as well
90TOOLCHAIN ??= "gcc"
91# choose between 'gnu' 'llvm' 74# choose between 'gnu' 'llvm'
92TC_CXX_RUNTIME ??= "gnu" 75TC_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"
95TC_CXX_RUNTIME:armeb = "gnu" 78TC_CXX_RUNTIME:armeb = "gnu"
96TC_CXX_RUNTIME:armv5 = "gnu" 79TC_CXX_RUNTIME:armv5 = "gnu"
97 80
98TOOLCHAIN:class-native = "gcc" 81#TOOLCHAIN:class-native = "gcc"
99TOOLCHAIN:class-nativesdk = "gcc" 82#TOOLCHAIN:class-nativesdk = "gcc"
100TOOLCHAIN:class-cross-canadian = "gcc" 83#TOOLCHAIN:class-cross-canadian = "gcc"
101TOOLCHAIN:class-crosssdk = "gcc" 84#TOOLCHAIN:class-crosssdk = "gcc"
102TOOLCHAIN:class-cross = "gcc" 85#TOOLCHAIN:class-cross = "gcc"
103 86
104OVERRIDES =. "${@['', 'toolchain-${TOOLCHAIN}:']['${TOOLCHAIN}' != '']}" 87#OVERRIDES =. "${@['', 'toolchain-${TOOLCHAIN}:']['${TOOLCHAIN}' != '']}"
105OVERRIDES =. "${@['', 'runtime-${TC_CXX_RUNTIME}:']['${TC_CXX_RUNTIME}' != '']}" 88OVERRIDES =. "${@['', 'runtime-${TC_CXX_RUNTIME}:']['${TC_CXX_RUNTIME}' != '']}"
106OVERRIDES[vardepsexclude] += "TOOLCHAIN TC_CXX_RUNTIME" 89OVERRIDES[vardepsexclude] += "TC_CXX_RUNTIME"
107 90
108YOCTO_ALTERNATE_EXE_PATH:toolchain-clang:class-target = "${STAGING_BINDIR}/llvm-config" 91YOCTO_ALTERNATE_EXE_PATH:toolchain-clang:class-target = "${STAGING_BINDIR}/llvm-config"
109YOCTO_ALTERNATE_LIBDIR:toolchain-clang:class-target = "/${BASELIB}" 92YOCTO_ALTERNATE_LIBDIR:toolchain-clang:class-target = "/${BASELIB}"
@@ -139,8 +122,8 @@ def clang_base_deps(d):
139 return "" 122 return ""
140 123
141BASE_DEFAULT_DEPS:append:class-target:toolchain-clang:class-target = " ${@clang_base_deps(d)}" 124BASE_DEFAULT_DEPS:append:class-target:toolchain-clang:class-target = " ${@clang_base_deps(d)}"
142BASE_DEFAULT_DEPS:append:class-native:toolchain-clang:runtime-llvm = " libcxx-native compiler-rt-native" 125BASE_DEFAULT_DEPS:append:class-native:runtime-llvm = " libcxx-native compiler-rt-native"
143BASE_DEFAULT_DEPS:append:class-nativesdk:toolchain-clang:runtime-llvm = " clang-native nativesdk-libcxx nativesdk-compiler-rt" 126BASE_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
146POPULATESYSROOTDEPS:toolchain-clang:class-target = "${MLPREFIX}clang-cross-${TARGET_ARCH}:do_populate_sysroot" 129POPULATESYSROOTDEPS: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#
10DEPENDS:append:runtime-llvm = " clang-native compiler-rt-native libcxx-native"
11# Use libcxx headers for native parts
12CXXFLAGS:append:runtime-llvm = " -stdlib=libc++"
13BUILD_CXXFLAGS:append:runtime-llvm = " -isysroot=${STAGING_DIR_NATIVE} -stdlib=libc++"
14# Use libgcc for native parts
15LDFLAGS:append:runtime-llvm = " -stdlib=libc++ -rtlib=libgcc -unwindlib=libgcc"
16BUILD_LDFLAGS:append:runtime-llvm = " -stdlib=libc++ -rtlib=libgcc -unwindlib=libgcc"
17BUILD_CC:runtime-llvm = "${CCACHE}clang -isysroot=${STAGING_DIR_NATIVE}"
18BUILD_CXX:runtime-llvm = "${CCACHE}clang++ -isysroot=${STAGING_DIR_NATIVE}"
19BUILD_CPP:runtime-llvm = "${CCACHE}clang -isysroot=${STAGING_DIR_NATIVE} -E"
20BUILD_CCLD:runtime-llvm = "${CCACHE}clang"
21BUILD_RANLIB:runtime-llvm = "llvm-ranlib"
22BUILD_AR:runtime-llvm = "llvm-ar"
23BUILD_NM:runtime-llvm = "llvm-nm"