@@ -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 swig-native llvm-tbl
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
new file mode 100644
@@ -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"
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. Signed-off-by: Ross Burton <ross.burton@arm.com> --- meta/conf/distro/include/maintainers.inc | 1 + .../clang/clang-cross-canadian_git.bb | 2 +- .../recipes-devtools/clang/clang-cross_git.bb | 6 +++-- .../clang/clang-crosssdk_git.bb | 3 ++- meta/recipes-devtools/clang/clang_git.bb | 12 ++++----- meta/recipes-devtools/clang/lld_git.bb | 26 +++++++++++++++++++ 6 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 meta/recipes-devtools/clang/lld_git.bb