Message ID | 20250424-clang-merge-v1-0-5a492a8461aa@gmail.com |
---|---|
Headers | show |
Series | clang-merge: Bring clang recipes from meta-clang | expand |
On Thu, Apr 24, 2025 at 12:20:34AM -0700, Khem Raj wrote: > Latest mesa 25+ needs libclang during build for tools like mesa_clc, > we enahnced already existing llvm recipe to build pieces of clang as > well, which worked for mesa's needs but broke static clang compiler > provided by meta-clang due to newfound conflicts, since clang is now > built with llvm recipe from core and also by meta-clang and they > compete for same namespace, an attempt to make them co-habit did reveal > more difficulties. Clang compiler from meta-clang is not able to use > llvm libraries from core since they patch them differently. > > This patch series therefore brings clang and all recipes that build from > llvm sources into core. With this changeset, clang recipes can be removed > from meta-clang there is a pull request for that already [1] > As an aside, we only build clang once and use it for meta-clang needs > and core needs. > > With this, meta-clang can depend upon core layer to provide clang and > related recipes, meta-clang will still provide the toolchain policies > around clang based toolchains. Clang compiler from core, while usable > for mesa is not yet fully usable out of box, since we need to workout > the multi-toolchain architecture for core, which will be done in next > phase after this merge. > > [1] https://github.com/kraj/meta-clang/pull/1088 > > Signed-off-by: Khem Raj <raj.khem@gmail.com> After fixing the RPROVIDES, this still fails the nativesdk-mesa build if I enable OpenCL. ERROR: QA Issue: File /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib/libMesaOpenCL.so.1.0.0 in package nativesdk-libopencl-mesa contains reference to TMPDIR [buildpaths] While building OpenCL-enabled Mesa: /home/lumag/Projects/RPB/build-rpb/tmp-poky/work/cortexa57-poky-linux/mesa/25.0.2/recipe-sysroot/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found Unable to generate bindings: clang diagnosed error: /home/lumag/Projects/RPB/build-rpb/tmp-poky/work/cortexa57-poky-linux/mesa/25.0.2/recipe-sysroot/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found
On 4/24/25 3:04 AM, Dmitry Baryshkov wrote: > On Thu, Apr 24, 2025 at 12:20:34AM -0700, Khem Raj wrote: >> Latest mesa 25+ needs libclang during build for tools like mesa_clc, >> we enahnced already existing llvm recipe to build pieces of clang as >> well, which worked for mesa's needs but broke static clang compiler >> provided by meta-clang due to newfound conflicts, since clang is now >> built with llvm recipe from core and also by meta-clang and they >> compete for same namespace, an attempt to make them co-habit did reveal >> more difficulties. Clang compiler from meta-clang is not able to use >> llvm libraries from core since they patch them differently. >> >> This patch series therefore brings clang and all recipes that build from >> llvm sources into core. With this changeset, clang recipes can be removed >> from meta-clang there is a pull request for that already [1] >> As an aside, we only build clang once and use it for meta-clang needs >> and core needs. >> >> With this, meta-clang can depend upon core layer to provide clang and >> related recipes, meta-clang will still provide the toolchain policies >> around clang based toolchains. Clang compiler from core, while usable >> for mesa is not yet fully usable out of box, since we need to workout >> the multi-toolchain architecture for core, which will be done in next >> phase after this merge. >> >> [1] https://github.com/kraj/meta-clang/pull/1088 >> >> Signed-off-by: Khem Raj <raj.khem@gmail.com> > > After fixing the RPROVIDES, this still fails the nativesdk-mesa build if clang recipe does have this PROVIDES:append:class-native = " llvm-native libclc-native spirv-llvm-translator-native" PROVIDES:append:class-target = " llvm libclc spirv-llvm-translator" PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc nativesdk-spirv-llvm-translator" I wonder why is RPROVIDE needed. > I enable OpenCL. > > ERROR: QA Issue: File /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib/libMesaOpenCL.so.1.0.0 in package nativesdk-libopencl-mesa contains reference to TMPDIR [buildpaths] > > While building OpenCL-enabled Mesa: > > /home/lumag/Projects/RPB/build-rpb/tmp-poky/work/cortexa57-poky-linux/mesa/25.0.2/recipe-sysroot/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found > Unable to generate bindings: clang diagnosed error: /home/lumag/Projects/RPB/build-rpb/tmp-poky/work/cortexa57-poky-linux/mesa/25.0.2/recipe-sysroot/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found > I do not see this error for qemux86-64 here ( maybe it happens for arm64 targets alone ? ) I enabled opencl related pakageconfigs for nativesdk-mesa I added this line PACKAGECONFIG:append:class-nativesdk = " libclc gallium-llvm amd svga" and nativesdk-mesa built just fine.
On Thu, Apr 24, 2025 at 05:44:03PM -0700, Khem Raj wrote: > On 4/24/25 3:04 AM, Dmitry Baryshkov wrote: > > On Thu, Apr 24, 2025 at 12:20:34AM -0700, Khem Raj wrote: > > > Latest mesa 25+ needs libclang during build for tools like mesa_clc, > > > we enahnced already existing llvm recipe to build pieces of clang as > > > well, which worked for mesa's needs but broke static clang compiler > > > provided by meta-clang due to newfound conflicts, since clang is now > > > built with llvm recipe from core and also by meta-clang and they > > > compete for same namespace, an attempt to make them co-habit did reveal > > > more difficulties. Clang compiler from meta-clang is not able to use > > > llvm libraries from core since they patch them differently. > > > > > > This patch series therefore brings clang and all recipes that build from > > > llvm sources into core. With this changeset, clang recipes can be removed > > > from meta-clang there is a pull request for that already [1] > > > As an aside, we only build clang once and use it for meta-clang needs > > > and core needs. > > > > > > With this, meta-clang can depend upon core layer to provide clang and > > > related recipes, meta-clang will still provide the toolchain policies > > > around clang based toolchains. Clang compiler from core, while usable > > > for mesa is not yet fully usable out of box, since we need to workout > > > the multi-toolchain architecture for core, which will be done in next > > > phase after this merge. > > > > > > [1] https://github.com/kraj/meta-clang/pull/1088 > > > > > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > > > After fixing the RPROVIDES, this still fails the nativesdk-mesa build if > > clang recipe does have this > > PROVIDES:append:class-native = " llvm-native libclc-native > spirv-llvm-translator-native" > PROVIDES:append:class-target = " llvm libclc spirv-llvm-translator" > PROVIDES:append:class-nativesdk = " nativesdk-llvm nativesdk-libclc > nativesdk-spirv-llvm-translator" > > > I wonder why is RPROVIDE needed. I'll capture the errors for v2. > > > I enable OpenCL. > > > > ERROR: QA Issue: File /usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib/libMesaOpenCL.so.1.0.0 in package nativesdk-libopencl-mesa contains reference to TMPDIR [buildpaths] > > > > While building OpenCL-enabled Mesa: > > > > /home/lumag/Projects/RPB/build-rpb/tmp-poky/work/cortexa57-poky-linux/mesa/25.0.2/recipe-sysroot/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found > > Unable to generate bindings: clang diagnosed error: /home/lumag/Projects/RPB/build-rpb/tmp-poky/work/cortexa57-poky-linux/mesa/25.0.2/recipe-sysroot/usr/include/llvm/ADT/DenseMapInfo.h:17:10: fatal error: 'cassert' file not found > > > > I do not see this error for qemux86-64 here ( maybe it happens for arm64 > targets alone ? ) I enabled opencl related pakageconfigs for nativesdk-mesa > I added this line > > PACKAGECONFIG:append:class-nativesdk = " libclc gallium-llvm amd svga" > > and nativesdk-mesa built just fine. > Most likely because it can use headers from the native sysroot. I was usually building three targets, qemuarm64, qemuarm and qemux86-64.
Latest mesa 25+ needs libclang during build for tools like mesa_clc, we enahnced already existing llvm recipe to build pieces of clang as well, which worked for mesa's needs but broke static clang compiler provided by meta-clang due to newfound conflicts, since clang is now built with llvm recipe from core and also by meta-clang and they compete for same namespace, an attempt to make them co-habit did reveal more difficulties. Clang compiler from meta-clang is not able to use llvm libraries from core since they patch them differently. This patch series therefore brings clang and all recipes that build from llvm sources into core. With this changeset, clang recipes can be removed from meta-clang there is a pull request for that already [1] As an aside, we only build clang once and use it for meta-clang needs and core needs. With this, meta-clang can depend upon core layer to provide clang and related recipes, meta-clang will still provide the toolchain policies around clang based toolchains. Clang compiler from core, while usable for mesa is not yet fully usable out of box, since we need to workout the multi-toolchain architecture for core, which will be done in next phase after this merge. [1] https://github.com/kraj/meta-clang/pull/1088 Signed-off-by: Khem Raj <raj.khem@gmail.com> --- Dmitry Baryshkov (1): clang: remove LLVM_LDFLAGS from llvm-config --ldflags output Khem Raj (9): cmake-native.bbclass: Abstraction to use cmake with native toolchains llvm: Renamed to clang maintainers.inc: Add myself as maintainer for clang family of recipes clang: Merge llvm/clang family recipes from meta-clang kernel-arch.bbclass: Do not use weak assignment for TOOLCHAIN clang.inc: Remove duplicate RANLIB setting openmp: Omit time stamps from generated files sstatesig: Handle special case of llvm-project-source shared-workdir multilib.conf: Add llvm-project-source recipe to NON_MULTILIB_RECIPES Liu Yiding (1): clang: multilib-header fix for llvm-config.h meta/classes-recipe/cmake-native.bbclass | 56 +++ meta/classes-recipe/kernel-arch.bbclass | 2 +- meta/conf/distro/include/maintainers.inc | 11 +- meta/conf/multilib.conf | 2 +- meta/conf/toolchain/clang.inc | 1 - meta/lib/oe/sstatesig.py | 3 + .../clang/clang-cross-canadian_git.bb | 36 ++ meta/recipes-devtools/clang/clang-cross_git.bb | 39 ++ meta/recipes-devtools/clang/clang-crosssdk_git.bb | 34 ++ ...ind-libunwind-headers-when-LIBCXXABI_LIBU.patch | 60 +++ ...er-rt-support-a-new-embedded-linux-target.patch | 309 +++++++++++++ ...-Simplify-cross-compilation.-Don-t-use-na.patch | 44 ++ ...LibraryInfo-Undefine-libc-functions-if-th.patch | 90 ++++ ...allow-env-override-of-exe-and-libdir-path.patch | 71 +++ ...-clang-driver-Check-sysroot-for-ldso-path.patch | 75 ++++ ...iver-tools.cpp-Add-lssp_nonshared-on-musl.patch | 32 ++ .../0008-clang-Prepend-trailing-to-sysroot.patch | 39 ++ ...inside-the-target-sysroot-for-compiler-ru.patch | 41 ++ ...ang-Define-releative-gcc-installation-dir.patch | 47 ++ ...pthread-and-ldl-along-with-lunwind-for-st.patch | 35 ++ ..._EXECUTABLE-when-cross-compiling-for-nati.patch | 24 + .../0013-Check-for-atomic-double-intrinsics.patch | 34 ++ ...configure-for-packages-using-find_package.patch | 2 +- ...esource-dir-location-for-cross-toolchains.patch | 50 +++ ...r-Add-dyld-prefix-when-checking-sysroot-f.patch | 79 ++++ .../0017-clang-Use-python3-in-python-scripts.patch | 35 ++ ...4-set-Yocto-based-GCC-install-search-path.patch | 70 +++ ...-anchor-for-adding-OE-distro-vendor-names.patch | 32 ++ ...-Do-not-use-backtrace-APIs-on-non-glibc-l.patch | 68 +++ ...86-triple-for-non-debian-multiarch-linux-.patch | 28 ++ ...0022-libunwind-Added-unw_backtrace-method.patch | 56 +++ ...-Do-not-use-install-relative-libc-headers.patch | 34 ++ .../0024-Fix-lib-paths-for-OpenEmbedded-Host.patch | 79 ++++ ...library-search-path-for-OpenEmbedded-Host.patch | 84 ++++ .../0026-lldb-Link-with-libatomic-on-x86.patch | 33 ++ ...027-compiler-rt-Enable-__int128-for-ppc32.patch | 73 +++ ...-Do-not-use-cmake-infra-to-detect-libzstd.patch | 62 +++ ...ler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch | 46 ++ ...-Undef-_TIME_BITS-along-with-_FILE_OFFSET.patch | 43 ++ ...s-Gnu.cpp-ARMLibDirs-search-also-in-lib32.patch | 81 ++++ ...vm-Add-OE-specific-ABI-triple-for-N32-ABI.patch | 78 ++++ ...d-libunwind.pc.in-and-llvm-config-scripts.patch | 90 ++++ ...py-respect-LLVM_LIBDIR_SUFFIX-like-other-.patch | 92 ++++ ...r-rt-Do-not-pass-target-to-clang-compiler.patch | 29 ++ .../clang/clang/0036-Fix-build-on-ppc64-musl.patch | 97 ++++ ...d-a-build-option-to-disable-building-dexp.patch | 85 ++++ ...itter-sort-ClassInfo-lists-by-name-as-we.patch} | 4 +- ...-remove-LLVM_LDFLAGS-from-ldflags-output.patch} | 12 +- ...ot-emit-date-and-time-into-generate-files.patch | 37 ++ .../clang}/spirv-internal-build.patch | 0 .../clang}/spirv-shared-library.patch | 0 meta/recipes-devtools/clang/clang_git.bb | 498 +++++++++++++++++++++ meta/recipes-devtools/clang/common-clang.inc | 24 + meta/recipes-devtools/clang/common-source.inc | 17 + meta/recipes-devtools/clang/common.inc | 87 ++++ .../clang/compiler-rt-sanitizers_git.bb | 139 ++++++ meta/recipes-devtools/clang/compiler-rt_git.bb | 135 ++++++ meta/recipes-devtools/clang/libcxx_git.bb | 119 +++++ meta/recipes-devtools/clang/llvm-project-source.bb | 12 + .../recipes-devtools/clang/llvm-project-source.inc | 99 ++++ .../recipes-devtools/clang/nativesdk-clang-glue.bb | 36 ++ meta/recipes-devtools/clang/openmp_git.bb | 67 +++ .../0007-llvm-allow-env-override-of-exe-path.patch | 36 -- meta/recipes-devtools/llvm/llvm/llvm-config | 54 --- meta/recipes-devtools/llvm/llvm_20.1.2.bb | 233 ---------- 65 files changed, 3783 insertions(+), 337 deletions(-) --- base-commit: 576c4fd9e0b571c3ee37f67f25a51fe68466eac3 change-id: 20250423-clang-merge-ca9130ae95af Best regards,