summaryrefslogtreecommitdiffstats
path: root/classes/oneapi-vendor-compat.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* classes: add oneapi-vendor-compat bbclassYogesh Tyagi2026-04-291-0/+76
The Intel oneAPI DPC++/C++ compiler binaries (icx, icpx) shipped by meta-intel as prebuilt installers have a fixed default -target triple baked into the LLVM driver. As of the 2025.3.x bundle the triple is 'x86_64-unknown-linux-gnu' (LLVM's portable default); prior 2024.x bundles used 'x86_64-oe-linux' (matching the OpenEmbedded nodistro default of TARGET_VENDOR=oe). icx also emits 'x86_64-linux-gnu' (the Debian/Ubuntu host triple) in some search paths. Yocto distros set TARGET_VENDOR differently: poky uses 'poky' (TARGET_SYS=x86_64-poky-linux), nodistro uses 'oe', etc. The result is a vendor-triple mismatch: icx looks for crtbeginS.o / bits/c++config.h and similar files under one triple while they are installed at another. Until Intel either ships per-vendor variants or the meta-intel oneAPI recipes patch the prebuilt binaries, install a set of compatibility symlinks at rootfs time so every spelling of the multilib vendor triple resolves to the same files on the image. The alias set is configurable via ONEAPI_VENDOR_TRIPLE_ALIASES; entries that already match the native target triple are skipped, so the class is a no-op on images whose native vendor matches every alias. Usage: add to IMAGE_CLASSES in a distro / local config that consumes the Intel oneAPI compiler: IMAGE_CLASSES += "oneapi-vendor-compat" Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com>