summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kelly <mkelly@xevo.com>2017-03-06 16:38:53 -0800
committerKhem Raj <raj.khem@gmail.com>2017-03-21 11:46:51 -0700
commit9649a07fcfee2bec0794ea2dd43a3f3e8c535e1c (patch)
treea25919aa3010a2e5eefd954106bdb2eea3ded7da
parent8b71108bbb9c5c0c53d2af5c0eadb67c4a6f125b (diff)
downloadmeta-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.bb24
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
11PV .= "+git${SRCPV}" 11PV .= "+git${SRCPV}"
12 12
13#
14# Default to building only required targets (user overridable).
15#
16LLVM_TARGETS_TO_BUILD ?= "${@get_clang_host_arch(bb, d)};${@get_clang_target_arch(bb, d)}"
17
13LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=${LLVMMD5SUM}; \ 18LIC_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
45OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH" 50OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"
46 51
47def get_clang_target_arch(bb, d): 52def 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
69def get_clang_host_arch(bb, d):
70 return get_clang_arch(bb, d, 'HOST_ARCH')
71
72def get_clang_target_arch(bb, d):
73 return get_clang_arch(bb, d, 'TARGET_ARCH')
74
63PACKAGECONFIG ??= "compiler-rt libcplusplus" 75PACKAGECONFIG ??= "compiler-rt libcplusplus"
64PACKAGECONFIG_class-native = "" 76PACKAGECONFIG_class-native = ""
65 77
@@ -74,10 +86,10 @@ EXTRA_OECMAKE="-DLLVM_ENABLE_RTTI=True \
74" 86"
75 87
76EXTRA_OECMAKE_append_class-native = "\ 88EXTRA_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"
79EXTRA_OECMAKE_append_class-nativesdk = "\ 91EXTRA_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"