Skip to content

Commit

Permalink
clang: stay closer to cmake.bbclass
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
dankm authored and kraj committed Jan 20, 2020
1 parent cda1376 commit 269634b
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 87 deletions.
66 changes: 37 additions & 29 deletions recipes-devtools/clang/clang_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -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;\
Expand All @@ -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).
Expand Down Expand Up @@ -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 = "\
Expand Down Expand Up @@ -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 () {
Expand All @@ -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"
Expand All @@ -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/ \
"
Expand Down Expand Up @@ -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}"
39 changes: 9 additions & 30 deletions recipes-devtools/clang/compiler-rt_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand All @@ -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 = "\
Expand All @@ -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 = ""
Expand Down
20 changes: 3 additions & 17 deletions recipes-devtools/clang/libcxx_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand All @@ -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"
Expand All @@ -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"
Expand Down
12 changes: 1 addition & 11 deletions recipes-devtools/clang/openmp_git.bb
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ SECTION = "libs"
require clang.inc
require common-source.inc

DEPENDS += "ninja-native"

RPROVIDES_${PN} += "libgomp"
RPROVIDES_${PN}-dev += "libgomp-dev"

Expand All @@ -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"
Expand All @@ -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"
Expand Down

0 comments on commit 269634b

Please sign in to comment.