summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
Diffstat (limited to 'classes')
-rw-r--r--classes/clang.bbclass45
-rw-r--r--classes/lto.bbclass7
2 files changed, 31 insertions, 21 deletions
diff --git a/classes/clang.bbclass b/classes/clang.bbclass
index a00eef6..a56084d 100644
--- a/classes/clang.bbclass
+++ b/classes/clang.bbclass
@@ -1,5 +1,5 @@
1# Add the necessary override 1# Add the necessary override
2CCACHE_COMPILERCHECK_toolchain-clang = "%compiler% -v" 2CCACHE_COMPILERCHECK_toolchain-clang ?= "%compiler% -v"
3HOST_CC_ARCH_prepend_toolchain-clang = "-target ${HOST_SYS} " 3HOST_CC_ARCH_prepend_toolchain-clang = "-target ${HOST_SYS} "
4CC_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" 4CC_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
5CXX_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" 5CXX_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
@@ -9,11 +9,12 @@ RANLIB_toolchain-clang = "${HOST_PREFIX}llvm-ranlib"
9AR_toolchain-clang = "${HOST_PREFIX}llvm-ar" 9AR_toolchain-clang = "${HOST_PREFIX}llvm-ar"
10NM_toolchain-clang = "${HOST_PREFIX}llvm-nm" 10NM_toolchain-clang = "${HOST_PREFIX}llvm-nm"
11 11
12export CLANG_TIDY_toolchain-clang = "${HOST_PREFIX}clang-tidy" 12LTO_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', '-flto=thin', '-flto -fuse-ld=lld', d)}"
13PACKAGE_DEBUG_SPLIT_STYLE_toolchain-clang = "debug-without-src"
13 14
14COMPILER_RT ??= "${@bb.utils.contains("RUNTIME", "llvm", "-rtlib=compiler-rt ${UNWINDLIB}", "", d)}" 15COMPILER_RT ??= "${@bb.utils.contains("RUNTIME", "llvm", "-rtlib=compiler-rt ${UNWINDLIB}", "", d)}"
15COMPILER_RT_powerpc = "--rtlib=libgcc ${UNWINDLIB}" 16COMPILER_RT_powerpc = "-rtlib=libgcc ${UNWINDLIB}"
16COMPILER_RT_armeb = "--rtlib=libgcc ${UNWINDLIB}" 17COMPILER_RT_armeb = "-rtlib=libgcc ${UNWINDLIB}"
17 18
18UNWINDLIB ??= "${@bb.utils.contains("RUNTIME", "llvm", "--unwindlib=libgcc", "", d)}" 19UNWINDLIB ??= "${@bb.utils.contains("RUNTIME", "llvm", "--unwindlib=libgcc", "", d)}"
19UNWINDLIB_riscv64 = "--unwindlib=libgcc" 20UNWINDLIB_riscv64 = "--unwindlib=libgcc"
@@ -21,7 +22,7 @@ UNWINDLIB_riscv32 = "--unwindlib=libgcc"
21UNWINDLIB_powerpc = "--unwindlib=libgcc" 22UNWINDLIB_powerpc = "--unwindlib=libgcc"
22UNWINDLIB_armeb = "--unwindlib=libgcc" 23UNWINDLIB_armeb = "--unwindlib=libgcc"
23 24
24LIBCPLUSPLUS ??= "${@bb.utils.contains("RUNTIME", "llvm", "--stdlib=libc++", "", d)}" 25LIBCPLUSPLUS ??= "${@bb.utils.contains("RUNTIME", "llvm", "-stdlib=libc++", "", d)}"
25 26
26TARGET_CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}" 27TARGET_CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}"
27TUNE_CCARGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" 28TUNE_CCARGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}"
@@ -31,11 +32,18 @@ TUNE_CCARGS_remove_toolchain-clang = "-mel"
31TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" 32TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
32 33
33# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes 34# Clang does not yet support big.LITTLE performance tunes, so use the LITTLE for tunes
34TUNE_CCARGS_remove_toolchain-clang = "-mtune=cortex-a57.cortex-a53 -mtune=cortex-a72.cortex-a53 -mtune=cortex-a15.cortex-a7 -mtune=cortex-a17.cortex-a7 -mtune=cortex-a72.cortex-a35 -mtune=cortex-a73.cortex-a53 -mtune=cortex-a75.cortex-a55 -mtune=cortex-a76.cortex-a55" 35TUNE_CCARGS_remove_toolchain-clang = "-mcpu=cortex-a57.cortex-a53 -mcpu=cortex-a72.cortex-a53 -mcpu=cortex-a15.cortex-a7 -mcpu=cortex-a17.cortex-a7 -mcpu=cortex-a72.cortex-a35 -mcpu=cortex-a73.cortex-a53 -mcpu=cortex-a75.cortex-a55 -mcpu=cortex-a76.cortex-a55"
35TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa53 cortexa57-cortexa53 cortexa73-cortexa53", " -mtune=cortex-a53", "", d)}" 36TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa53 cortexa57-cortexa53 cortexa73-cortexa53", " -mcpu=cortex-a53", "", d)}"
36TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa15-cortexa7 cortexa17-cortexa7", " -mtune=cortex-a7", "", d)}" 37TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa15-cortexa7 cortexa17-cortexa7", " -mcpu=cortex-a7", "", d)}"
37TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa35", " -mtune=cortex-a35", "", d)}" 38TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa35", " -mcpu=cortex-a35", "", d)}"
38TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa75-cortex-a55 cortexa76-cortex-a55", " -mtune=cortex-a55", "", d)}" 39TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa75-cortex-a55 cortexa76-cortex-a55", " -mcpu=cortex-a55", "", d)}"
40
41# Clang does not support octeontx2 processor
42TUNE_CCARGS_remove_toolchain-clang = "-mcpu=octeontx2"
43
44# LLD does not yet support relaxation for RISCV e.g. https://reviews.freebsd.org/D25210
45TUNE_CCARGS_append_toolchain-clang_riscv32 = " -mno-relax"
46TUNE_CCARGS_append_toolchain-clang_riscv64 = " -mno-relax"
39 47
40TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mhard-float" 48TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mhard-float"
41TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mno-spe" 49TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mno-spe"
@@ -81,13 +89,13 @@ def clang_base_deps(d):
81 if not d.getVar('INHIBIT_DEFAULT_DEPS', False): 89 if not d.getVar('INHIBIT_DEFAULT_DEPS', False):
82 if not oe.utils.inherits(d, 'allarch') : 90 if not oe.utils.inherits(d, 'allarch') :
83 ret = " clang-cross-${TARGET_ARCH} virtual/libc " 91 ret = " clang-cross-${TARGET_ARCH} virtual/libc "
84 if (d.getVar('COMPILER_RT').find('--rtlib=compiler-rt') != -1): 92 if (d.getVar('COMPILER_RT').find('-rtlib=compiler-rt') != -1):
85 ret += " compiler-rt " 93 ret += " compiler-rt "
86 else: 94 else:
87 ret += " libgcc " 95 ret += " libgcc "
88 if (d.getVar('COMPILER_RT').find('--unwindlib=libunwind') != -1): 96 if (d.getVar('COMPILER_RT').find('--unwindlib=libunwind') != -1):
89 ret += " libcxx " 97 ret += " libcxx "
90 if (d.getVar('LIBCPLUSPLUS').find('--stdlib=libc++') != -1): 98 if (d.getVar('LIBCPLUSPLUS').find('-stdlib=libc++') != -1):
91 ret += " libcxx " 99 ret += " libcxx "
92 else: 100 else:
93 ret += " virtual/${TARGET_PREFIX}compilerlibs " 101 ret += " virtual/${TARGET_PREFIX}compilerlibs "
@@ -98,7 +106,16 @@ BASE_DEFAULT_DEPS_toolchain-clang_class-target = "${@clang_base_deps(d)}"
98 106
99cmake_do_generate_toolchain_file_append_toolchain-clang () { 107cmake_do_generate_toolchain_file_append_toolchain-clang () {
100 cat >> ${WORKDIR}/toolchain.cmake <<EOF 108 cat >> ${WORKDIR}/toolchain.cmake <<EOF
101set( CMAKE_CLANG_TIDY ${CLANG_TIDY} ) 109set( CMAKE_CLANG_TIDY ${HOST_PREFIX}clang-tidy )
102EOF 110EOF
111 sed -i 's/ -mmusl / /g' ${WORKDIR}/toolchain.cmake
103} 112}
104 113#
114# dump recipes which still use gcc
115#python __anonymous() {
116# toolchain = d.getVar("TOOLCHAIN")
117# if not toolchain or toolchain == "clang" or 'class-target' not in d.getVar('OVERRIDES').split(':'):
118# return
119# pkgn = d.getVar("PN")
120# bb.warn("%s - %s" % (pkgn, toolchain))
121#}
diff --git a/classes/lto.bbclass b/classes/lto.bbclass
deleted file mode 100644
index 80a3d4d..0000000
--- a/classes/lto.bbclass
+++ /dev/null
@@ -1,7 +0,0 @@
1# Enable LTO based on global distro settings
2TOOLCHAIN_OPTIONS_append_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'thin-lto', ' -flto=thin -fuse-ld=gold', '', d)}"
3TOOLCHAIN_OPTIONS_append_toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'full-lto', ' -flto=full -fuse-ld=gold', '', d)}"
4RANLIB_toolchain-clang = "${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib"
5AR_toolchain-clang = "${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar"
6NM_toolchain-clang = "${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm"
7