diff options
Diffstat (limited to 'recipes-devtools/clang/clang_git.bb')
-rw-r--r-- | recipes-devtools/clang/clang_git.bb | 27 |
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 | ||
15 | OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" | 15 | OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" |
16 | 16 | ||
17 | def 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 | |||
17 | def get_clang_arch(bb, d, arch_var): | 23 | def 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 | ||
32 | def get_clang_host_arch(bb, d): | 37 | def get_clang_host_arch(bb, d): |
@@ -35,6 +40,9 @@ def get_clang_host_arch(bb, d): | |||
35 | def get_clang_target_arch(bb, d): | 40 | def 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 | ||
43 | def get_clang_experimental_target_arch(bb, d): | ||
44 | return get_clang_experimental_arch(bb, d, 'TARGET_ARCH') | ||
45 | |||
38 | PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs" | 46 | PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs" |
39 | PACKAGECONFIG_class-native = "" | 47 | PACKAGECONFIG_class-native = "" |
40 | PACKAGECONFIG_class-nativesdk = "compiler-rt libcplusplus" | 48 | PACKAGECONFIG_class-nativesdk = "compiler-rt libcplusplus" |
@@ -50,7 +58,11 @@ LLVM_TARGETS_TO_BUILD ?= "AArch64;ARM;BPF;Mips;PowerPC;X86" | |||
50 | LLVM_TARGETS_TO_BUILD_append = ";${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}" | 58 | LLVM_TARGETS_TO_BUILD_append = ";${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}" |
51 | 59 | ||
52 | LLVM_TARGETS_TO_BUILD_TARGET ?= "" | 60 | LLVM_TARGETS_TO_BUILD_TARGET ?= "" |
53 | LLVM_TARGETS_TO_BUILD_TARGET_append ?= ";${@get_clang_target_arch(bb, d)}" | 61 | LLVM_TARGETS_TO_BUILD_TARGET_append ?= "${@get_clang_target_arch(bb, d)}" |
62 | |||
63 | LLVM_EXPERIMENTAL_TARGETS_TO_BUILD ?= "RISCV" | ||
64 | LLVM_EXPERIMENTAL_TARGETS_TO_BUILD_append = ";${@get_clang_experimental_target_arch(bb, d)}" | ||
65 | |||
54 | EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ | 66 | EXTRA_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 | ||
71 | EXTRA_OECMAKE_append_class-native = "\ | 83 | EXTRA_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 | " |
74 | EXTRA_OECMAKE_append_class-nativesdk = "\ | 87 | EXTRA_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 | 103 | EXTRA_OECMAKE_append_class-target_riscv64 = "\ | |
104 | -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ | ||
105 | " | ||
106 | EXTRA_OECMAKE_append_class-target_riscv32 = "\ | ||
107 | -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ | ||
108 | " | ||
90 | DEPENDS = "zlib libffi libxml2 ninja-native" | 109 | DEPENDS = "zlib libffi libxml2 ninja-native" |
91 | DEPENDS_append_class-nativesdk = " clang-native virtual/${TARGET_PREFIX}binutils-crosssdk virtual/${TARGET_PREFIX}gcc-crosssdk virtual/${TARGET_PREFIX}g++-crosssdk" | 110 | DEPENDS_append_class-nativesdk = " clang-native virtual/${TARGET_PREFIX}binutils-crosssdk virtual/${TARGET_PREFIX}gcc-crosssdk virtual/${TARGET_PREFIX}g++-crosssdk" |
92 | DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TOOLCHAIN', 'gcc', 'virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++', '', d)}" | 111 | DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TOOLCHAIN', 'gcc', 'virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++', '', d)}" |