summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@arm.com>2025-07-31 20:12:13 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-08-04 18:04:04 +0100
commit844e2ebbfc451ee2bdccb81467acd2f8fd80ca73 (patch)
treeb5e5774edf7031e35683c010ea33c4f29f67d494 /meta
parent2239c2c91ab35c67ccd95afe057350037f7d0e59 (diff)
downloadpoky-844e2ebbfc451ee2bdccb81467acd2f8fd80ca73.tar.gz
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>
Diffstat (limited to 'meta')
-rw-r--r--meta/conf/distro/include/maintainers.inc1
-rw-r--r--meta/recipes-devtools/clang/clang-cross-canadian_git.bb2
-rw-r--r--meta/recipes-devtools/clang/clang-cross_git.bb6
-rw-r--r--meta/recipes-devtools/clang/clang-crosssdk_git.bb3
-rw-r--r--meta/recipes-devtools/clang/clang_git.bb12
-rw-r--r--meta/recipes-devtools/clang/lld_git.bb26
6 files changed, 39 insertions, 11 deletions
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index ed1bc18ba3..96d5a0819c 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -480,6 +480,7 @@ RECIPE_MAINTAINER:pn-linux-yocto = "Bruce Ashfield <bruce.ashfield@gmail.com>"
480RECIPE_MAINTAINER:pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>" 480RECIPE_MAINTAINER:pn-linux-yocto-dev = "Bruce Ashfield <bruce.ashfield@gmail.com>"
481RECIPE_MAINTAINER:pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>" 481RECIPE_MAINTAINER:pn-linux-yocto-rt = "Bruce Ashfield <bruce.ashfield@gmail.com>"
482RECIPE_MAINTAINER:pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>" 482RECIPE_MAINTAINER:pn-linux-yocto-tiny = "Bruce Ashfield <bruce.ashfield@gmail.com>"
483RECIPE_MAINTAINER:pn-lld = "Khem Raj <raj.khem@gmail.com>"
483RECIPE_MAINTAINER:pn-lldb = "Khem Raj <raj.khem@gmail.com>" 484RECIPE_MAINTAINER:pn-lldb = "Khem Raj <raj.khem@gmail.com>"
484RECIPE_MAINTAINER:pn-llvm-project-source-20.1.8 = "Khem Raj <raj.khem@gmail.com>" 485RECIPE_MAINTAINER:pn-llvm-project-source-20.1.8 = "Khem Raj <raj.khem@gmail.com>"
485RECIPE_MAINTAINER:pn-llvm-tblgen-native = "Khem Raj <raj.khem@gmail.com>" 486RECIPE_MAINTAINER:pn-llvm-tblgen-native = "Khem Raj <raj.khem@gmail.com>"
diff --git a/meta/recipes-devtools/clang/clang-cross-canadian_git.bb b/meta/recipes-devtools/clang/clang-cross-canadian_git.bb
index c966861578..18bd6ecfde 100644
--- a/meta/recipes-devtools/clang/clang-cross-canadian_git.bb
+++ b/meta/recipes-devtools/clang/clang-cross-canadian_git.bb
@@ -11,7 +11,7 @@ PN = "clang-cross-canadian-${TRANSLATED_TARGET_ARCH}"
11 11
12inherit cross-canadian 12inherit cross-canadian
13 13
14DEPENDS = "nativesdk-clang binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} virtual/nativesdk-cross-binutils virtual/nativesdk-libc" 14DEPENDS = "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)}"
15 15
16do_install() { 16do_install() {
17 install -d ${D}${bindir} 17 install -d ${D}${bindir}
diff --git a/meta/recipes-devtools/clang/clang-cross_git.bb b/meta/recipes-devtools/clang/clang-cross_git.bb
index bd72ee4e6d..33b01e4234 100644
--- a/meta/recipes-devtools/clang/clang-cross_git.bb
+++ b/meta/recipes-devtools/clang/clang-cross_git.bb
@@ -11,7 +11,7 @@ PN = "clang-cross-${TARGET_ARCH}"
11 11
12inherit cross 12inherit cross
13 13
14DEPENDS = "clang-native virtual/cross-binutils" 14DEPENDS = "clang-native virtual/cross-binutils ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'lld-native', '', d)}"
15 15
16do_install() { 16do_install() {
17 install -d ${D}${bindir} 17 install -d ${D}${bindir}
@@ -19,6 +19,8 @@ do_install() {
19 llvm-nm llvm-ar llvm-as llvm-ranlib llvm-strip llvm-objcopy llvm-objdump llvm-readelf \ 19 llvm-nm llvm-ar llvm-as llvm-ranlib llvm-strip llvm-objcopy llvm-objdump llvm-readelf \
20 llvm-addr2line llvm-dwp llvm-size llvm-strings llvm-cov 20 llvm-addr2line llvm-dwp llvm-size llvm-strings llvm-cov
21 do 21 do
22 ln -sf ../$tool ${D}${bindir}/${TARGET_PREFIX}$tool 22 if [ -x ${STAGING_BINDIR_NATIVE}/$tool ]; then
23 ln -sf ../$tool ${D}${bindir}/${TARGET_PREFIX}$tool
24 fi
23 done 25 done
24} 26}
diff --git a/meta/recipes-devtools/clang/clang-crosssdk_git.bb b/meta/recipes-devtools/clang/clang-crosssdk_git.bb
index 320579d8f1..9b527975a9 100644
--- a/meta/recipes-devtools/clang/clang-crosssdk_git.bb
+++ b/meta/recipes-devtools/clang/clang-crosssdk_git.bb
@@ -11,7 +11,8 @@ PN = "clang-crosssdk-${SDK_SYS}"
11 11
12inherit crosssdk 12inherit crosssdk
13 13
14DEPENDS = "clang-native nativesdk-clang-glue virtual/nativesdk-cross-binutils virtual/nativesdk-libc" 14DEPENDS = "clang-native nativesdk-clang-glue virtual/nativesdk-cross-binutils virtual/nativesdk-libc \
15 ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', 'lld-native', '', d)}"
15 16
16do_install() { 17do_install() {
17 install -d ${D}${bindir} 18 install -d ${D}${bindir}
diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb
index cade4ca4a2..79525258be 100644
--- a/meta/recipes-devtools/clang/clang_git.bb
+++ b/meta/recipes-devtools/clang/clang_git.bb
@@ -57,7 +57,7 @@ PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,,"
57PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,," 57PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,,"
58PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit libedit-native" 58PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit libedit-native"
59PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,," 59PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,,"
60PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,," 60PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,,"
61PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," 61PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils,"
62PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm," 62PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm,"
63PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,," 63PACKAGECONFIG[rtti] = "-DLLVM_ENABLE_RTTI=ON,-DLLVM_ENABLE_RTTI=OFF,,"
@@ -89,7 +89,7 @@ HF[vardepvalue] = "${HF}"
89 89
90# Ensure that LLVM_PROJECTS does not contain compiler runtime components e.g. libcxx etc 90# Ensure that LLVM_PROJECTS does not contain compiler runtime components e.g. libcxx etc
91# they are enabled via LLVM_ENABLE_RUNTIMES 91# they are enabled via LLVM_ENABLE_RUNTIMES
92LLVM_PROJECTS ?= "clang;clang-tools-extra;lld" 92LLVM_PROJECTS ?= "clang;clang-tools-extra"
93 93
94# linux hosts (.so) on Windows .pyd 94# linux hosts (.so) on Windows .pyd
95SOLIBSDEV:mingw32 = ".pyd" 95SOLIBSDEV:mingw32 = ".pyd"
@@ -141,8 +141,8 @@ DEPENDS = "binutils zlib zstd libffi libxml2 libxml2-native llvm-tblgen-native"
141DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_SYS} virtual/nativesdk-cross-binutils" 141DEPENDS:append:class-nativesdk = " clang-crosssdk-${SDK_SYS} virtual/nativesdk-cross-binutils"
142DEPENDS:append:class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcxx', '', d)}" 142DEPENDS:append:class-target = " clang-cross-${TARGET_ARCH} ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', 'compiler-rt libcxx', '', d)}"
143 143
144RRECOMMENDS:${PN} = "binutils" 144RDEPENDS:${PN}:append:class-target = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' lld', '', d)}"
145RRECOMMENDS:${PN}:append:class-target = "${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', ' libcxx-dev', '', d)}" 145RRECOMMENDS:${PN}:append:class-target = "binutils ${@bb.utils.contains('TC_CXX_RUNTIME', 'llvm', ' libcxx-dev', '', d)}"
146 146
147# patch out build host paths for reproducibility 147# patch out build host paths for reproducibility
148reproducible_build_variables() { 148reproducible_build_variables() {
@@ -370,10 +370,8 @@ clang_sysroot_preprocess() {
370 install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/ 370 install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
371 install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/ 371 install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/
372 ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV} 372 ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
373 # LLDTargets.cmake references the lld executable(!) that some modules/plugins link to
374 install -d ${SYSROOT_DESTDIR}${bindir}
375 373
376 binaries="lld diagtool clang-${MAJOR_VER} clang-format clang-offload-packager 374 binaries="diagtool clang-${MAJOR_VER} clang-format clang-offload-packager
377 clang-offload-bundler clang-scan-deps clang-repl 375 clang-offload-bundler clang-scan-deps clang-repl
378 clang-refactor clang-check clang-extdef-mapping clang-apply-replacements 376 clang-refactor clang-check clang-extdef-mapping clang-apply-replacements
379 clang-reorder-fields clang-tidy clang-change-namespace clang-doc clang-include-fixer 377 clang-reorder-fields clang-tidy clang-change-namespace clang-doc clang-include-fixer
diff --git a/meta/recipes-devtools/clang/lld_git.bb b/meta/recipes-devtools/clang/lld_git.bb
new file mode 100644
index 0000000000..02006e0edc
--- /dev/null
+++ b/meta/recipes-devtools/clang/lld_git.bb
@@ -0,0 +1,26 @@
1SUMMARY = "LLD - the LLVM Linker"
2DESCRIPTION = "LLD is a linker from the LLVM project that is a drop-in replacement for system linkers and runs much faster than them."
3HOMEPAGE = "https://lld.llvm.org"
4SECTION = "devel"
5
6require common-clang.inc
7require common-source.inc
8
9LIC_FILES_CHKSUM = "file://lld/LICENSE.TXT;md5=ae7dc7c027b1fa89b5b013d391d3ee2b"
10
11inherit cmake pkgconfig
12
13DEPENDS = "llvm-tblgen-native llvm"
14
15OECMAKE_SOURCEPATH = "${S}/lld"
16
17# Explicitly disable RPATHs as otherwise they're stipped out of the binaries,
18# and are then non-reproducible.
19#
20# Explicitly enable symlinks as the lld build doesn't call into the llvm setup
21# and turn that on.
22EXTRA_OECMAKE = "-DCMAKE_SKIP_BUILD_RPATH=ON \
23 -DLLVM_INCLUDE_TESTS=OFF -DLLVM_USE_SYMLINKS=ON \
24 -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen"
25
26BBCLASSEXTEND = "native nativesdk"