diff mbox series

[02/19] nonclangable.inc: Add recipe which can not be built with clang

Message ID 20241105184540.3450302-2-raj.khem@gmail.com
State New
Headers show
Series [01/19] clang.inc: Global settings for clang toolchain | expand

Commit Message

Khem Raj Nov. 5, 2024, 6:45 p.m. UTC
Some need adjusting commandline variables and other parameters
all get housed here

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/conf/distro/include/nonclangable.inc | 687 ++++++++++++++++++++++
 1 file changed, 687 insertions(+)
 create mode 100644 meta/conf/distro/include/nonclangable.inc

Comments

Richard Purdie Jan. 7, 2025, 1:52 p.m. UTC | #1
On Tue, 2024-11-05 at 10:45 -0800, Khem Raj via lists.openembedded.org wrote:
> Some need adjusting commandline variables and other parameters
> all get housed here
> 
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
>  meta/conf/distro/include/nonclangable.inc | 687 ++++++++++++++++++++++
>  1 file changed, 687 insertions(+)
>  create mode 100644 meta/conf/distro/include/nonclangable.inc

We should be able to add an include_all directive in the clang
toolchain config which means these pieces can be split to the layers
where the recipes belong rather than being central in core.

Cheers,

Richard
diff mbox series

Patch

diff --git a/meta/conf/distro/include/nonclangable.inc b/meta/conf/distro/include/nonclangable.inc
new file mode 100644
index 00000000000..bb322447879
--- /dev/null
+++ b/meta/conf/distro/include/nonclangable.inc
@@ -0,0 +1,687 @@ 
+
+TUNE_CCARGS:remove:toolchain-clang = "${@bb.utils.contains('TUNE_FEATURES', 'aarch64', '-mbranch-protection=standard', '', d)}"
+
+# https://github.com/llvm/llvm-project/issues/78337
+TOOLCHAIN:pn-kernel-selftest = "gcc"
+
+# x86_64/musl build fails with
+# gtk4/4.12.5/build/gtk/libgtk-4.so.1: unsupported relocation type 37
+TOOLCHAIN:pn-gtk4:libc-musl:x86-64 = "gcc"
+
+TOOLCHAIN:pn-cpufrequtils = "gcc"
+
+TOOLCHAIN:pn-grub:genericx86-64 = "gcc"
+# | grub-mkimage: error: relocation 0x2b is not implemented yet.
+TOOLCHAIN:pn-grub-efi:aarch64 = "gcc"
+TOOLCHAIN:pn-grub-efi:riscv32 = "gcc"
+# clang-15 crashes
+TOOLCHAIN:pn-grub-efi:riscv64 = "gcc"
+TOOLCHAIN:pn-grub:riscv64 = "gcc"
+# | build-grub-module-verifier: error: search_label: unsupported relocation 0x108.
+TOOLCHAIN:pn-grub:aarch64 = "gcc"
+# crash embeds version of gdb which is not buildable with clang
+TOOLCHAIN:pn-crash = "gcc"
+# See https://github.com/llvm/llvm-project/issues/71925
+LIBCPLUSPLUS:pn-elfutils:toolchain-clang = "-stdlib=libstdc++"
+#| erl_bits.c:(.text+0xc2a): undefined reference to `__extendhfsf2'
+#| erl_bits.c:(.text+0x1bfa): undefined reference to `__truncsfhf2'
+#| clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
+# both riscv64 and x86-64
+TOOLCHAIN:pn-erlang = "gcc"
+
+# /mnt/a/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/firefox/60.1.0esr-r0/recipe-sysroot-native/usr/lib/clang/7.0.1/include/arm_neon.h:433:1: error: unknown type name 'inline'
+# __ai uint8x16_t vabdq_u8(uint8x16_t __p0, uint8x16_t __p1) {
+TOOLCHAIN:pn-firefox = "gcc"
+TOOLCHAIN:pn-gcc = "gcc"
+TOOLCHAIN:pn-gcc-runtime = "gcc"
+TOOLCHAIN:pn-gcc-sanitizers = "gcc"
+TOOLCHAIN:pn-glibc = "gcc"
+TOOLCHAIN:pn-glibc-initial = "gcc"
+TOOLCHAIN:pn-glibc-locale = "gcc"
+TOOLCHAIN:pn-glibc-mtrace = "gcc"
+TOOLCHAIN:pn-glibc-scripts = "gcc"
+TOOLCHAIN:pn-glibc-testsuite = "gcc"
+TOOLCHAIN:pn-glibc-y2038-tests = "gcc"
+
+#| prelink-rtld: error while loading shared libraries: ld.so.1
+#| /lib64/ld.so.1: No such file or directory
+TOOLCHAIN:pn-gobject-intospection:mips64 = "gcc"
+TOOLCHAIN:pn-avahi:mips64 = "gcc"
+
+# VLAs
+#| control.c:286:19: error: fields must have a constant size: 'variable length array in structure' extension will never be supported
+#|             __u32 buffer[cam->max_response_quads];
+#|                   ^
+#| 1 error generated.
+TOOLCHAIN:pn-libdc1394 = "gcc"
+
+# error: return address can be determined only for current frame
+TOOLCHAIN:pn-libexecinfo:mipsarch = "gcc"
+TOOLCHAIN:pn-libgcc = "gcc"
+TOOLCHAIN:pn-libgcc-initial = "gcc"
+TOOLCHAIN:pn-libgfortran = "gcc"
+TOOLCHAIN:pn-libssp-nonshared = "gcc"
+
+TOOLCHAIN:pn-m4:powerpc = "gcc"
+# clang does not have 64bit atomics on ppc
+TOOLCHAIN:pn-mesa:powerpc = "gcc"
+# clang fails with db.c:(.text+0x188): unsupported bss-plt -fPIC ifunc mmio_write64_be
+TOOLCHAIN:pn-rdma-core:powerpc = "gcc"
+# usermode qemu crashes when running binaries from clang + rust compiler on ppc32
+TOOLCHAIN:pn-librsvg:powerpc = "gcc"
+# variant-impl.hpp:309:36: error: 'is_variant' does not name a template but is followed by template arguments
+TOOLCHAIN:pn-omxplayer = "gcc"
+# error: return address can be determined only for current frame
+TOOLCHAIN:pn-openflow:mipsarch = "gcc"
+TOOLCHAIN:pn-openjdk-8 = "gcc"
+TOOLCHAIN:pn-openjre-8 = "gcc"
+TOOLCHAIN:pn-syslinux = "gcc"
+TOOLCHAIN:pn-systemtap = "gcc"
+# v4l-utils uses nested functions
+TOOLCHAIN:pn-v4l-utils = "gcc"
+# https://bugs.kde.org/show_bug.cgi?id=369723
+TOOLCHAIN:pn-valgrind = "gcc"
+
+TOOLCHAIN:pn-vboxguestdrivers = "gcc"
+# uses C++ which clang does not like
+TOOLCHAIN:pn-wvstreams = "gcc"
+TOOLCHAIN:pn-wvdial = "gcc"
+#
+#../../lib/libicui18n.so: undefined reference to `__atomic_fetch_sub_4'
+#../../lib/libicui18n.so: undefined reference to `__atomic_load_4'
+#../../lib/libicui18n.so: undefined reference to `__atomic_store_4'
+#../../lib/libicui18n.so: undefined reference to `__atomic_fetch_add_4'
+#
+TOOLCHAIN:pn-icu:armv4 = "gcc"
+TOOLCHAIN:pn-icu:armv5 = "gcc"
+
+#../../libgcrypt-1.6.5/mpi/mpih-div.c:98:3: error: invalid use of a cast in a inline asm context requiring an l-value: remove the cast or build with -fheinous-gnu-extensions
+TOOLCHAIN:pn-libgcrypt:mips64 = "gcc"
+
+#recipe-sysroot/usr/include/mozjs-60/mozilla/Span.h:634:5: error: statement not allowed in constexpr function
+#|     MOZ_RELEASE_ASSERT(aStart <= len && (aLength == dynamic_extent ||
+#|     ^
+TOOLCHAIN:pn-polkit = "gcc"
+
+# ppp uses nested functions and gcc specific option e.g. --print-sysroot
+#
+TOOLCHAIN:pn-ppp = "gcc"
+
+#| ./ports/linux/pseudo_wrappers.c:80:14: error: use of unknown builtin '__builtin_apply' [-Wimplicit-function-declaration]
+#|         void *res = __builtin_apply((void (*)()) real_syscall, __builtin_apply_args(), sizeof(long) * 7);
+#|                     ^
+#| ./ports/linux/pseudo_wrappers.c:80:57: error: use of unknown builtin '__builtin_apply_args' [-Wimplicit-function-declaration]
+#|         void *res = __builtin_apply((void (*)()) real_syscall, __builtin_apply_args(), sizeof(long) * 7);
+TOOLCHAIN:pn-pseudo = "gcc"
+
+# mix_neon.c:179:9: error: invalid operand in inline asm: 'vld1.s32 ${0:h}, [$2]
+#      vld1.s32 ${1:h}, [$3] '
+TOOLCHAIN:pn-pulseaudio:armv7ve = "gcc"
+TOOLCHAIN:pn-pulseaudio:armv7a = "gcc"
+
+#| ./dsp/v4f_IIR2.h:554:12: error: no matching function for call to 'v4f_map'
+#|                                 a[5] = v4f_map<__builtin_cosf> (f);
+#|                                        ^~~~~~~~~~~~~~~~~~~~~~~
+TOOLCHAIN:pn-caps = "gcc"
+
+#| ../libffi-3.3-rc0/src/arm/sysv.S: Assembler messages:
+#| ../libffi-3.3-rc0/src/arm/sysv.S:131: Error: selected processor does not support `vldrle d0,[sp]' in ARM mode
+#| ../libffi-3.3-rc0/src/arm/sysv.S:132: Error: selected processor does not support `vldmgt sp,{d0-d7}' in ARM mode
+TOOLCHAIN:pn-libffi:armeb = "gcc"
+
+# rocksdb/rocksdb/util/crc32c_ppc_asm.S:9:10: fatal error: 'ppc-asm.h' file not found
+# #include <ppc-asm.h>
+# This header is only available with gcc-cross
+TOOLCHAIN:pn-mariadb:powerpc64le = "gcc"
+
+# OpenCV does not compile for ppc64 with clang due to VSX clashes with altivec.h from clang
+TOOLCHAIN:pn-opencv:powerpc64le = "gcc"
+# Ade is used by openCV and shared C++ runtime so we can not mix libstdc++ and libc++
+TOOLCHAIN:pn-ade:powerpc64le = "gcc"
+
+#| error: return address can be determined only for current frame
+#| error: return address can be determined only for current frame
+#| error: return address can be determined only for current frame
+TOOLCHAIN:pn-gcompat:mips = "gcc"
+
+# Fixes Clang induced linker crashes when using glibc 2.35+
+# mips-yoe-linux/mips-yoe-linux-ld: DWARF error: invalid or unhandled FORM value: 0x22
+# mips-yoe-linux-ld: Zend/asm/make_mips32_o32_elf_gas.o: CALL16 reloc at 0x28 not against global symbol
+# mips-yoe-linux/mips-yoe-linux-ld: BFD (GNU Binutils) 2.37.20210721 assertion fail ../../bfd/elfxx-mips.c:3614
+TOOLCHAIN:pn-php:mips = "gcc"
+
+# Workaround oe-core patching problem temporarily
+TOOLCHAIN:pn-rsync = "gcc"
+
+TOOLCHAIN:pn-u-boot-at91 = "gcc"
+TOOLCHAIN:pn-u-boot-fslc-mfgtool = "gcc"
+TOOLCHAIN:pn-u-boot-fslc-mxsboot = "gcc"
+TOOLCHAIN:pn-u-boot-fslc = "gcc"
+TOOLCHAIN:pn-u-boot-imx-mfgtool = "gcc"
+TOOLCHAIN:pn-u-boot-imx = "gcc"
+TOOLCHAIN:pn-u-boot-qoriq = "gcc"
+TOOLCHAIN:pn-u-boot-boundary = "gcc"
+TOOLCHAIN:pn-u-boot-script-boundary = "gcc"
+TOOLCHAIN:pn-u-boot-script-qoriq = "gcc"
+TOOLCHAIN:pn-u-boot-script-toradex = "gcc"
+TOOLCHAIN:pn-u-boot-kontron = "gcc"
+TOOLCHAIN:pn-u-boot-variscite = "gcc"
+TOOLCHAIN:pn-u-boot-toradex = "gcc"
+TOOLCHAIN:pn-u-boot-hardkernel = "gcc"
+TOOLCHAIN:pn-u-boot-starfive = "gcc"
+TOOLCHAIN:pn-u-boot-hardkernel = "gcc"
+TOOLCHAIN:pn-u-boot-nezha = "gcc"
+TOOLCHAIN:pn-u-boot-ti-mainline = "gcc"
+TOOLCHAIN:pn-u-boot-ti-staging = "gcc"
+TOOLCHAIN:pn-u-boot-splash = "gcc"
+TOOLCHAIN:pn-u-boot-coral = "gcc"
+
+# See https://github.com/kraj/meta-clang/issues/696
+TOOLCHAIN:pn-pixman:aarch64 = "gcc"
+# libomp needs to link in libatomic after itself when -fopenmp is used
+TOOLCHAIN:pn-pixman:mipsarcho32 = "gcc"
+# See https://github.com/llvm/llvm-project/issues/61412
+TOOLCHAIN:pn-frr:riscv64 = "gcc"
+TOOLCHAIN:pn-frr:riscv32 = "gcc"
+
+# Tegra stuff
+TOOLCHAIN:pn-standalone-mm-optee-tegra:tegra = "gcc"
+TOOLCHAIN:pn-edk2-firmware-tegra:tegra = "gcc"
+TOOLCHAIN:pn-optee-os-tadevkit:tegra = "gcc"
+TOOLCHAIN:pn-optee-nvsamples:tegra = "gcc"
+TOOLCHAIN:pn-optee-os:tegra = "gcc"
+TOOLCHAIN:pn-libgcc-for-nvcc:tegra = "gcc"
+TOOLCHAIN:pn-gcc-for-nvcc-runtime:tegra = "gcc"
+
+# Does not compile with clang 18
+#| core/arch/arm/include/arm64.h:392:1: error: expected writable system register or pstate
+#|   392 | DEFINE_U32_REG_READWRITE_FUNCS(fpcr)
+#|       | ^
+TOOLCHAIN:pn-optee-os:imx-nxp-bsp = "gcc"
+
+# Fails with clang-19+
+# Poco/PriorityDelegate.h:203:10: error: no member named '_pTarget' in 'PriorityDelegate<type-parameter-0-0, void, true>'
+TOOLCHAIN:pn-poco = "gcc"
+TOOLCHAIN:pn-netdata = "gcc"
+# Needs OMP and with clang openmp is not ported to rv32 yet
+TOOLCHAIN:pn-python3-drgn:riscv32 = "gcc"
+
+CFLAGS:append:pn-liboil:toolchain-clang:x86-64 = " -fheinous-gnu-extensions "
+
+# TOPDIR/build/tmp/work/core2-32-yoe-linux/gnu-efi/3.0.17-r0/gnu-efi-3.0.17//lib/ctors.S:11:41: error: expected the entry size
+# .section .init_array, "aM", @init_array
+#                                        ^
+CFLAGS:append:pn-gnu-efi:toolchain-clang = " -no-integrated-as"
+
+#../libffi-3.2.1/src/arm/sysv.S:363:2: error: invalid instruction, did you mean: fldmiax?
+# fldmiadgt ip, {d0-d7}
+CFLAGS:append:pn-libffi:mips64:toolchain-clang = " -no-integrated-as"
+
+# ../db-5.3.28/src/mutex/mut_tas.c:150:34: error: unknown directive
+#<inline asm>:9:2: note: instantiated into assembly here
+# .force_thumb
+#        ^
+#CFLAGS:append:pn-db:toolchain-clang = " -no-integrated-as"
+#
+#| ../../../DirectFB-1.7.7/lib/direct/armasm_memcpy.S:63:2: error: invalid instruction
+#|  ldmgeia r1!, {r3, r4, r12, lr}
+#|  ^
+CFLAGS:append:pn-directfb:toolchain-clang:arm = " -no-integrated-as"
+
+#| threads_pthread.c:(.text+0x372): undefined reference to `__atomic_is_lock_free'
+EXTRA_OECONF:pn-openssl:toolchain-clang:x86 = "-latomic"
+
+CFLAGS:append:pn-userland:toolchain-clang = " -no-integrated-as"
+
+# libjpeg-turbo-2.0.2/simd/mips/jsimd_dspr2.S
+# <instantiation>:13:5: error: invalid token in expression
+# .if $17 != 0
+# ^
+CFLAGS:append:pn-libjpeg-turbo:toolchain-clang:mipsarch = " -no-integrated-as"
+
+#| /tmp/x86-sse2-cdb148.s:207:9: error: ambiguous operand size for instruction 'sub'
+#|     sub SIZE, 64
+#|         ^~~~
+CFLAGS:append:pn-tinymembench:toolchain-clang:x86-64 = " -no-integrated-as"
+CFLAGS:append:pn-tinymembench:toolchain-clang:x86 = " -no-integrated-as"
+CFLAGS:append:pn-tinymembench:toolchain-clang:mipsarch = " -no-integrated-as"
+
+CFLAGS:append:pn-ne10:toolchain-clang:arm = " -no-integrated-as"
+CFLAGS:append:pn-libde265:toolchain-clang:arm = " -no-integrated-as"
+
+#2816:2: error: changed section type for .debug_frame, expected: 0x7000001E
+# .section .debug_frame,"",@progbits
+# ^
+#lj_vm.S:2890:2: error: changed section flags for .eh_frame, expected: 0x2
+# .section .eh_frame,"aw",@progbits
+# ^
+CFLAGS:append:pn-luajit:toolchain-clang:mips = " -no-integrated-as"
+
+# uftrace/0.15.2/git/arch/aarch64/dynamic.S:92:2: error: instruction requires: fp-armv8
+CFLAGS:append:pn-uftrace:toolchain-clang:aarch64 = " -no-integrated-as"
+
+#FAILED: libucontext_posix.so.1
+#clang-13: error: unable to execute command: Segmentation fault (core dumped)
+#clang-13: error: linker command failed due to signal (use -v to see invocation)
+CFLAGS:append:pn-libucontext:toolchain-clang:powerpc64le = " -no-integrated-as"
+
+# Generated asm file can not be compiled with clang assembler due to presence of .0 label
+# and its references
+#| aes-decrypt-internal-2.s:368:1: error: unexpected token at start of statement
+#| .0:
+#| ^
+CFLAGS:append:pn-nettle:toolchain-clang:powerpc64le = " -no-integrated-as"
+
+# include/gcc/arm/ck_pr.h:201:1: error: instruction requires: arm-mode
+#| CK_PR_DOUBLE_STORE(uint64_t, 64)
+#| ^
+#include/gcc/arm/ck_pr.h:192:6: note: expanded from macro 'CK_PR_DOUBLE_STORE'
+#|                          "strexd        %1, %3, [%2]\n"         \
+#|                           ^
+CFLAGS:append:pn-concurrencykit:toolchain-clang:arm = " -no-integrated-as"
+CFLAGS:append:pn-sysbench:toolchain-clang:arm = " -no-integrated-as"
+#error: expected absolute expression
+#.elseif (bpp == 24) && (numpix == 8)
+#        ^
+#<instantiation>:50:5: note: while in macro instantiation
+#    pixld chunk_size, mask_bpp, mask_basereg, MASK
+#    ^
+CFLAGS:append:pn-qtbase:toolchain-clang:arm = " -no-integrated-as"
+
+#../git/common/connection.c:154:55: error: comparison of integers of different signs: 'unsigned long' and 'int' [-Werror,-Wsign-compare]
+#        for (cmsg = CMSG_FIRSTHDR(msg); cmsg != NULL; cmsg = CMSG_NXTHDR(msg, cmsg)) {
+#                                                             ^~~~~~~~~~~~~~~~~~~~~~
+CFLAGS:append:pn-seatd:toolchain-clang = " -Wno-sign-compare"
+
+# -fno-tree-vrp is gcc specific
+CXXFLAGS:remove:pn-mozjs:toolchain-clang = "-fno-tree-vrp"
+CFLAGS:remove:pn-mozjs:toolchain-clang = "-fno-tree-vrp"
+
+CFLAGS:append:pn-ffmpeg:riscv64 = " -march=rv64gczbb"
+CFLAGS:append:pn-ffmpeg:riscv32 = " -march=rv32gczbb"
+
+# python3-lxml_5.0.0 onwards need this option with clang until the functions are fixes
+# | src/lxml/etree.c:246911:63: error: incompatible function pointer types passing 'void (void *, const xmlError *)' (aka 'void (void *, const struct _xmlError *)') to parameter of type 'xmlStructuredErrorFunc' (aka 'void (*
+#)(void *, struct _xmlError *)') [-Wincompatible-function-pointer-types]
+#|  246911 |     xmlSchematronSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));
+#|         |                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CFLAGS:append:pn-python3-lxml:toolchain-clang = " -Wno-error=incompatible-function-pointer-types"
+# https://lists.openembedded.org/g/openembedded-devel/topic/103542151#108198
+CFLAGS:append:pn-python3-kivy:toolchain-clang = " -Wno-error=incompatible-function-pointer-types"
+
+# otherwise systemd efi fails to build
+# error: the 'sse' unit is not supported with this instruction set
+TUNE_CCARGS:remove:pn-systemd:toolchain-clang = "-mfpmath=sse"
+TUNE_CCARGS:remove:pn-systemd-boot:toolchain-clang = "-mfpmath=sse"
+
+TUNE_CCARGS:remove:pn-omxplayer:toolchain-clang = "-no-integrated-as"
+TUNE_CCARGS:remove:pn-nfs-utils:toolchain-clang = "-Qunused-arguments"
+
+# We want to error out when -msse option is used otherwise it enables sse on non-x86 arches
+TUNE_CCARGS:remove:pn-pipewire:toolchain-clang = "-Qunused-arguments"
+TUNE_CCARGS:remove:pn-tesseract:toolchain-clang = "-Qunused-arguments"
+TUNE_CCARGS:remove:pn-pulseaudio:toolchain-clang = "-Qunused-arguments"
+TUNE_CCARGS:remove:pn-btrfs-tools:toolchain-clang = "-Qunused-arguments"
+TUNE_CCARGS:append:pn-btrfs-tools:toolchain-clang = " -Werror=unused-command-line-argument"
+
+# Disable altivec on ppc32
+#/usr/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h:1345:32: error: use of undeclared identifier 'vec_sqrt'; did you mean 'vec_rsqrt'?
+#  BF16_TO_F32_UNARY_OP_WRAPPER(vec_sqrt, a);
+#                               ^~~~~~~~
+#                               vec_rsqrt
+TUNE_CCARGS:append:pn-ceres-solver:toolchain-clang:powerpc = " -mno-altivec"
+TUNE_CCARGS:append:pn-opencv:toolchain-clang:powerpc = " -mno-altivec"
+CXXFLAGS:append:pn-libeigen:toolchain-clang:powerpc = " -DEIGEN_ALTIVEC_DISABLE_MMA"
+
+# external/amber/src/src/amber.cc:53:41: error: unsafe pointer arithmetic [-Werror,-Wunsafe-buffer-usage]
+# vk-wrappers-1-0.inc:74:34: error: cast from 'PFN_vkVoidFunction' (aka 'void (*)()') to 'PFN_vkCmdEndRenderPass'
+# (aka 'void (*)(VkCommandBuffer_T *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
+CXXFLAGS:append:pn-opengl-es-cts:toolchain-clang = " -Wno-error=unsafe-buffer-usage -Wno-error=cast-function-type-strict"
+CXXFLAGS:append:pn-vulkan-cts:toolchain-clang = " -Wno-error=unsafe-buffer-usage -Wno-error=cast-function-type-strict"
+# Wno-error=overriding-option needed with clang-20
+# see https://github.com/jtv/libpqxx/issues/738 for deprecated-declarations ( not needed with clang19+ )
+CXXFLAGS:append:pn-vulkan-samples:toolchain-clang = " -Wno-error=overriding-option -Wno-error=deprecated-declarations"
+# Workaround for https://gitlab.gnome.org/GNOME/gtk/-/issues/6033
+CFLAGS:append:pn-gtk4:toolchain-clang = " -Wno-error=int-conversion"
+
+# usr/include/glib-2.0/glib/glib-autocleanups.h:49:1: error: cast from 'void (*)(void)' to 'GDestroyNotify'
+# (aka 'void (*)(void *)') converts to incompatible function type [-Werror,-Wcast-function-type-strict]
+CFLAGS:append:pn-pidgin-sipe:toolchain-clang = " -Wno-error=cast-function-type-strict"
+
+# 32bit builds of nodejs needs this warning to be disabled with clang16 until
+# v8 engine in nodejs moved beyong this commit
+# https://github.com/v8/v8/commit/d15d49b09dc7aef9edcc4cf6a0cb2b77a0db203f
+CXXFLAGS:append:pn-nodejs:toolchain-clang = " -Wno-error=enum-constexpr-conversion"
+# deps/TinyDeflate/gunzip.hh:1144:35: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
+CXXFLAGS:append:pn-doxygen:toolchain-clang = " -Wno-error=missing-template-arg-list-after-template-kw"
+
+#| /usr/src/debug/ruby/2.5.1-r0/build/../ruby-2.5.1/process.c:7073: undefined reference to `__mulodi4'
+#| clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
+COMPILER_RT:pn-ruby:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-python3:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-m4:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-cpio:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-openssh:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-webkitgtk:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-wpewebkit:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-python3-numpy:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:pn-mongodb:toolchain-clang:runtime-gnu = "-rtlib=compiler-rt ${UNWINDLIB}"
+COMPILER_RT:remove:pn-m4:powerpc = "-rtlib=compiler-rt"
+COMPILER_RT:remove:pn-ruby:powerpc = "-rtlib=compiler-rt"
+COMPILER_RT:remove:pn-webkitgtk:powerpc = "-rtlib=compiler-rt"
+COMPILER_RT:remove:pn-m4:armeb = "-rtlib=compiler-rt"
+COMPILER_RT:remove:pn-ruby:armeb = "-rtlib=compiler-rt"
+COMPILER_RT:remove:pn-webkitgtk:armeb = "-rtlib=compiler-rt"
+# build/lib/libQt5Widgets.so: undefined reference to `__lshrti3'
+# __lshrti3 is missing in libgcc
+COMPILER_RT:pn-qtbase:toolchain-clang:riscv32 = "-rtlib=compiler-rt ${UNWINDLIB}"
+
+LDFLAGS:append:pn-qtwebengine:toolchain-clang:runtime-gnu:x86 = " -latomic"
+LDFLAGS:append:pn-qemu:toolchain-clang:x86 = " -latomic"
+# warning: <elfFile> has a LOAD segment with RWX permissions
+LDFLAGS:append:pn-ruby:toolchain-clang:powerpc = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '', ' -Wl,--no-warn-rwx-segment', d)}"
+LDFLAGS:append:pn-cairo:toolchain-clang:powerpc = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '', ' -Wl,--no-warn-rwx-segment', d)}"
+LDFLAGS:append:pn-systemd:toolchain-clang:powerpc = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '', ' -Wl,--no-warn-rwx-segment', d)}"
+
+# glibc is built with gcc and hence encodes some libgcc specific builtins which are not found
+# when doing static linking with clang using compiler-rt, so use libgcc
+# undefined reference to `__unordtf2'
+COMPILER_RT:pn-aufs-util:libc-glibc:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-libhugetlbfs:libc-glibc:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-tsocks:libc-glibc:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-libc-bench:libc-glibc:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-fmt:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-fmt:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-mybw:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-mybw:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-libc-bench:libc-glibc:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-mpich:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-aufs-util:libc-glibc:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-libhugetlbfs:libc-glibc:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-tsocks:libc-glibc:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+# | tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot-native/usr/bin/x86_64-lmp-linux/x86_64-lmp-linux-ld: tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot//usr/lib/libc.a(printf_fp.o): in function `__printf_fp_l':
+# | /usr/src/debug/glibc/2.35-r0/git/stdio-common/printf_fp.c:388: undefined reference to `__unordtf2'
+# | tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot-native/usr/bin/x86_64-lmp-linux/x86_64-lmp-linux-ld: /usr/src/debug/glibc/2.35-r0/git/stdio-common/printf_fp.c:388: undefined reference to `__unordtf2'
+# | tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot-native/usr/bin/x86_64-lmp-linux/x86_64-lmp-linux-ld: /usr/src/debug/glibc/2.35-r0/git/stdio-common/printf_fp.c:388: undefined reference to `__letf2'
+# | tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot-native/usr/bin/x86_64-lmp-linux/x86_64-lmp-linux-ld: tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot//usr/lib/libc.a(printf_fphex.o): in function `__printf_fphex':
+# | /usr/src/debug/glibc/2.35-r0/git/stdio-common/../stdio-common/printf_fphex.c:206: undefined reference to `__unordtf2'
+# | tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot-native/usr/bin/x86_64-lmp-linux/x86_64-lmp-linux-ld: /usr/src/debug/glibc/2.35-r0/git/stdio-common/../stdio-common/printf_fphex.c:206: undefined reference to `__unordtf2'
+# | tmp-lmp/work/corei7-64-lmp-linux/ostree/2021.6-r0/recipe-sysroot-native/usr/bin/x86_64-lmp-linux/x86_64-lmp-linux-ld: /usr/src/debug/glibc/2.35-r0/git/stdio-common/../stdio-common/printf_fphex.c:206: undefined reference to `__letf2'
+# | x86_64-lmp-linux-clang -target x86_64-lmp-linux  -m64 -march=nehalem -mtune=generic -mfpmath=sse -msse4.2 -mlittle-endian --dyld-prefix=/usr -Qunused-arguments -fstack-protector-strong  -O2 -D_F
+COMPILER_RT:pn-ostree:libc-glibc:toolchain-clang:x86 = "-rtlib=libgcc --unwindlib=libgcc"
+COMPILER_RT:pn-ostree:libc-glibc:toolchain-clang:x86-64 = "-rtlib=libgcc --unwindlib=libgcc"
+
+#(unwind.o): in function `__pthread_unwind':
+#/usr/src/debug/glibc/2.29-r0/git/nptl/unwind.c:121: undefined reference to `_Unwind_ForcedUnwind'
+#clang-8: error: linker command failed with exit code 1 (use -v to see invocation)
+COMPILER_RT:pn-libhugetlbfs:libc-glibc:toolchain-clang:arm = "--unwindlib=libgcc"
+
+# Does not compile with libc++ from clang 17+ anymore see
+# https://github.com/llvm/llvm-project/issues/63743
+LIBCPLUSPLUS:pn-apt:toolchain-clang = "-stdlib=libstdc++"
+
+# All following need to use libstdc++ with clang-19
+# see https://libcxx.llvm.org/ReleaseNotes/19.html#deprecations-and-removals
+LIBCPLUSPLUS:pn-pbzip2:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-nlohmann-json:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-paho-mqtt-cpp:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-poco:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-netdata:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-cpp-netlib:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-cpprest:toolchain-clang = "-stdlib=libstdc++"
+# See https://lists.openembedded.org/g/openembedded-devel/topic/meta_oe_patch_2_3/108964413
+LIBCPLUSPLUS:pn-tomlplusplus:toolchain-clang = "-stdlib=libstdc++"
+LIBCPLUSPLUS:pn-doxygen:toolchain-clang = "-stdlib=libstdc++"
+
+# Uses gcc for native tools, e.g. nsinstall and passes clang options which fails so
+# let same compiler ( gcc or clang) be native/cross compiler
+# | gcc: error: unrecognized command line option ‘-Qunused-arguments’
+BUILD_CC:pn-nss:toolchain-clang = "clang -rtlib=libgcc -unwindlib=none"
+
+# LTO
+# Seems to use symver ASMs see https://stackoverflow.com/questions/46304742/how-to-combine-lto-with-symbol-versioning
+# lib/puny_encode.c:136: multiple definition of `_idn2_punycode_encode'
+LTO:pn-libidn2:toolchain-clang = ""
+
+#libcairo.so: undefined reference to pthread_mutexattr_init [--no-allow-shlib-undefined]
+LTO:pn-cairo:toolchain-clang = ""
+
+# This works with gcc-ranlib wrapper only which expands $@ shell array,
+# but it will fail if RANLIB was set to <cross>-ranlib or
+# <cross>-llvn-ranlib has same behaviour
+RANLIB:append:pn-tcf-agent:toolchain-clang = " $@"
+
+# Subprocess output:mips-yoe-linux-llvm-objcopy: error: Link field value 22 in section .rel.dyn is not a symbol table
+# also seen on riscv64 and x86-64
+OBJCOPY:pn-linux-yocto:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-yocto-dev:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-yocto-rt:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-variscite:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-ti-staging:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-raspberrypi:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-starfive-dev:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-nezha-dev:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-hardkernel:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-imx:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-fslc:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-fslc-imx:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-fslc-lts:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-at91:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-linaro-qcomlt:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-linux-intel:toolchain-clang = "${HOST_PREFIX}objcopy"
+
+# see https://github.com/llvm/llvm-project/issues/53948
+OBJCOPY:pn-opensbi:toolchain-clang = "${HOST_PREFIX}objcopy"
+OBJCOPY:pn-libc-bench:toolchain-clang = "${HOST_PREFIX}objcopy"
+STRIP:pn-libc-bench:toolchain-clang = "${HOST_PREFIX}strip"
+OBJCOPY:pn-aufs-util:toolchain-clang = "${HOST_PREFIX}objcopy"
+STRIP:pn-aufs-util:toolchain-clang = "${HOST_PREFIX}strip"
+
+# Depend on GNU objcopy option missing in llvm-objcopy
+# llvm-objcopy: error: unknown argument '--section-alignment=512'
+OBJCOPY:pn-systemd-boot:toolchain-clang = "${HOST_PREFIX}objcopy"
+
+# See https://github.com/llvm/llvm-project/issues/53999
+STRIP:pn-go-helloworld:mips:toolchain-clang = "${HOST_PREFIX}strip"
+OBJCOPY:pn-go-helloworld:mips:toolchain-clang = "${HOST_PREFIX}objcopy"
+STRIP:pn-gosu:mips:toolchain-clang = "${HOST_PREFIX}strip"
+OBJCOPY:pn-gosu:mips:toolchain-clang = "${HOST_PREFIX}objcopy"
+
+# e.g. mips-yoe-linux-llvm-objcopy: error: Link field value 42 in section .rel.dyn is not a symbol table
+# e.g. aarch64-yoe-linux-llvm-objcopy: error: Link field value 35 in section .rela.plt is not a symbol table
+OBJCOPY:pn-mybw:toolchain-clang = "${HOST_PREFIX}objcopy"
+
+# Fails with llvm strip
+# i686-yoe-linux-llvm-strip: error: SHT_STRTAB string table section [index 9] is non-null terminated
+STRIP:pn-minio:toolchain-clang = "${HOST_PREFIX}strip"
+OBJCOPY:pn-minio:toolchain-clang = "${HOST_PREFIX}objcopy"
+
+# | aarch64-yoe-linux-llvm-objcopy: error: invalid output format: 'efi-app-aarch64'
+OBJCOPY:pn-gnu-efi:toolchain-clang = "${HOST_PREFIX}objcopy"
+
+# see https://github.com/llvm/llvm-project/issues/54213
+# Generates a bad libbsd.so linker stub and apps like bluelsa, mg, netcat-openbsd, android-tools
+# fails to link with libbsd
+OBJDUMP:pn-libbsd:mips:toolchain-clang = "${HOST_PREFIX}objdump"
+
+# With clang/lld it builds objects which gnu strip complains about
+# riscv64-yoe-linux-strip: /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/python3-matplotlib/3.5.3-r0/package/usr/lib/python3.10/site-packages/matplotlib/stTcyupd: not enough room for program headers, try linking with -N
+STRIP:pn-python3-matplotlib:toolchain-clang:riscv64 = "${HOST_PREFIX}llvm-strip"
+STRIP:pn-python3-matplotlib:toolchain-clang:riscv32 = "${HOST_PREFIX}llvm-strip"
+
+# Need OBJDUMP during do_package_qa which is set to llvm-objdump with meta-clang
+# it might work with GNU objdump since it falls back to one from build host
+DEPENDS:append:pn-linux-firmware:toolchain-clang = " clang-native"
+
+# Needs for solving fopenmp issues
+DEPENDS:append:pn-pixman:mips:toolchain-clang = " openmp"
+#| ../pixman-0.40.0/pixman/pixman-arm-neon-asm.S:3625:1: note: while in macro instantiation
+#| generate_bilinear_scanline_func pixman_scaled_bilinear_scanline_0565_0565_SRC_asm_neon, 0565, 0565, 1, 1, 28, BILINEAR_FLAG_UNROLL_4
+#| ^
+#| <instantiation>:134:1: error: unknown directive
+#| .endfunc
+#| ^
+CFLAGS:append:pn-pixman:arm:toolchain-clang = " -no-integrated-as"
+# <instantiation>:98:23: error: operand must be e[8|16|32|64|128|256|512|1024],m[1|2|4|8|f2|f4|f8],[ta|tu],[ma|mu]
+#  vsetvli zero, zero, e16, m1
+CFLAGS:append:pn-dav1d:riscv64:toolchain-clang = " -no-integrated-as"
+
+# test_connectx segfaults with this option set to -fstack-protector-strong
+SECURITY_STACK_PROTECTOR:pn-lksctp-tools:toolchain-clang = ""
+
+# ERROR: babeltrace2-2.0.5-r0 do_package_qa: QA Issue: babeltrace2: ELF binary /usr/lib/babeltrace2/plugins/babeltrace-plugin-ctf.so has relocations in .text
+INSANE_SKIP:append:pn-babeltrace2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' textrel', '', d)}"
+
+LDFLAGS:append:pn-libidn2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-alsa-lib:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libmd:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libbsd:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-slang:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libgcrypt:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libxml2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-binutils:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnss-mdns:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-pulseaudio:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-mesa:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-mesa-gl:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-mesa-pvr:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnsl2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnl:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnftnl:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libtirpc:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-ndctl:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+
+LDFLAGS:append:pn-zlib:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd -Wl,--undefined-version', '', d)}"
+LDFLAGS:remove:pn-zlib:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+
+LDFLAGS:append:pn-qtbase:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+# | aarch64-yoe-linux-ld.lld: error: version script assignment of 'Qt_6.5' to symbol 'qt_version_tag' failed: symbol not defined
+LDFLAGS:append:pn-qtlanguageserver:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtserialport:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtimageformats:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtnetworkauth:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtsvg:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtshadertools:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtdeclarative:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtserialbus:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtwebsockets:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtlottie:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtspeech:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtcoap:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtsensors:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtquickdesigner-components:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtquicktimeline:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qt5compat:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qt3d:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtvirtualkeyboard:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtscxml:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtpositioning:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtdatavis3d:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtremoteobjects:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtopcua:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtcharts:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtconnectivity:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtwayland:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtgrpc:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qthttpserver:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtmqtt:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtwebchannel:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtquick3d:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtlocation:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtwebengine:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtwebview:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtmultimedia:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtquick3dphysics:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtinterfaceframework:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qttools:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtdeviceutilities:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-qtpdf:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libxcrypt:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-popt:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-json-c:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libtalloc:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libdevmapper:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libtdb:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libtevent:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-cryptsetup:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libgphoto2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libxklavier:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-lame:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-keyutils:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libcdio:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libva:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libbpf:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-npth:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-tbb:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-corosync:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnetfilter-cttimeout:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-fuse3:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-tremor:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-flashrom:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-ipset:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-rdma-core:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-apitrace:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libkcapi:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-gtk-vnc:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnss-nis:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libva-initial:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-dante:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-basu:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-passwdqc:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-pcp:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-multipath-tools:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-renderdoc:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libldb:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-samba:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libnvme:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-gnu-efi:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libffi:x86:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libffi:arm:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-elfutils:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-pmdk:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-libcgroup:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld sysvinit', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-kernel-selftest:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-openldap:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-liburing:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-frame:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+# | x86_64-yoe-linux-musl-ld.lld: error: version script assignment of 'global' to symbol 'pam_sm_chauthtok' failed: symbol not defined
+LDFLAGS:append:pn-wtmpdb:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+# arm-yoe-linux-gnueabi-ld.lld: error: version script assignment of 'global' to symbol 'pam_sm_chauthtok' failed: symbol not defined
+LDFLAGS:append:pn-util-linux:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+LDFLAGS:append:pn-util-linux-libuuid:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -Wl,--undefined-version', '', d)}"
+TUNE_CCARGS:remove:pn-kernel-selftest:toolchain-clang = "-mfpmath=sse"
+
+# Avoid's go linker crash as reported in https://github.com/golang/go/issues/61872
+# it happens when libstd.so is linked with lld for aarch64
+LDFLAGS:append:pn-go-runtime:toolchain-clang:aarch64 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd', '', d)}"
+LDFLAGS:remove:pn-go-runtime:toolchain-clang:aarch64 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+LDFLAGS:append:pn-go-runtime:toolchain-clang:x86-64 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd', '', d)}"
+LDFLAGS:remove:pn-go-runtime:toolchain-clang:x86-64 = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+# See https://github.com/llvm/llvm-project/issues/65017
+LDFLAGS:append:pn-libfaketime:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd', '', d)}"
+LDFLAGS:remove:pn-libfaketime:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+# arm-yoe-linux-gnueabi-ld.lld: error: version script assignment of 'global' to symbol 'readdir' failed: symbol not defined
+#| arm-yoe-linux-gnueabi-ld.lld: error: version script assignment of 'global' to symbol 'readdir_r' failed: symbol not defined
+#| arm-yoe-linux-gnueabi-clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+LDFLAGS:append:pn-aufs-util:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd', '', d)}"
+LDFLAGS:remove:pn-aufs-util:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+# | arm-yoe-linux-gnueabi-ld.lld: error: version script assignment of 'global' to symbol 'pam_sm_chauthtok' failed: symbol not defined
+LDFLAGS:append:pn-lastlog2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd', '', d)}"
+LDFLAGS:remove:pn-lastlog2:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+LDFLAGS:remove:pn-python3-bcrypt:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld ptest', '-fuse-ld=lld', '', d)}"
+LDFLAGS:remove:pn-bluez5:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '-fuse-ld=lld', '', d)}"
+LDFLAGS:append:pn-bluez5:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', ' -fuse-ld=bfd', '', d)}"
+
+LD:pn-gnu-efi:toolchain-clang = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-lld', '${HOST_PREFIX}ld.bfd${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', '${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}', d)}"
+LD:pn-libhugetlbfs:toolchain-clang = "${HOST_PREFIX}ld.bfd${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}"
+LD:pn-libunix-statgrab:toolchain-clang = "${CC}"
+
+TOOLCHAIN:pn-perf = "gcc"
+
+# See https://github.com/llvm/llvm-project/issues/108262
+SELECTED_OPTIMIZATION:remove:pn-libjxl:arm:toolchain-clang = "-O2"
+SELECTED_OPTIMIZATION:append:pn-libjxl:arm:toolchain-clang = " -Og"
+
+# qemu usermode crashes when using clang as system compiler but works with gcc
+# see https://patchwork.yoctoproject.org/project/oe-core/patch/20240923234336.3978188-1-raj.khem@gmail.com/
+GI_DATA_ENABLED:pn-vte:toolchain-clang:armv7ve = "False"