]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
clang-cross: Create <cross>-clang binary copy instead of symlink
authorKhem Raj <raj.khem@gmail.com>
Thu, 7 Aug 2025 00:44:25 +0000 (17:44 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 11 Aug 2025 17:03:13 +0000 (18:03 +0100)
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 <cross>-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 <raj.khem@gmail.com>
Cc: Ross Burton <ross.burton@arm.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
meta/recipes-devtools/clang/clang-cross_git.bb

index 33b01e42349f3ea7e0e0b5a16862c328174c36c4..2ec15dd1dfc9c29ba5983e7ec9d1ddd76e73602e 100644 (file)
@@ -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"