From: Khem Raj Date: Thu, 7 Aug 2025 00:44:25 +0000 (-0700) Subject: clang-cross: Create -clang binary copy instead of symlink X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b0128fe6421e64674fd250e0b4e6afb1c8ce436;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git clang-cross: Create -clang binary copy instead of symlink With clang cleanup in [1] we ended up removing this logic, which is still required. This ensures that search path for subsequent tools e.g. linker assembler are searched in the same dir where -clang is installed. If its a symlink to ../clang then the reference installation dir is ../ and all cross-tools are not there so clang will fail to find assembler/linker from cross staging area and use /usr/bin/ld or /usr/bin/as which we do not want [1] https://git.openembedded.org/openembedded-core/commit/meta/recipes-devtools/clang/clang-cross_git.bb?id=5d96ed55acf7b9a908241222097ad809355de7cf Signed-off-by: Khem Raj Cc: Ross Burton Signed-off-by: Mathieu Dubois-Briand --- diff --git a/meta/recipes-devtools/clang/clang-cross_git.bb b/meta/recipes-devtools/clang/clang-cross_git.bb index 33b01e42349..2ec15dd1dfc 100644 --- a/meta/recipes-devtools/clang/clang-cross_git.bb +++ b/meta/recipes-devtools/clang/clang-cross_git.bb @@ -15,7 +15,7 @@ DEPENDS = "clang-native virtual/cross-binutils ${@bb.utils.contains('DISTRO_FEAT do_install() { install -d ${D}${bindir} - for tool in clang clang++ clang-tidy lld ld.lld llvm-profdata \ + for tool in clang-tidy lld ld.lld llvm-profdata \ 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 @@ -23,4 +23,10 @@ do_install() { ln -sf ../$tool ${D}${bindir}/${TARGET_PREFIX}$tool fi done + # GNU Linker and assembler is needed in same directory as clang binaries else + # it will fallback to host linker which is not desired + install -m 0755 ${STAGING_BINDIR_NATIVE}/clang ${D}${bindir}/${TARGET_PREFIX}clang + ln -sf ${TARGET_PREFIX}clang ${D}${bindir}/${TARGET_PREFIX}clang++ } +# clang driver being copied above is already stripped +INHIBIT_SYSROOT_STRIP = "1"