diff options
Diffstat (limited to 'classes/clang.bbclass')
-rw-r--r-- | classes/clang.bbclass | 45 |
1 files changed, 31 insertions, 14 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 |
2 | CCACHE_COMPILERCHECK_toolchain-clang = "%compiler% -v" | 2 | CCACHE_COMPILERCHECK_toolchain-clang ?= "%compiler% -v" |
3 | HOST_CC_ARCH_prepend_toolchain-clang = "-target ${HOST_SYS} " | 3 | HOST_CC_ARCH_prepend_toolchain-clang = "-target ${HOST_SYS} " |
4 | CC_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_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" | 5 | CXX_toolchain-clang = "${CCACHE}${HOST_PREFIX}clang++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" |
@@ -9,11 +9,12 @@ RANLIB_toolchain-clang = "${HOST_PREFIX}llvm-ranlib" | |||
9 | AR_toolchain-clang = "${HOST_PREFIX}llvm-ar" | 9 | AR_toolchain-clang = "${HOST_PREFIX}llvm-ar" |
10 | NM_toolchain-clang = "${HOST_PREFIX}llvm-nm" | 10 | NM_toolchain-clang = "${HOST_PREFIX}llvm-nm" |
11 | 11 | ||
12 | export CLANG_TIDY_toolchain-clang = "${HOST_PREFIX}clang-tidy" | 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 | 14 | ||
14 | COMPILER_RT ??= "${@bb.utils.contains("RUNTIME", "llvm", "-rtlib=compiler-rt ${UNWINDLIB}", "", d)}" | 15 | COMPILER_RT ??= "${@bb.utils.contains("RUNTIME", "llvm", "-rtlib=compiler-rt ${UNWINDLIB}", "", d)}" |
15 | COMPILER_RT_powerpc = "--rtlib=libgcc ${UNWINDLIB}" | 16 | COMPILER_RT_powerpc = "-rtlib=libgcc ${UNWINDLIB}" |
16 | COMPILER_RT_armeb = "--rtlib=libgcc ${UNWINDLIB}" | 17 | COMPILER_RT_armeb = "-rtlib=libgcc ${UNWINDLIB}" |
17 | 18 | ||
18 | UNWINDLIB ??= "${@bb.utils.contains("RUNTIME", "llvm", "--unwindlib=libgcc", "", d)}" | 19 | UNWINDLIB ??= "${@bb.utils.contains("RUNTIME", "llvm", "--unwindlib=libgcc", "", d)}" |
19 | UNWINDLIB_riscv64 = "--unwindlib=libgcc" | 20 | UNWINDLIB_riscv64 = "--unwindlib=libgcc" |
@@ -21,7 +22,7 @@ UNWINDLIB_riscv32 = "--unwindlib=libgcc" | |||
21 | UNWINDLIB_powerpc = "--unwindlib=libgcc" | 22 | UNWINDLIB_powerpc = "--unwindlib=libgcc" |
22 | UNWINDLIB_armeb = "--unwindlib=libgcc" | 23 | UNWINDLIB_armeb = "--unwindlib=libgcc" |
23 | 24 | ||
24 | LIBCPLUSPLUS ??= "${@bb.utils.contains("RUNTIME", "llvm", "--stdlib=libc++", "", d)}" | 25 | LIBCPLUSPLUS ??= "${@bb.utils.contains("RUNTIME", "llvm", "-stdlib=libc++", "", d)}" |
25 | 26 | ||
26 | TARGET_CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}" | 27 | TARGET_CXXFLAGS_append_toolchain-clang = " ${LIBCPLUSPLUS}" |
27 | TUNE_CCARGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" | 28 | TUNE_CCARGS_append_toolchain-clang = " ${COMPILER_RT} ${LIBCPLUSPLUS}" |
@@ -31,11 +32,18 @@ TUNE_CCARGS_remove_toolchain-clang = "-mel" | |||
31 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" | 32 | TUNE_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 |
34 | TUNE_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" | 35 | TUNE_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" |
35 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa53 cortexa57-cortexa53 cortexa73-cortexa53", " -mtune=cortex-a53", "", d)}" | 36 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa53 cortexa57-cortexa53 cortexa73-cortexa53", " -mcpu=cortex-a53", "", d)}" |
36 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa15-cortexa7 cortexa17-cortexa7", " -mtune=cortex-a7", "", d)}" | 37 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa15-cortexa7 cortexa17-cortexa7", " -mcpu=cortex-a7", "", d)}" |
37 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa35", " -mtune=cortex-a35", "", d)}" | 38 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa72-cortexa35", " -mcpu=cortex-a35", "", d)}" |
38 | TUNE_CCARGS_append_toolchain-clang = "${@bb.utils.contains_any("TUNE_FEATURES", "cortexa75-cortex-a55 cortexa76-cortex-a55", " -mtune=cortex-a55", "", d)}" | 39 | TUNE_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 | ||
42 | TUNE_CCARGS_remove_toolchain-clang = "-mcpu=octeontx2" | ||
43 | |||
44 | # LLD does not yet support relaxation for RISCV e.g. https://reviews.freebsd.org/D25210 | ||
45 | TUNE_CCARGS_append_toolchain-clang_riscv32 = " -mno-relax" | ||
46 | TUNE_CCARGS_append_toolchain-clang_riscv64 = " -mno-relax" | ||
39 | 47 | ||
40 | TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mhard-float" | 48 | TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mhard-float" |
41 | TUNE_CCARGS_remove_toolchain-clang_powerpc = "-mno-spe" | 49 | TUNE_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 | ||
99 | cmake_do_generate_toolchain_file_append_toolchain-clang () { | 107 | cmake_do_generate_toolchain_file_append_toolchain-clang () { |
100 | cat >> ${WORKDIR}/toolchain.cmake <<EOF | 108 | cat >> ${WORKDIR}/toolchain.cmake <<EOF |
101 | set( CMAKE_CLANG_TIDY ${CLANG_TIDY} ) | 109 | set( CMAKE_CLANG_TIDY ${HOST_PREFIX}clang-tidy ) |
102 | EOF | 110 | EOF |
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 | #} | ||