mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
clang: split lld into a separate lld recipe
The lld linker is a standalone project under the LLVM umbrella that just depends on libLLVM and nothing else, such as clang. To reduce the build time of clang if lld is not being used, split it out into a separate recipe. To ensure that lld is present if needed, the clang-cross recipe will depend on lld-native if ld-is-lld is enable. (From OE-Core rev: 5212b69f892af8c9b080fee2c21533a2bbdd2755) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
2239c2c91a
commit
844e2ebbfc
@@ -480,6 +480,7 @@ RECIPE_MAINTAINER:pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-lld = "Khem Raj <raj.khem@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-lldb = "Khem Raj <raj.khem@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-llvm-project-source-20.1.8 = "Khem Raj <raj.khem@gmail.com>"
|
||||
RECIPE_MAINTAINER:pn-llvm-tblgen-native = "Khem Raj <raj.khem@gmail.com>"
|
||||
|
||||
@@ -11,7 +11,7 @@ PN = "clang-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
inherit cross-canadian
|
||||
|
||||
DEPENDS = "nativesdk-clang binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} virtual/nativesdk-cross-binutils virtual/nativesdk-libc"
|
||||
DEPENDS = "nativesdk-clang binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} virtual/nativesdk-cross-binutils virtual/nativesdk-libc ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'nativesdk-lld', '', d)}"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
|
||||
@@ -11,7 +11,7 @@ PN = "clang-cross-${TARGET_ARCH}"
|
||||
|
||||
inherit cross
|
||||
|
||||
DEPENDS = "clang-native virtual/cross-binutils"
|
||||
DEPENDS = "clang-native virtual/cross-binutils ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'lld-native', '', d)}"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
@@ -19,6 +19,8 @@ do_install() {
|
||||
llvm-nm llvm-ar llvm-as llvm-ranlib llvm-strip llvm-objcopy llvm-objdump llvm-readelf \
|
||||
llvm-addr2line llvm-dwp llvm-size llvm-strings llvm-cov
|
||||
do
|
||||
ln -sf ../$tool ${D}${bindir}/${TARGET_PREFIX}$tool
|
||||
if [ -x ${STAGING_BINDIR_NATIVE}/$tool ]; then
|
||||
ln -sf ../$tool ${D}${bindir}/${TARGET_PREFIX}$tool
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@ PN = "clang-crosssdk-${SDK_SYS}"
|
||||
|
||||
inherit crosssdk
|
||||
|
||||
DEPENDS = "clang-native nativesdk-clang-glue virtual/nativesdk-cross-binutils virtual/nativesdk-libc"
|
||||
DEPENDS = "clang-native nativesdk-clang-glue virtual/nativesdk-cross-binutils virtual/nativesdk-libc \
|
||||
${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'lld-native', '', d)}"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
|
||||
@@ -57,7 +57,7 @@ PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,,"
|
||||
PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,"
|
||||
PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit libedit-native"
|
||||
PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,,"
|
||||
PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,"
|
||||
PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,,"
|
||||
PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
|
||||
PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm,"
|
||||
PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,,"
|
||||
@@ -89,7 +89,7 @@ HF[vardepvalue] = "${HF}"
|
||||
|
||||
# Ensure that LLVM_PROJECTS does not contain compiler runtime components e.g. libcxx etc
|
||||
# they are enabled via LLVM_ENABLE_RUNTIMES
|
||||
LLVM_PROJECTS ?= "clang;clang-tools-extra;lld"
|
||||
LLVM_PROJECTS ?= "clang;clang-tools-extra"
|
||||
|
||||
# linux hosts (.so) on Windows .pyd
|
||||
SOLIBSDEV:mingw32 = ".pyd"
|
||||
@@ -141,8 +141,8 @@ DEPENDS = "binutils zlib zstd libffi libxml2 libxml2-native llvm-tblgen-native"
|
||||
DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_SYS} virtual/nativesdk-cross-binutils"
|
||||
DEPENDS:append:class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcxx', '', d)}"
|
||||
|
||||
RRECOMMENDS:${PN} = "binutils"
|
||||
RRECOMMENDS:${PN}:append:class-target = "${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', ' libcxx-dev', '', d)}"
|
||||
RDEPENDS:${PN}:append:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' lld', '', d)}"
|
||||
RRECOMMENDS:${PN}:append:class-target = "binutils ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', ' libcxx-dev', '', d)}"
|
||||
|
||||
# patch out build host paths for reproducibility
|
||||
reproducible_build_variables() {
|
||||
@@ -370,10 +370,8 @@ clang_sysroot_preprocess() {
|
||||
install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
|
||||
install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
|
||||
ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
|
||||
# LLDTargets.cmake references the lld executable(!) that some modules/plugins link to
|
||||
install -d ${SYSROOT_DESTDIR}${bindir}
|
||||
|
||||
binaries="lld diagtool clang-${MAJOR_VER} clang-format clang-offload-packager
|
||||
binaries="diagtool clang-${MAJOR_VER} clang-format clang-offload-packager
|
||||
clang-offload-bundler clang-scan-deps clang-repl
|
||||
clang-refactor clang-check clang-extdef-mapping clang-apply-replacements
|
||||
clang-reorder-fields clang-tidy clang-change-namespace clang-doc clang-include-fixer
|
||||
|
||||
26
meta/recipes-devtools/clang/lld_git.bb
Normal file
26
meta/recipes-devtools/clang/lld_git.bb
Normal file
@@ -0,0 +1,26 @@
|
||||
SUMMARY = "LLD - the LLVM Linker"
|
||||
DESCRIPTION = "LLD is a linker from the LLVM project that is a drop-in replacement for system linkers and runs much faster than them."
|
||||
HOMEPAGE = "https://lld.llvm.org"
|
||||
SECTION = "devel"
|
||||
|
||||
require common-clang.inc
|
||||
require common-source.inc
|
||||
|
||||
LIC_FILES_CHKSUM = "file://lld/LICENSE.TXT;md5=ae7dc7c027b1fa89b5b013d391d3ee2b"
|
||||
|
||||
inherit cmake pkgconfig
|
||||
|
||||
DEPENDS = "llvm-tblgen-native llvm"
|
||||
|
||||
OECMAKE_SOURCEPATH = "${S}/lld"
|
||||
|
||||
# Explicitly disable RPATHs as otherwise they're stipped out of the binaries,
|
||||
# and are then non-reproducible.
|
||||
#
|
||||
# Explicitly enable symlinks as the lld build doesn't call into the llvm setup
|
||||
# and turn that on.
|
||||
EXTRA_OECMAKE = "-DCMAKE_SKIP_BUILD_RPATH=ON \
|
||||
-DLLVM_INCLUDE_TESTS=OFF -DLLVM_USE_SYMLINKS=ON \
|
||||
-DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
Reference in New Issue
Block a user