summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/clang/clang_git.bb
diff options
context:
space:
mode:
authorDaniel McGregor <daniel.mcgregor@vecima.com>2019-02-14 18:42:49 -0600
committerKhem Raj <raj.khem@gmail.com>2020-01-20 08:56:16 -0800
commit269634b393554a5502e47cc0cf9a3f63a5856d45 (patch)
treeaeacca0fcd9352195872459e7b7a5621fd1c0269 /recipes-devtools/clang/clang_git.bb
parentcda1376a97b86d6ae5c92fd931f9583430c73885 (diff)
downloadmeta-clang-269634b393554a5502e47cc0cf9a3f63a5856d45.tar.gz
clang: stay closer to cmake.bbclass
Allow more of the cmake variables coming from the OE environment through, otherwise the release C flags and CXX flags get reset to LLVM's default, which greatly extend build times. Also switch to using cmake.bbclass's do_compile and do_install commands. There's no need to call ninja directly anymore. Signed-off-by: Daniel McGregor <daniel.mcgregor@vecima.com>
Diffstat (limited to 'recipes-devtools/clang/clang_git.bb')
-rw-r--r--recipes-devtools/clang/clang_git.bb66
1 files changed, 37 insertions, 29 deletions
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb
index d9d36ad..8983fb9 100644
--- a/recipes-devtools/clang/clang_git.bb
+++ b/recipes-devtools/clang/clang_git.bb
@@ -71,9 +71,11 @@ PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,,"
71PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,," 71PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,,"
72PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_DISABLE_LIBEDIT=0,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_DISABLE_LIBEDIT=1,libedit libedit-native" 72PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_DISABLE_LIBEDIT=0,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_DISABLE_LIBEDIT=1,libedit libedit-native"
73 73
74BUILDTARGET = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', '', d)}" 74OECMAKE_SOURCEPATH = "${S}/llvm"
75
76OECMAKE_TARGET_COMPILE = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', 'all', d)}"
77OECMAKE_TARGET_INSTALL = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}"
75BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}" 78BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}"
76INSTALLTARGET = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}"
77 79
78PASSTHROUGH = "\ 80PASSTHROUGH = "\
79CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_CXX_STDLIB;LLVM_BUILD_LLVM_DYLIB;LLVM_LINK_LLVM_DYLIB;\ 81CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_CXX_STDLIB;LLVM_BUILD_LLVM_DYLIB;LLVM_LINK_LLVM_DYLIB;\
@@ -84,6 +86,7 @@ CMAKE_BUILD_TYPE;BUILD_SHARED_LIBS;LLVM_ENABLE_PROJECTS;LLVM_BINUTILS_INCDIR;\
84LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\ 86LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\
85PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\ 87PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\
86LLVM_ENABLE_LIBEDIT;LLDB_DISABLE_LIBEDIT; \ 88LLVM_ENABLE_LIBEDIT;LLDB_DISABLE_LIBEDIT; \
89CMAKE_C_FLAGS_RELEASE;CMAKE_CXX_FLAGS_RELEASE;CMAKE_ASM_FLAGS_RELEASE;\
87" 90"
88# 91#
89# Default to build all OE-Core supported target arches (user overridable). 92# Default to build all OE-Core supported target arches (user overridable).
@@ -114,7 +117,6 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
114 -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;lld;lldb' \ 117 -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;lld;lldb' \
115 -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \ 118 -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \
116 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ 119 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
117 -G Ninja ${S}/llvm \
118" 120"
119 121
120EXTRA_OECMAKE_append_class-native = "\ 122EXTRA_OECMAKE_append_class-native = "\
@@ -164,13 +166,8 @@ COMPATIBLE_HOST_riscv32 = "null"
164RRECOMMENDS_${PN} = "binutils" 166RRECOMMENDS_${PN} = "binutils"
165RRECOMMENDS_${PN}_append_class-target = " libcxx-dev" 167RRECOMMENDS_${PN}_append_class-target = " libcxx-dev"
166 168
167do_compile() { 169do_install_append() {
168 ninja ${PARALLEL_MAKE} ${BUILDTARGET} 170 rm -rf ${D}${libdir}/python*/site-packages/six.py
169}
170
171do_install() {
172 DESTDIR=${D} ninja ${PARALLEL_MAKE} ${INSTALLTARGET}
173 rm -rf ${D}${libdir}/python*/site-packages/six.py
174} 171}
175 172
176do_install_append_class-target () { 173do_install_append_class-target () {
@@ -184,31 +181,38 @@ if(DEFINED ENV{YOCTO_ALTERNATE_EXE_PATH})\n\
184else()\n\ 181else()\n\
185 set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\ 182 set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\
186endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake 183endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake
184
185 if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then
186 mkdir -p ${D}${nonarch_libdir}
187 mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang
188 lnr ${D}${nonarch_libdir}/clang ${D}${libdir}/clang
189 rmdir --ignore-fail-on-non-empty ${D}${libdir}
190 fi
187} 191}
188 192
189do_install_append_class-native () { 193do_install_append_class-native () {
190 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen 194 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
191 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen 195 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen
192 for f in `find ${D}${bindir} -executable -type f -not -type l`; do 196 for f in `find ${D}${bindir} -executable -type f -not -type l`; do
193 test -n "`file $f|grep -i ELF`" && ${STRIP} $f 197 test -n "`file $f|grep -i ELF`" && ${STRIP} $f
194 echo "stripped $f" 198 echo "stripped $f"
195 done 199 done
196 ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} 200 ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV}
197 ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} 201 ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
198 ln -sf llvm-config ${D}${bindir}/llvm-config${PV} 202 ln -sf llvm-config ${D}${bindir}/llvm-config${PV}
199} 203}
200 204
201do_install_append_class-nativesdk () { 205do_install_append_class-nativesdk () {
202 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen 206 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen
203 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen 207 install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen
204 for f in `find ${D}${bindir} -executable -type f -not -type l`; do 208 for f in `find ${D}${bindir} -executable -type f -not -type l`; do
205 test -n "`file $f|grep -i ELF`" && ${STRIP} $f 209 test -n "`file $f|grep -i ELF`" && ${STRIP} $f
206 done 210 done
207 ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} 211 ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV}
208 ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} 212 ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
209 ln -sf llvm-config ${D}${bindir}/llvm-config${PV} 213 ln -sf llvm-config ${D}${bindir}/llvm-config${PV}
210 rm -rf ${D}${datadir}/llvm/cmake 214 rm -rf ${D}${datadir}/llvm/cmake
211 rm -rf ${D}${datadir}/llvm 215 rm -rf ${D}${datadir}/llvm
212} 216}
213 217
214PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python libclang" 218PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python libclang"
@@ -225,6 +229,8 @@ FILES_${PN} += "\
225 ${libdir}/LLVMHello.so \ 229 ${libdir}/LLVMHello.so \
226 ${libdir}/LLVMgold.so \ 230 ${libdir}/LLVMgold.so \
227 ${libdir}/*Plugin.so \ 231 ${libdir}/*Plugin.so \
232 ${libdir}/${BPN} \
233 ${nonarch_libdir}/${BPN}/*/include/ \
228 ${datadir}/scan-* \ 234 ${datadir}/scan-* \
229 ${datadir}/opt-viewer/ \ 235 ${datadir}/opt-viewer/ \
230" 236"
@@ -255,3 +261,5 @@ SSTATE_SCAN_FILES_remove = "*-config"
255TOOLCHAIN = "clang" 261TOOLCHAIN = "clang"
256TOOLCHAIN_class-native = "gcc" 262TOOLCHAIN_class-native = "gcc"
257TOOLCHAIN_class-nativesdk = "clang" 263TOOLCHAIN_class-nativesdk = "clang"
264
265SYSROOT_DIRS_append_class-target = " ${nonarch_libdir}"