| Message ID | 20260115042452.39219-1-mark.yang@lge.com |
|---|---|
| State | New |
| Headers | show |
| Series | [v2] llvm: enable LLVMgold.so build by adding binutils dependency | expand |
On 15 Jan 2026, at 04:24, mark.yang via lists.openembedded.org <mark.yang=lge.com@lists.openembedded.org> wrote: > -DEPENDS = "llvm-tblgen-native libffi libxml2 zlib zstd" > +DEPENDS = "llvm-tblgen-native libffi libxml2 zlib zstd binutils" This recipe already has an ‘lto’ PACKAGECONFIG that pulls in a dependency on binutils, so you shouldn’t need this line if you’d enabled the LTO distro-feature (or if not, the packageconfig). Can you verify what is actually needed to enable the library build? Ross
Ross Burton, thank you for the review. The build reproduction steps and the intention for this patch can be found in the v1 patch at https://lists.openembedded.org/g/openembedded-core/topic/117252728. PACKAGECONFIG:remove:class-native = "lto thin-lto" Due to the configuration, llvm-native cannot enable lto in PACKAGECONFIG in any way. When attempting to use clang + lto, components that cannot use the lld linker (and instead use the bfd linker) require the LLVMgold.so plugin. To achieve this, binutils and the -DLLVM_BINUTILS_INCDIR flag in CMake are required. ( https://github.com/llvm/llvm-project/blob/main/clang/docs/ThinLTO.rst#basic ) Anyway, llvm-native cannot have LTO enabled due to the `remove`. -DLLVM_ENABLE_LTO=Full determines whether LLVM itself will be built with LTO applied. However, even if LLVM is not built using LTO, I think the environment should still be configured so that other components using the LLVM/clang toolchain can use LTO.
diff --git a/meta/recipes-devtools/clang/llvm_git.bb b/meta/recipes-devtools/clang/llvm_git.bb index 96ea383731..108e884a6f 100644 --- a/meta/recipes-devtools/clang/llvm_git.bb +++ b/meta/recipes-devtools/clang/llvm_git.bb @@ -11,7 +11,7 @@ require common-source.inc LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe" -DEPENDS = "llvm-tblgen-native libffi libxml2 zlib zstd" +DEPENDS = "llvm-tblgen-native libffi libxml2 zlib zstd binutils" inherit cmake pkgconfig lib_package multilib_header @@ -50,6 +50,7 @@ EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=MinSizeRel \ -DLLVM_TOOL_YAML2OBJ_BUILD=OFF \ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ + -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR} \ -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ " @@ -126,6 +127,10 @@ llvm_sysroot_preprocess() { install -m 0755 ${S}/llvm/tools/llvm-config/llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/ } +PACKAGES =+ "llvm-linker-tools" + +FILES:llvm-linker-tools = "${libdir}/LLVMgold* ${libdir}/libLTO.so.*" + FILES:${PN}-dev += "${libdir}/llvm-config" BBCLASSEXTEND = "native nativesdk"