diff options
author | Martin Kelly <mkelly@xevo.com> | 2017-03-06 16:38:53 -0800 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2017-03-21 11:46:51 -0700 |
commit | 9649a07fcfee2bec0794ea2dd43a3f3e8c535e1c (patch) | |
tree | a25919aa3010a2e5eefd954106bdb2eea3ded7da | |
parent | 8b71108bbb9c5c0c53d2af5c0eadb67c4a6f125b (diff) | |
download | meta-clang-9649a07fcfee2bec0794ea2dd43a3f3e8c535e1c.tar.gz |
clang: allow override for not building all targets
Allow the user to not build all clang target architectures (by default, all
architectures are built). This speeds up build times and reduces image size.
Note, however, that the set of architectures built must still be the same
between the native and cross clang, because the native llvm-config reports
--targets-built according to what "clang-native" supports. Thus when we have
target libraries that are a subset of native libraries, the cross llvm-config
will fail because it can't find some of the libraries that the native
llvm-config finds.
Signed-off-by: Martin Kelly <mkelly@xevo.com>
-rw-r--r-- | recipes-devtools/clang/clang_git.bb | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb index 656f27a..d4374f6 100644 --- a/recipes-devtools/clang/clang_git.bb +++ b/recipes-devtools/clang/clang_git.bb | |||
@@ -10,6 +10,11 @@ require clang.inc | |||
10 | 10 | ||
11 | PV .= "+git${SRCPV}" | 11 | PV .= "+git${SRCPV}" |
12 | 12 | ||
13 | # | ||
14 | # Default to building only required targets (user overridable). | ||
15 | # | ||
16 | LLVM_TARGETS_TO_BUILD ?= "${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}" | ||
17 | |||
13 | LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=${LLVMMD5SUM}; \ | 18 | LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=${LLVMMD5SUM}; \ |
14 | file://tools/clang/LICENSE.TXT;md5=${CLANGMD5SUM}; \ | 19 | file://tools/clang/LICENSE.TXT;md5=${CLANGMD5SUM}; \ |
15 | " | 20 | " |
@@ -44,11 +49,11 @@ inherit cmake | |||
44 | 49 | ||
45 | OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" | 50 | OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" |
46 | 51 | ||
47 | def get_clang_target_arch(bb, d): | 52 | def get_clang_arch(bb, d, arch_var): |
48 | target_arch = d.getVar('TRANSLATED_TARGET_ARCH', True) | 53 | target_arch = d.getVar(arch_var, True) |
49 | clang_arches = { | 54 | clang_arches = { |
50 | "i586" : "X86", | 55 | "i586" : "X86", |
51 | "x86-64" : "X86", | 56 | "x86_64" : "X86", |
52 | "powerpc" : "PowerPC", | 57 | "powerpc" : "PowerPC", |
53 | "mips" : "Mips", | 58 | "mips" : "Mips", |
54 | "arm" : "ARM", | 59 | "arm" : "ARM", |
@@ -60,6 +65,13 @@ def get_clang_target_arch(bb, d): | |||
60 | return clang_arches[target_arch] | 65 | return clang_arches[target_arch] |
61 | return "" | 66 | return "" |
62 | 67 | ||
68 | |||
69 | def get_clang_host_arch(bb, d): | ||
70 | return get_clang_arch(bb, d, 'HOST_ARCH') | ||
71 | |||
72 | def get_clang_target_arch(bb, d): | ||
73 | return get_clang_arch(bb, d, 'TARGET_ARCH') | ||
74 | |||
63 | PACKAGECONFIG ??= "compiler-rt libcplusplus" | 75 | PACKAGECONFIG ??= "compiler-rt libcplusplus" |
64 | PACKAGECONFIG_class-native = "" | 76 | PACKAGECONFIG_class-native = "" |
65 | 77 | ||
@@ -74,10 +86,10 @@ EXTRA_OECMAKE="-DLLVM_ENABLE_RTTI=True \ | |||
74 | " | 86 | " |
75 | 87 | ||
76 | EXTRA_OECMAKE_append_class-native = "\ | 88 | EXTRA_OECMAKE_append_class-native = "\ |
77 | -DLLVM_TARGETS_TO_BUILD='AArch64;ARM;Mips;PowerPC;X86' \ | 89 | -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS_TO_BUILD}" \ |
78 | " | 90 | " |
79 | EXTRA_OECMAKE_append_class-nativesdk = "\ | 91 | EXTRA_OECMAKE_append_class-nativesdk = "\ |
80 | -DLLVM_TARGETS_TO_BUILD='AArch64;ARM;Mips;PowerPC;X86' \ | 92 | -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS_TO_BUILD}" \ |
81 | -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ | 93 | -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ |
82 | -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ | 94 | -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ |
83 | " | 95 | " |
@@ -87,7 +99,7 @@ EXTRA_OECMAKE_append_class-target = "\ | |||
87 | -DLLVM_ENABLE_PIC=ON \ | 99 | -DLLVM_ENABLE_PIC=ON \ |
88 | -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ | 100 | -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ |
89 | -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ | 101 | -DCLANG_TABLEGEN=${STAGING_BINDIR_NATIVE}/clang-tblgen \ |
90 | -DLLVM_TARGETS_TO_BUILD=${@get_clang_target_arch(bb, d)} \ | 102 | -DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS_TO_BUILD}" \ |
91 | -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \ | 103 | -DLLVM_TARGET_ARCH=${@get_clang_target_arch(bb, d)} \ |
92 | -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS} \ | 104 | -DLLVM_DEFAULT_TARGET_TRIPLE=${TARGET_SYS} \ |
93 | " | 105 | " |