summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/clang/clang_git.bb
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-devtools/clang/clang_git.bb')
-rw-r--r--recipes-devtools/clang/clang_git.bb27
1 files changed, 23 insertions, 4 deletions
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb
index b3b8272..464f2f7 100644
--- a/recipes-devtools/clang/clang_git.bb
+++ b/recipes-devtools/clang/clang_git.bb
@@ -14,6 +14,12 @@ inherit cmake cmake-native
14 14
15OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" 15OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
16 16
17def get_clang_experimental_arch(bb, d, arch_var):
18 import re
19 a = d.getVar(arch_var, True)
20 if re.match('riscv(32|64)$', a): return 'RISCV'
21 return ""
22
17def get_clang_arch(bb, d, arch_var): 23def get_clang_arch(bb, d, arch_var):
18 import re 24 import re
19 a = d.getVar(arch_var, True) 25 a = d.getVar(arch_var, True)
@@ -24,9 +30,8 @@ def get_clang_arch(bb, d, arch_var):
24 elif re.match('aarch64_be$', a): return 'AArch64' 30 elif re.match('aarch64_be$', a): return 'AArch64'
25 elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips' 31 elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips'
26 elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC' 32 elif re.match('p(pc|owerpc)(|64)', a): return 'PowerPC'
27 elif re.match('riscv(32|64)$', a): return 'RISCV'
28 else: 33 else:
29 bb.error("cannot map '%s' to a supported llvm architecture" % a) 34 bb.note("'%s' is not a primary llvm architecture" % a)
30 return "" 35 return ""
31 36
32def get_clang_host_arch(bb, d): 37def get_clang_host_arch(bb, d):
@@ -35,6 +40,9 @@ def get_clang_host_arch(bb, d):
35def get_clang_target_arch(bb, d): 40def get_clang_target_arch(bb, d):
36 return get_clang_arch(bb, d, 'TARGET_ARCH') 41 return get_clang_arch(bb, d, 'TARGET_ARCH')
37 42
43def get_clang_experimental_target_arch(bb, d):
44 return get_clang_experimental_arch(bb, d, 'TARGET_ARCH')
45
38PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs" 46PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs"
39PACKAGECONFIG_class-native = "" 47PACKAGECONFIG_class-native = ""
40PACKAGECONFIG_class-nativesdk = "compiler-rt libcplusplus" 48PACKAGECONFIG_class-nativesdk = "compiler-rt libcplusplus"
@@ -50,7 +58,11 @@ LLVM_TARGETS_TO_BUILD ?= "AArch64;ARM;BPF;Mips;PowerPC;X86"
50LLVM_TARGETS_TO_BUILD_append = ";${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}" 58LLVM_TARGETS_TO_BUILD_append = ";${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}"
51 59
52LLVM_TARGETS_TO_BUILD_TARGET ?= "" 60LLVM_TARGETS_TO_BUILD_TARGET ?= ""
53LLVM_TARGETS_TO_BUILD_TARGET_append ?= ";${@get_clang_target_arch(bb, d)}" 61LLVM_TARGETS_TO_BUILD_TARGET_append ?= "${@get_clang_target_arch(bb, d)}"
62
63LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= "RISCV"
64LLVM_EXPERIMENTAL_TARGETS_TO_BUILD_append = ";${@get_clang_experimental_target_arch(bb, d)}"
65
54EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ 66EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
55 -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \ 67 -DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \
56 -DLLVM_ENABLE_PIC=ON \ 68 -DLLVM_ENABLE_PIC=ON \
@@ -70,11 +82,13 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
70 82
71EXTRA_OECMAKE_append_class-native = "\ 83EXTRA_OECMAKE_append_class-native = "\
72 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \ 84 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \
85 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
73" 86"
74EXTRA_OECMAKE_append_class-nativesdk = "\ 87EXTRA_OECMAKE_append_class-nativesdk = "\
75 -DCMAKE_CROSSCOMPILING:BOOL=ON \ 88 -DCMAKE_CROSSCOMPILING:BOOL=ON \
76 -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ 89 -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \
77 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \ 90 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \
91 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
78 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ 92 -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \
79 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ 93 -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \
80" 94"
@@ -86,7 +100,12 @@ EXTRA_OECMAKE_append_class-target = "\
86 -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \ 100 -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \
87 -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS} \ 101 -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS} \
88" 102"
89 103EXTRA_OECMAKE_append_class-target_riscv64 = "\
104 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
105"
106EXTRA_OECMAKE_append_class-target_riscv32 = "\
107 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
108"
90DEPENDS = "zlib libffi libxml2 ninja-native" 109DEPENDS = "zlib libffi libxml2 ninja-native"
91DEPENDS_append_class-nativesdk = " clang-native virtual/${TARGET_PREFIX}binutils-crosssdk virtual/${TARGET_PREFIX}gcc-crosssdk virtual/${TARGET_PREFIX}g++-crosssdk" 110DEPENDS_append_class-nativesdk = " clang-native virtual/${TARGET_PREFIX}binutils-crosssdk virtual/${TARGET_PREFIX}gcc-crosssdk virtual/${TARGET_PREFIX}g++-crosssdk"
92DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TOOLCHAIN', 'gcc', 'virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++', '', d)}" 111DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TOOLCHAIN', 'gcc', 'virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++', '', d)}"