From 269634b393554a5502e47cc0cf9a3f63a5856d45 Mon Sep 17 00:00:00 2001 From: Daniel McGregor Date: Thu, 14 Feb 2019 18:42:49 -0600 Subject: 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 --- recipes-devtools/clang/clang_git.bb | 66 +++++++++++++++++-------------- recipes-devtools/clang/compiler-rt_git.bb | 39 +++++------------- recipes-devtools/clang/libcxx_git.bb | 20 ++-------- recipes-devtools/clang/openmp_git.bb | 12 +----- 4 files changed, 50 insertions(+), 87 deletions(-) (limited to 'recipes-devtools/clang') 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,," PACKAGECONFIG[split-dwarf] = "-DLLVM_USE_SPLIT_DWARF=ON,-DLLVM_USE_SPLIT_DWARF=OFF,," PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON -DLLDB_DISABLE_LIBEDIT=0,-DLLVM_ENABLE_LIBEDIT=OFF -DLLDB_DISABLE_LIBEDIT=1,libedit libedit-native" -BUILDTARGET = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', '', d)}" +OECMAKE_SOURCEPATH = "${S}/llvm" + +OECMAKE_TARGET_COMPILE = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2', 'all', d)}" +OECMAKE_TARGET_INSTALL = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}" BINPATHPREFIX = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', '/tools/clang/stage2-bins/NATIVE', '', d)}" -INSTALLTARGET = "${@bb.utils.contains('PACKAGECONFIG', 'bootstrap', 'stage2-install', 'install', d)}" PASSTHROUGH = "\ 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;\ LLVM_TARGETS_TO_BUILD;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;PYTHON_EXECUTABLE;\ PYTHON_LIBRARY;PYTHON_INCLUDE_DIR;LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN;LLDB_EDITLINE_USE_WCHAR;\ LLVM_ENABLE_LIBEDIT;LLDB_DISABLE_LIBEDIT; \ +CMAKE_C_FLAGS_RELEASE;CMAKE_CXX_FLAGS_RELEASE;CMAKE_ASM_FLAGS_RELEASE;\ " # # Default to build all OE-Core supported target arches (user overridable). @@ -114,7 +117,6 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ -DLLVM_ENABLE_PROJECTS='clang;clang-tools-extra;lld;lldb' \ -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - -G Ninja ${S}/llvm \ " EXTRA_OECMAKE_append_class-native = "\ @@ -164,13 +166,8 @@ COMPATIBLE_HOST_riscv32 = "null" RRECOMMENDS_${PN} = "binutils" RRECOMMENDS_${PN}_append_class-target = " libcxx-dev" -do_compile() { - ninja ${PARALLEL_MAKE} ${BUILDTARGET} -} - -do_install() { - DESTDIR=${D} ninja ${PARALLEL_MAKE} ${INSTALLTARGET} - rm -rf ${D}${libdir}/python*/site-packages/six.py +do_install_append() { + rm -rf ${D}${libdir}/python*/site-packages/six.py } do_install_append_class-target () { @@ -184,31 +181,38 @@ if(DEFINED ENV{YOCTO_ALTERNATE_EXE_PATH})\n\ else()\n\ set(_IMPORT_PREFIX_BIN \"\${_IMPORT_PREFIX}/bin\")\n\ endif()\n" ${D}${libdir}/cmake/llvm/LLVMExports-release.cmake + + if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then + mkdir -p ${D}${nonarch_libdir} + mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang + lnr ${D}${nonarch_libdir}/clang ${D}${libdir}/clang + rmdir --ignore-fail-on-non-empty ${D}${libdir} + fi } do_install_append_class-native () { - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen - for f in `find ${D}${bindir} -executable -type f -not -type l`; do - test -n "`file $f|grep -i ELF`" && ${STRIP} $f - echo "stripped $f" - done - ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} - ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} - ln -sf llvm-config ${D}${bindir}/llvm-config${PV} + install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen + install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen + for f in `find ${D}${bindir} -executable -type f -not -type l`; do + test -n "`file $f|grep -i ELF`" && ${STRIP} $f + echo "stripped $f" + done + ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} + ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} + ln -sf llvm-config ${D}${bindir}/llvm-config${PV} } do_install_append_class-nativesdk () { - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen - for f in `find ${D}${bindir} -executable -type f -not -type l`; do - test -n "`file $f|grep -i ELF`" && ${STRIP} $f - done - ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} - ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} - ln -sf llvm-config ${D}${bindir}/llvm-config${PV} - rm -rf ${D}${datadir}/llvm/cmake - rm -rf ${D}${datadir}/llvm + install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen + install -Dm 0755 ${B}${BINPATHPREFIX}/bin/lldb-tblgen ${D}${bindir}/lldb-tblgen + for f in `find ${D}${bindir} -executable -type f -not -type l`; do + test -n "`file $f|grep -i ELF`" && ${STRIP} $f + done + ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} + ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} + ln -sf llvm-config ${D}${bindir}/llvm-config${PV} + rm -rf ${D}${datadir}/llvm/cmake + rm -rf ${D}${datadir}/llvm } PACKAGES =+ "${PN}-libllvm ${PN}-lldb-python libclang" @@ -225,6 +229,8 @@ FILES_${PN} += "\ ${libdir}/LLVMHello.so \ ${libdir}/LLVMgold.so \ ${libdir}/*Plugin.so \ + ${libdir}/${BPN} \ + ${nonarch_libdir}/${BPN}/*/include/ \ ${datadir}/scan-* \ ${datadir}/opt-viewer/ \ " @@ -255,3 +261,5 @@ SSTATE_SCAN_FILES_remove = "*-config" TOOLCHAIN = "clang" TOOLCHAIN_class-native = "gcc" TOOLCHAIN_class-nativesdk = "clang" + +SYSROOT_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" HF = "${@ bb.utils.contains('TUNE_CCARGS_MFLOAT', 'hard', 'hf', '', d)}" HF[vardepvalue] = "${HF}" + +OECMAKE_TARGET_COMPILE = "compiler-rt" +OECMAKE_TARGET_INSTALL = "install-compiler-rt install-compiler-rt-headers" +OECMAKE_SOURCEPATH = "${S}/llvm" EXTRA_OECMAKE += "-DCOMPILER_RT_STANDALONE_BUILD=OFF \ -DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=${HOST_ARCH}${HF}${HOST_VENDOR}-${HOST_OS} \ -DCOMPILER_RT_BUILD_XRAY=OFF \ @@ -32,7 +36,6 @@ EXTRA_OECMAKE += "-DCOMPILER_RT_STANDALONE_BUILD=OFF \ -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \ -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ - -G Ninja ${S}/llvm \ " EXTRA_OECMAKE_append_class-nativesdk = "\ @@ -45,36 +48,12 @@ CXXFLAGS_append_libc-musl = " -D_LIBCPP_HAS_MUSL_LIBC=ON " EXTRA_OECMAKE_append_mipsarch = " -DCOMPILER_RT_BUILD_SANITIZERS=OFF " EXTRA_OECMAKE_append_powerpc = " -DCOMPILER_RT_DEFAULT_TARGET_ARCH=powerpc " -do_compile() { - ninja ${PARALLEL_MAKE} compiler-rt -} - -do_install() { - DESTDIR=${D} ninja ${PARALLEL_MAKE} install-compiler-rt - - if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then - mkdir -p ${D}${nonarch_libdir} - mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang - rmdir --ignore-fail-on-non-empty ${D}${libdir} - fi -} - - do_install_append () { - if [ -d ${D}${exec_prefix}/lib/linux ]; then - for f in `find ${D}${exec_prefix}/lib/linux -maxdepth 1 -type f` - do - install -D -m 0644 $f ${D}${exec_prefix}/lib/clang/${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}/lib/linux/`basename $f` - rm $f - done - rmdir ${D}${exec_prefix}/lib/linux - fi - for f in `find ${D}${exec_prefix} -maxdepth 1 -name '*.txt' -type f` - do - install -D -m 0644 $f ${D}${exec_prefix}/lib/clang/${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}/`basename $f` - rm $f - done - rm -rf ${D}${exec_prefix}/lib/clang/${MAJOR_VER}.${MINOR_VER}.${PATCH_VER}/lib/linux/clang_rt.crt*.o + if [ -n "${LLVM_LIBDIR_SUFFIX}" ]; then + mkdir -p ${D}${nonarch_libdir} + mv ${D}${libdir}/clang ${D}${nonarch_libdir}/clang + rmdir --ignore-fail-on-non-empty ${D}${libdir} + fi } FILES_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 LLVM_LIBDIR_SUFFIX_powerpc64 = "64" +OECMAKE_TARGET_COMPILE = "cxxabi cxx" +OECMAKE_TARGET_INSTALL = "install-cxx install-cxxabi" +OECMAKE_SOURCEPATH = "${S}/llvm" EXTRA_OECMAKE += "\ -DCMAKE_CROSSCOMPILING=ON \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ @@ -54,8 +57,6 @@ EXTRA_OECMAKE += "\ -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${RANLIB} \ -DLLVM_ENABLE_PROJECTS='libcxx;libcxxabi;libunwind' \ -DLLVM_LIBDIR_SUFFIX=${LLVM_LIBDIR_SUFFIX} \ - -G Ninja \ - ${S}/llvm \ " EXTRA_OECMAKE_append_class-native = " -DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF" @@ -66,21 +67,6 @@ EXTRA_OECMAKE_append_libc-musl = " -DLIBCXX_HAS_MUSL_LIBC=ON " CXXFLAGS_append_armv5 = " -mfpu=vfp2" -do_compile() { - if [ -n "${@bb.utils.filter('PACKAGECONFIG', 'unwind', d)}" ]; then - ninja -v ${PARALLEL_MAKE} unwind - fi - ninja -v ${PARALLEL_MAKE} cxxabi - ninja -v ${PARALLEL_MAKE} cxx -} - -do_install() { - #DESTDIR=${D} ninja ${PARALLEL_MAKE} install-unwind - #install -d ${D}${includedir} - #install -m 644 ${S}/libunwind/include/*.h ${D}${includedir} - DESTDIR=${D} ninja ${PARALLEL_MAKE} install-cxx install-cxxabi -} - ALLOW_EMPTY_${PN} = "1" BBCLASSEXTEND = "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" require clang.inc require common-source.inc -DEPENDS += "ninja-native" - RPROVIDES_${PN} += "libgomp" RPROVIDES_${PN}-dev += "libgomp-dev" @@ -19,7 +17,7 @@ LIC_FILES_CHKSUM = "file://openmp/LICENSE.txt;md5=d75288d1ce0450b28b8d58a284c09c inherit cmake pkgconfig perlnative -EXTRA_OECMAKE = "-G Ninja ${S}/openmp" +OECMAKE_SOURCEPATH = "${S}/openmp" PACKAGECONFIG ?= "ompt-tools" PACKAGECONFIG_remove_arm = "ompt-tools" @@ -28,14 +26,6 @@ PACKAGECONFIG_remove_powerpc = "ompt-tools" PACKAGECONFIG[ompt-tools] = "-DOPENMP_ENABLE_OMPT_TOOLS=ON,-DOPENMP_ENABLE_OMPT_TOOLS=OFF," -do_compile() { - ninja ${PARALLEL_MAKE} -} - -do_install() { - DESTDIR=${D} ninja ${PARALLEL_MAKE} install -} - FILES_SOLIBSDEV = "" FILES_${PN} += "${libdir}/lib*${SOLIBSDEV}" INSANE_SKIP_${PN} = "dev-so" -- cgit v1.2.3-54-g00ecf