diff options
author | Daniel McGregor <daniel.mcgregor@vecima.com> | 2019-02-14 18:42:49 -0600 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2020-01-20 08:56:16 -0800 |
commit | 269634b393554a5502e47cc0cf9a3f63a5856d45 (patch) | |
tree | aeacca0fcd9352195872459e7b7a5621fd1c0269 /recipes-devtools/clang/clang_git.bb | |
parent | cda1376a97b86d6ae5c92fd931f9583430c73885 (diff) | |
download | meta-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.bb | 66 |
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,," | |||
71 | PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,," | 71 | PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,," |
72 | PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_DISABLE_LIBEDIT=0,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_DISABLE_LIBEDIT=1,libedit libedit-native" | 72 | PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_DISABLE_LIBEDIT=0,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_DISABLE_LIBEDIT=1,libedit libedit-native" |
73 | 73 | ||
74 | BUILDTARGET = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', '', d)}" | 74 | OECMAKE_SOURCEPATH = "${S}/llvm" |
75 | |||
76 | OECMAKE_TARGET_COMPILE = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', 'all', d)}" | ||
77 | OECMAKE_TARGET_INSTALL = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}" | ||
75 | BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}" | 78 | BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}" |
76 | INSTALLTARGET = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}" | ||
77 | 79 | ||
78 | PASSTHROUGH = "\ | 80 | PASSTHROUGH = "\ |
79 | CLANG_DEFAULT_RTLIB;CLANG_DEFAULT_CXX_STDLIB;LLVM_BUILD_LLVM_DYLIB;LLVM_LINK_LLVM_DYLIB;\ | 81 | CLANG_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;\ | |||
84 | LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\ | 86 | LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\ |
85 | PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\ | 87 | PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\ |
86 | LLVM_ENABLE_LIBEDIT;LLDB_DISABLE_LIBEDIT; \ | 88 | LLVM_ENABLE_LIBEDIT;LLDB_DISABLE_LIBEDIT; \ |
89 | CMAKE_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 | ||
120 | EXTRA_OECMAKE_append_class-native = "\ | 122 | EXTRA_OECMAKE_append_class-native = "\ |
@@ -164,13 +166,8 @@ COMPATIBLE_HOST_riscv32 = "null" | |||
164 | RRECOMMENDS_${PN} = "binutils" | 166 | RRECOMMENDS_${PN} = "binutils" |
165 | RRECOMMENDS_${PN}_append_class-target = " libcxx-dev" | 167 | RRECOMMENDS_${PN}_append_class-target = " libcxx-dev" |
166 | 168 | ||
167 | do_compile() { | 169 | do_install_append() { |
168 | ninja ${PARALLEL_MAKE} ${BUILDTARGET} | 170 | rm -rf ${D}${libdir}/python*/site-packages/six.py |
169 | } | ||
170 | |||
171 | do_install() { | ||
172 | DESTDIR=${D} ninja ${PARALLEL_MAKE} ${INSTALLTARGET} | ||
173 | rm -rf ${D}${libdir}/python*/site-packages/six.py | ||
174 | } | 171 | } |
175 | 172 | ||
176 | do_install_append_class-target () { | 173 | do_install_append_class-target () { |
@@ -184,31 +181,38 @@ if(DEFINED ENV{YOCTO_ALTERNATE_EXE_PATH})\n\ | |||
184 | else()\n\ | 181 | else()\n\ |
185 | set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\ | 182 | set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\ |
186 | endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake | 183 | endif()\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 | ||
189 | do_install_append_class-native () { | 193 | do_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 | ||
201 | do_install_append_class-nativesdk () { | 205 | do_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 | ||
214 | PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python libclang" | 218 | PACKAGES =+ "${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" | |||
255 | TOOLCHAIN = "clang" | 261 | TOOLCHAIN = "clang" |
256 | TOOLCHAIN_class-native = "gcc" | 262 | TOOLCHAIN_class-native = "gcc" |
257 | TOOLCHAIN_class-nativesdk = "clang" | 263 | TOOLCHAIN_class-nativesdk = "clang" |
264 | |||
265 | SYSROOT_DIRS_append_class-target = " ${nonarch_libdir}" | ||