summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2019-02-08 14:34:09 -0800
committerKhem Raj <raj.khem@gmail.com>2019-02-09 19:27:13 -0800
commit759ea83af5aa6f69caeb41e2496c0d01808e3d57 (patch)
tree530e43a4d547c49bc8332e0681ad6e0f4f186f1b
parent84440d29f2340a3b4267a39c01a6e5936f5f1af2 (diff)
downloadmeta-clang-759ea83af5aa6f69caeb41e2496c0d01808e3d57.tar.gz
clang: Enable 2 stage bootstrap for clang-native
This will help in using clang Thin-LTO to compile clang itself Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--recipes-devtools/clang/clang_git.bb28
1 files changed, 23 insertions, 5 deletions
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb
index 52d013d..84ba357 100644
--- a/recipes-devtools/clang/clang_git.bb
+++ b/recipes-devtools/clang/clang_git.bb
@@ -44,10 +44,10 @@ def get_clang_experimental_target_arch(bb, d):
44 return get_clang_experimental_arch(bb, d, 'TARGET_ARCH') 44 return get_clang_experimental_arch(bb, d, 'TARGET_ARCH')
45 45
46PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs ${@bb.utils.filter('DISTRO_FEATURES', 'thin-lto full-lto', d)}" 46PACKAGECONFIG ??= "compiler-rt libcplusplus shared-libs ${@bb.utils.filter('DISTRO_FEATURES', 'thin-lto full-lto', d)}"
47PACKAGECONFIG_class-native = "thin-lto ${@bb.utils.filter('DISTRO_FEATURES', 'full-lto', d)}" 47PACKAGECONFIG_class-native = ""
48PACKAGECONFIG_class-nativesdk = "compiler-rt libcplusplus thin-lto ${@bb.utils.filter('DISTRO_FEATURES', 'full-lto', d)}" 48PACKAGECONFIG_class-nativesdk = "compiler-rt libcplusplus thin-lto ${@bb.utils.filter('DISTRO_FEATURES', 'full-lto', d)}"
49 49
50PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,,compiler-rt" 50PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,,libcxx"
51PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,libcxx" 51PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,libcxx"
52PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," 52PACKAGECONFIG[thin-lto] = "-DLLVM_ENABLE_LTO=Thin -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
53PACKAGECONFIG[full-lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," 53PACKAGECONFIG[full-lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
@@ -83,6 +83,10 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
83" 83"
84 84
85EXTRA_OECMAKE_append_class-native = "\ 85EXTRA_OECMAKE_append_class-native = "\
86 -DCLANG_ENABLE_BOOTSTRAP=On \
87 -DCLANG_BOOTSTRAP_PASSTHROUGH='${PASSTHROUGH}' \
88 -DBOOTSTRAP_LLVM_ENABLE_LTO=Thin \
89 -DBOOTSTRAP_LLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
86 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \ 90 -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \
87 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ 91 -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \
88" 92"
@@ -115,14 +119,29 @@ DEPENDS = "zlib libffi libxml2 ninja-native"
115DEPENDS_append_class-nativesdk = " clang-native virtual/${TARGET_PREFIX}binutils-crosssdk virtual/${TARGET_PREFIX}gcc-crosssdk virtual/${TARGET_PREFIX}g++-crosssdk" 119DEPENDS_append_class-nativesdk = " clang-native virtual/${TARGET_PREFIX}binutils-crosssdk virtual/${TARGET_PREFIX}gcc-crosssdk virtual/${TARGET_PREFIX}g++-crosssdk"
116DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TOOLCHAIN', 'gcc', 'virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++', '', d)}" 120DEPENDS_append_class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TOOLCHAIN', 'gcc', 'virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++', '', d)}"
117 121
122BOOTSTRAPSTAGE ?= ""
123BOOTSTRAPSTAGE_class-native = "stage2"
124INSTALLTARGET ?= "install"
125INSTALLTARGET_class-native = "stage2-install"
126PASSTRHOUGH ?= ""
127PASSTHROUGH_class-native = "\
128CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_CXX_STDLIB;LLVM_ENABLE_LTO;LLVM_BUILD_LLVM_DYLIB;\
129LLVM_BINUTILS_INCDIR;LLVM_LINK_LLVM_DYLIB;\
130LLVM_ENABLE_ASSERTIONS;LLVM_ENABLE_EXPENSIVE_CHECKS;LLVM_ENABLE_PIC;\
131LLVM_BINDINGS_LIST;LLVM_ENABLE_FFI;FFI_INCLUDE_DIR;LLVM_OPTIMIZED_TABLEGEN;\
132LLVM_ENABLE_RTTI;LLVM_ENABLE_EH;LLVM_BUILD_EXTERNAL_COMPILER_RT;CMAKE_SYSTEM_NAME;\
133CMAKE_BUILD_TYPE;BUILD_SHARED_LIBS;LLVM_ENABLE_PROJECTS;\
134LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;\
135"
136
118RRECOMMENDS_${PN} = "binutils" 137RRECOMMENDS_${PN} = "binutils"
119 138
120do_compile() { 139do_compile() {
121 ninja ${PARALLEL_MAKE} 140 ninja ${PARALLEL_MAKE} ${BOOTSTRAPSTAGE}
122} 141}
123 142
124do_install() { 143do_install() {
125 DESTDIR=${D} ninja ${PARALLEL_MAKE} install 144 DESTDIR=${D} ninja ${PARALLEL_MAKE} ${INSTALLTARGET}
126} 145}
127 146
128do_install_append_class-native () { 147do_install_append_class-native () {
@@ -174,4 +193,3 @@ INSANE_SKIP_${PN}-dev += "dev-elf"
174SSTATE_SCAN_FILES_remove = "*-config" 193SSTATE_SCAN_FILES_remove = "*-config"
175 194
176TOOLCHAIN = "clang" 195TOOLCHAIN = "clang"
177