summaryrefslogtreecommitdiffstats
path: root/recipes-devtools
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
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')
-rw-r--r--recipes-devtools/clang/clang_git.bb66
-rw-r--r--recipes-devtools/clang/compiler-rt_git.bb39
-rw-r--r--recipes-devtools/clang/libcxx_git.bb20
-rw-r--r--recipes-devtools/clang/openmp_git.bb12
4 files changed, 50 insertions, 87 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}"
diff --git a/recipes-devtools/clang/compiler-rt_git.bb b/recipes-devtools/clang/compiler-rt_git.bb
index 09b82cd..6543cda 100644
--- a/recipes-devtools/clang/compiler-rt_git.bb
+++ b/recipes-devtools/clang/compiler-rt_git.bb
@@ -24,6 +24,10 @@ DEPENDS_append_class-nativesdk = " clang-native"
24 24
25HF = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}" 25HF = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}"
26HF[vardepvalue] = "${HF}" 26HF[vardepvalue] = "${HF}"
27
28OECMAKE_TARGET_COMPILE = "compiler-rt"
29OECMAKE_TARGET_INSTALL = "install-compiler-rt install-compiler-rt-headers"
30OECMAKE_SOURCEPATH = "${S}/llvm"
27EXTRA_OECMAKE += "-DCOMPILER_RT_STANDALONE_BUILD=OFF \ 31EXTRA_OECMAKE += "-DCOMPILER_RT_STANDALONE_BUILD=OFF \
28 -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=${HOST_ARCH}${HF}${HOST_VENDOR}-${HOST_OS} \ 32 -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=${HOST_ARCH}${HF}${HOST_VENDOR}-${HOST_OS} \
29 -DCOMPILER_RT_BUILD_XRAY=OFF \ 33 -DCOMPILER_RT_BUILD_XRAY=OFF \
@@ -32,7 +36,6 @@ EXTRA_OECMAKE += "-DCOMPILER_RT_STANDALONE_BUILD=OFF \
32 -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ 36 -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \
33 -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \ 37 -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \
34 -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ 38 -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \
35 -G Ninja ${S}/llvm \
36" 39"
37 40
38EXTRA_OECMAKE_append_class-nativesdk = "\ 41EXTRA_OECMAKE_append_class-nativesdk = "\
@@ -45,36 +48,12 @@ CXXFLAGS_append_libc-musl = " -D_LIBCPP_HAS_MUSL_LIBC=ON "
45EXTRA_OECMAKE_append_mipsarch = " -DCOMPILER_RT_BUILD_SANITIZERS=OFF " 48EXTRA_OECMAKE_append_mipsarch = " -DCOMPILER_RT_BUILD_SANITIZERS=OFF "
46EXTRA_OECMAKE_append_powerpc = " -DCOMPILER_RT_DEFAULT_TARGET_ARCH=powerpc " 49EXTRA_OECMAKE_append_powerpc = " -DCOMPILER_RT_DEFAULT_TARGET_ARCH=powerpc "
47 50
48do_compile() {
49 ninja ${PARALLEL_MAKE} compiler-rt
50}
51
52do_install() {
53 DESTDIR=${D} ninja ${PARALLEL_MAKE} install-compiler-rt
54
55 if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then
56 mkdir -p ${D}${nonarch_libdir}
57 mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang
58 rmdir --ignore-fail-on-non-empty ${D}${libdir}
59 fi
60}
61
62
63do_install_append () { 51do_install_append () {
64 if [ -d ${D}${exec_prefix}/lib/linux ]; then 52 if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then
65 for f in `find ${D}${exec_prefix}/lib/linux -maxdepth 1 -type f` 53 mkdir -p ${D}${nonarch_libdir}
66 do 54 mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang
67 install -D -m 0644 $f ${D}${exec_prefix}/lib/clang/${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}/lib/linux/`basename $f` 55 rmdir --ignore-fail-on-non-empty ${D}${libdir}
68 rm $f 56 fi
69 done
70 rmdir ${D}${exec_prefix}/lib/linux
71 fi
72 for f in `find ${D}${exec_prefix} -maxdepth 1 -name '*.txt' -type f`
73 do
74 install -D -m 0644 $f ${D}${exec_prefix}/lib/clang/${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}/`basename $f`
75 rm $f
76 done
77 rm -rf ${D}${exec_prefix}/lib/clang/${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}/lib/linux/clang_rt.crt*.o
78} 57}
79 58
80FILES_SOLIBSDEV = "" 59FILES_SOLIBSDEV = ""
diff --git a/recipes-devtools/clang/libcxx_git.bb b/recipes-devtools/clang/libcxx_git.bb
index 7325e4f..518682b 100644
--- a/recipes-devtools/clang/libcxx_git.bb
+++ b/recipes-devtools/clang/libcxx_git.bb
@@ -34,6 +34,9 @@ LIC_FILES_CHKSUM = "file://libcxx/LICENSE.TXT;md5=55d89dd7eec8d3b4204b680e27da39
34 34
35LLVM_LIBDIR_SUFFIX_powerpc64 = "64" 35LLVM_LIBDIR_SUFFIX_powerpc64 = "64"
36 36
37OECMAKE_TARGET_COMPILE = "cxxabi cxx"
38OECMAKE_TARGET_INSTALL = "install-cxx install-cxxabi"
39OECMAKE_SOURCEPATH = "${S}/llvm"
37EXTRA_OECMAKE += "\ 40EXTRA_OECMAKE += "\
38 -DCMAKE_CROSSCOMPILING=ON \ 41 -DCMAKE_CROSSCOMPILING=ON \
39 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ 42 -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
@@ -54,8 +57,6 @@ EXTRA_OECMAKE += "\
54 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ 57 -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \
55 -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi;libunwind' \ 58 -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi;libunwind' \
56 -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ 59 -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \
57 -G Ninja \
58 ${S}/llvm \
59" 60"
60 61
61EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" 62EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF"
@@ -66,21 +67,6 @@ EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON "
66 67
67CXXFLAGS_append_armv5 = " -mfpu=vfp2" 68CXXFLAGS_append_armv5 = " -mfpu=vfp2"
68 69
69do_compile() {
70 if [ -n "${@bb.utils.filter('PACKAGECONFIG', 'unwind', d)}" ]; then
71 ninja -v ${PARALLEL_MAKE} unwind
72 fi
73 ninja -v ${PARALLEL_MAKE} cxxabi
74 ninja -v ${PARALLEL_MAKE} cxx
75}
76
77do_install() {
78 #DESTDIR=${D} ninja ${PARALLEL_MAKE} install-unwind
79 #install -d ${D}${includedir}
80 #install -m 644 ${S}/libunwind/include/*.h ${D}${includedir}
81 DESTDIR=${D} ninja ${PARALLEL_MAKE} install-cxx install-cxxabi
82}
83
84ALLOW_EMPTY_${PN} = "1" 70ALLOW_EMPTY_${PN} = "1"
85 71
86BBCLASSEXTEND = "native nativesdk" 72BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-devtools/clang/openmp_git.bb b/recipes-devtools/clang/openmp_git.bb
index 0afbf97..501ee5a 100644
--- a/recipes-devtools/clang/openmp_git.bb
+++ b/recipes-devtools/clang/openmp_git.bb
@@ -8,8 +8,6 @@ SECTION = "libs"
8require clang.inc 8require clang.inc
9require common-source.inc 9require common-source.inc
10 10
11DEPENDS += "ninja-native"
12
13RPROVIDES_${PN} += "libgomp" 11RPROVIDES_${PN} += "libgomp"
14RPROVIDES_${PN}-dev += "libgomp-dev" 12RPROVIDES_${PN}-dev += "libgomp-dev"
15 13
@@ -19,7 +17,7 @@ LIC_FILES_CHKSUM = "file://openmp/LICENSE.txt;md5=d75288d1ce0450b28b8d58a284c09c
19 17
20inherit cmake pkgconfig perlnative 18inherit cmake pkgconfig perlnative
21 19
22EXTRA_OECMAKE = "-G Ninja ${S}/openmp" 20OECMAKE_SOURCEPATH = "${S}/openmp"
23 21
24PACKAGECONFIG ?= "ompt-tools" 22PACKAGECONFIG ?= "ompt-tools"
25PACKAGECONFIG_remove_arm = "ompt-tools" 23PACKAGECONFIG_remove_arm = "ompt-tools"
@@ -28,14 +26,6 @@ PACKAGECONFIG_remove_powerpc = "ompt-tools"
28 26
29PACKAGECONFIG[ompt-tools] = "-DOPENMP_ENABLE_OMPT_TOOLS=ON,-DOPENMP_ENABLE_OMPT_TOOLS=OFF," 27PACKAGECONFIG[ompt-tools] = "-DOPENMP_ENABLE_OMPT_TOOLS=ON,-DOPENMP_ENABLE_OMPT_TOOLS=OFF,"
30 28
31do_compile() {
32 ninja ${PARALLEL_MAKE}
33}
34
35do_install() {
36 DESTDIR=${D} ninja ${PARALLEL_MAKE} install
37}
38
39FILES_SOLIBSDEV = "" 29FILES_SOLIBSDEV = ""
40FILES_${PN} += "${libdir}/lib*${SOLIBSDEV}" 30FILES_${PN} += "${libdir}/lib*${SOLIBSDEV}"
41INSANE_SKIP_${PN} = "dev-so" 31INSANE_SKIP_${PN} = "dev-so"