* [PATCH v6 00/13] mesa: upgrade to 25.0.2
@ 2025-04-07 9:48 Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 01/13] runqemu: also set GBM_BACKENDS_PATH Dmitry Baryshkov
` (13 more replies)
0 siblings, 14 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj, Zoltán Böszörményi
libclc is required in order to build Intel drivers in Mesa 24.1 and
later. Thus OE-Core is currently locked to the 24.0.x branch, which is
no longer maintained, having last release in June 2024.
A clean solution is to package Clang, then use it to build libclc and
SPIRV-LLVM-Translator (required for Mesa OpenCL support). However
creating proper recipes for Clang is a long process (ongoing by Khem
Raj).
This patchset attempts to solve the issue in a simpler way: by building
libclc and SPIRV-LLVM-Translator together with the LLVM. This way we
don't have to create target Clang recipes, there is no extra toolchain
to support, etc. Clang binaries are creted as a part of the build
process (in order to support building target packages), however it only
hits the LLVM sysroot-native and is only used by the LLVM target build.
Future work by Khem (once Clang is properly supported in OE-Core) should
allow us to create proper recipes for libclc and spirv-llvm-translator
and drop them from the llvm / clang recipe.
I think this approach provides a good balance between OE-Core being
stuck with the outdated Mesa release and being able to upgrade it,
bringing support for new hardware.
Last two patches of the series bring in RustiCL support, a new OpenCL
implementation within Mesa. They are optional for the sake of the
upgrade and can be dropped if there is any issue with those. RustiCL
support is mostly compile-tested at this point.
NOTE: This depends on the https://github.com/kraj/meta-clang/pull/1075
for interoperability with meta-clang
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
Changes in v6:
- Applied workaround for __isoc23_strtol linking issues in LLVM
- Picked up LLVM_TARGETS from meta-clang/clang
- Added filtering of libclc / spirv-llvm-translator to RPROVIDES too to
remove conflicts with meta-clang
- Link to v5: https://lore.kernel.org/r/20250402-mesa-25-v5-0-ab35f021a83b@oss.qualcomm.com
Changes in v5:
- Extended runqemu script to also set GBM_BACKENDS_PATH
- Fixed LDFLAGS leak from native llvm-config --ldflags (which caused
mesa-clc issues)
- Disabled BLAKE3 SIMD optimizations on x32, fixing the crash
- Disabled swarst Vulkan driver and llvmpipe Gallium driver on x32,
fixing the crash
- Changed bindgen patch to pass -target to all bindgen invocations
- Link to v4: https://lore.kernel.org/r/20250331-mesa-25-v4-0-e62fc54a6efc@oss.qualcomm.com
Changes in v4:
- Fixed QA issues reported against lib32-mesa-megadriver (Richard)
- Removed release notes link from the mesa's commit message (Alexander)
- Added link to the rust.bindgen() issue to RustiCL-related
cross-compilation patch (Alexander)
- Renamed 'spirv' PACKAGECONFIG option to 'spirv-llvm-translator' in
order to be more precise
- Link to v3: https://lore.kernel.org/r/20250329-mesa-25-v3-0-f4d0328eb867@oss.qualcomm.com
Changes in v3:
- Dropped llvm/fix-native-compilation.patch and
llvm/0001-cmake-modules-CrossCompile-pass-SPIR-V-headers-path-.patch
in favour of installing prepare_builtins into the sysroot, dropped
corresponding EXTRA_OECMAKE params
- Dropepd -DCLANG_TABLEGEN from llvm's EXTRA_OECMAKE
- Enabled llvm-config wrapper for nativesdk too, fixing QA errors for
nativesdk-mesa
- Added --libdir handling to llvm-config, dropping the need for
mesa/0001-meson-use-target-path-for-Clang-libdir.patch
- Dropped extra LIBCEXTENSION from BINDGEN_TARGET, it is already a part
of TARGET_OS
- Expanded commit messages to explain the patches
- Link to v2: https://lore.kernel.org/r/20250327221807.2551544-1-dmitry.baryshkov@oss.qualcomm.com
Changes in v2:
- Dropped YOCTO_ALTERNATE_LIBDIR patch
- Reworked mesa / LLVM integration to always use get_option('libdir')
- Reenabled AMD Vulkan driver (got disabled because of c&p error)
- Moved mesa-clc options to the libclc PACKAGECONFIG to fix several
build errors
- Link to v1: https://lore.kernel.org/r/20250327135520.3920189-1-dmitry.baryshkov@oss.qualcomm.com/
---
Dmitry Baryshkov (12):
runqemu: also set GBM_BACKENDS_PATH
llvm: move libLLVM.so.N.M to llvm-libllvm package
llvm: use OECMAKE_SOURCEPATH to specify cmake dir
llvm: handle libdir in llvm-config
llvm: also use llvm-config wrapper for nativesdk recipes
llvm: remove LLVM_LDFLAGS from llvm-config --ldflags output
llvm: forcibly disable __isoc23_strtol usage
llvm: support building libclc
llvm: add SPIRV-LLVM-Translator support
llvm: enable more targets to build
mesa: upgrade 24.0.7 -> 25.0.2
bindgen-cli: a tool to generate Rust bindings
Zoltán Böszörményi (1):
mesa: add support for RustiCL under PACKAGECONFIG "opencl"
meta/conf/distro/include/maintainers.inc | 1 +
.../bindgen-cli/bindgen-cli-crates.inc | 186 +++++++++++++++++++++
.../bindgen-cli/bindgen-cli_0.71.1.bb | 19 +++
...g-remove-LLVM_LDFLAGS-from-ldflags-output.patch | 34 ++++
meta/recipes-devtools/llvm/llvm/isoc23.h | 11 ++
meta/recipes-devtools/llvm/llvm/llvm-config | 3 +
.../llvm/llvm/spirv-internal-build.patch | 30 ++++
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 100 ++++++++---
...evert-meson-do-not-pull-in-clc-for-clover.patch | 53 ------
...d-Include-missing-llvm-IR-header-Module.h.patch | 41 -----
.../files/0001-drisw-fix-build-without-dri3.patch | 58 -------
...eno-don-t-encode-build-path-into-binaries.patch | 46 ++++-
...able-SIMD-blake-optimisations-on-x32-host.patch | 28 ++++
...vide-cross-compilation-arguments-to-LLVM-.patch | 67 ++++++++
...ext-don-t-try-zink-if-not-enabled-in-mesa.patch | 42 -----
meta/recipes-graphics/mesa/mesa.inc | 110 +++++++-----
scripts/runqemu | 13 +-
17 files changed, 565 insertions(+), 277 deletions(-)
---
base-commit: ec524490bfa860a2caf7c3f77924c4dafeb631bf
change-id: 20250328-mesa-25-6b78a0ce2c90
Best regards,
--
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v6 01/13] runqemu: also set GBM_BACKENDS_PATH
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 02/13] llvm: move libLLVM.so.N.M to llvm-libllvm package Dmitry Baryshkov
` (12 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Newer Mesa dynamically loads GBM backends from the libdir. This is going
to cause issues with running native QEMU as the libdir
(mesa-native/recipes-sysroot-native) will not exist when it's executed.
Follow the LIBGL_DRIVERS_PATH approach and specify a path to GBM
backends via GBM_BACKENDS_PATH environment variable.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
scripts/runqemu | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/scripts/runqemu b/scripts/runqemu
index 86124a4a6a327e8c522944fd2ff9fe645c200722..3d7704697285ff9a5da45644eef4b7b3fce93dbf 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -468,9 +468,11 @@ class BaseConfig(object):
self.set("IMAGE_LINK_NAME", image_link_name)
logger.debug('Using IMAGE_LINK_NAME = "%s"' % image_link_name)
- def set_dri_path(self):
+ def set_mesa_paths(self):
drivers_path = os.path.join(self.bindir_native, '../lib/dri')
- if not os.path.exists(drivers_path) or not os.listdir(drivers_path):
+ gbm_path = os.path.join(self.bindir_native, '../lib/gbm')
+ if not os.path.exists(drivers_path) or not os.listdir(drivers_path) \
+ or not os.path.exists(gbm_path) or not os.listdir(gbm_path):
raise RunQemuError("""
qemu has been built without opengl support and accelerated graphics support is not available.
To enable it, add:
@@ -479,6 +481,7 @@ DISTRO_FEATURES_NATIVESDK:append = " opengl"
to your build configuration.
""")
self.qemu_environ['LIBGL_DRIVERS_PATH'] = drivers_path
+ self.qemu_environ['GBM_BACKENDS_PATH'] = gbm_path
def check_args(self):
for debug in ("-d", "--debug"):
@@ -1461,7 +1464,7 @@ to your build configuration.
self.qemu_opt += ' -display '
if self.egl_headless == True:
self.check_render_nodes()
- self.set_dri_path()
+ self.set_mesa_paths()
self.qemu_opt += 'egl-headless,'
else:
if self.sdl == True:
@@ -1471,10 +1474,10 @@ to your build configuration.
self.qemu_opt += 'gtk,'
if self.gl == True:
- self.set_dri_path()
+ self.set_mesa_paths()
self.qemu_opt += 'gl=on,'
elif self.gl_es == True:
- self.set_dri_path()
+ self.set_mesa_paths()
self.qemu_opt += 'gl=es,'
self.qemu_opt += 'show-cursor=on'
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 02/13] llvm: move libLLVM.so.N.M to llvm-libllvm package
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 01/13] runqemu: also set GBM_BACKENDS_PATH Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 03/13] llvm: use OECMAKE_SOURCEPATH to specify cmake dir Dmitry Baryshkov
` (11 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Neither MAJOR_VER nor MINOR_VER are defined, so libLLVM.so.N.M ends up
in the main libllvm package rather than the llvm-libllvm package, as
expected. Fix this by properly using two-component version.
Fixes: db3bf550a372 ("llvm: Update to 18.1.0 RC4")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index 5c6c5a2ffd19fbd8ee5e139179c23c447253919e..194660fdad1f8837eedce3293d56e7251e5030b7 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -19,6 +19,7 @@ VER_SUFFIX = ""
PV .= "${VER_SUFFIX}"
MAJOR_VERSION = "${@oe.utils.trim_version("${PV}", 1)}"
+MAJ_MIN_VERSION = "${@oe.utils.trim_version("${PV}", 2)}"
LLVM_RELEASE = "${PV}"
@@ -152,7 +153,7 @@ FILES:${PN}-bugpointpasses = "\
FILES:${PN}-libllvm = "\
${libdir}/libLLVM-${MAJOR_VERSION}.so \
- ${libdir}/libLLVM.so.${MAJOR_VER}.${MINOR_VER} \
+ ${libdir}/libLLVM.so.${MAJ_MIN_VERSION} \
"
FILES:${PN}-liblto += "\
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 03/13] llvm: use OECMAKE_SOURCEPATH to specify cmake dir
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 01/13] runqemu: also set GBM_BACKENDS_PATH Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 02/13] llvm: move libLLVM.so.N.M to llvm-libllvm package Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 04/13] llvm: handle libdir in llvm-config Dmitry Baryshkov
` (10 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Instead of pushing an `llvm` sourcedir into S, specify it through the
OECMAKE_SOURCEPATH so that all the patches are applied to the topdir and
debug paths also use top path to map.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index 194660fdad1f8837eedce3293d56e7251e5030b7..8719faebe38b96d161b557a469c92490fe44f370 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -24,15 +24,17 @@ MAJ_MIN_VERSION = "${@oe.utils.trim_version("${PV}", 2)}"
LLVM_RELEASE = "${PV}"
SRC_URI = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/llvm-project-${PV}.src.tar.xz \
- file://0007-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
- file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
+ file://0007-llvm-allow-env-override-of-exe-path.patch \
+ file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch \
file://llvm-config \
"
SRC_URI[sha256sum] = "4d5ebbd40ce1e984a650818a4bb5ae86fc70644dec2e6d54e78b4176db3332e0"
UPSTREAM_CHECK_URI = "https://github.com/llvm/llvm-project"
UPSTREAM_CHECK_REGEX = "llvmorg-(?P<pver>\d+(\.\d+)+)"
-S = "${WORKDIR}/llvm-project-${PV}.src/llvm"
+S = "${WORKDIR}/llvm-project-${PV}.src"
+
+OECMAKE_SOURCEPATH = "${S}/llvm"
LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 04/13] llvm: handle libdir in llvm-config
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (2 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 03/13] llvm: use OECMAKE_SOURCEPATH to specify cmake dir Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 05/13] llvm: also use llvm-config wrapper for nativesdk recipes Dmitry Baryshkov
` (9 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
The llvm-config wrapper also needs to override a --libdir switch,
otherwise software (like mesa) end up using TMPDIR-based directory for
Clang resource lookup (and also encoding TMPDIR into the target binary).
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm/llvm-config | 3 +++
1 file changed, 3 insertions(+)
diff --git a/meta/recipes-devtools/llvm/llvm/llvm-config b/meta/recipes-devtools/llvm/llvm/llvm-config
index 5e4ded2da5bc95d429c6f717a2f25223bbbe210e..6cf3e7578fa96f2893f73077bece4db45f29547c 100644
--- a/meta/recipes-devtools/llvm/llvm/llvm-config
+++ b/meta/recipes-devtools/llvm/llvm/llvm-config
@@ -35,6 +35,9 @@ for arg in "$@"; do
--libs)
output="${output} -lLLVM"
;;
+ --libdir)
+ output="${output} ${libdir}"
+ ;;
--link-shared)
break
;;
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 05/13] llvm: also use llvm-config wrapper for nativesdk recipes
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (3 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 04/13] llvm: handle libdir in llvm-config Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 06/13] llvm: remove LLVM_LDFLAGS from llvm-config --ldflags output Dmitry Baryshkov
` (8 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
The recipes targeting the SDK (e.g. nativesdk-mesa) should also use the
llvm-config wrapper, otherwise they get get a lot of incorrect flags,
the most offensive being the rpath, as it results in TMPDIR being a part
of the resulting binary.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 1 +
1 file changed, 1 insertion(+)
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index 8719faebe38b96d161b557a469c92490fe44f370..1ea94327161a8002453ac1aa79d7661d4da72499 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -138,6 +138,7 @@ do_install:append:class-native() {
}
SYSROOT_PREPROCESS_FUNCS:append:class-target = " llvm_sysroot_preprocess"
+SYSROOT_PREPROCESS_FUNCS:append:class-nativesdk = " llvm_sysroot_preprocess"
llvm_sysroot_preprocess() {
install -d ${SYSROOT_DESTDIR}${bindir_crossscripts}/
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 06/13] llvm: remove LLVM_LDFLAGS from llvm-config --ldflags output
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (4 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 05/13] llvm: also use llvm-config wrapper for nativesdk recipes Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage Dmitry Baryshkov
` (7 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
On native OE builds the LLVM_LDFLAGS gets a lot of extra flags which may
depend on exact build dir and as such be inappropriate to binaries
shared through sstate-cache. It is not possible to override this
behaviour in llvm-config since crossscripts are not being used for
native builds. Ignore LLVM_LDFLAGS for native builds.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
...g-remove-LLVM_LDFLAGS-from-ldflags-output.patch | 34 ++++++++++++++++++++++
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 2 ++
2 files changed, 36 insertions(+)
diff --git a/meta/recipes-devtools/llvm/llvm/0001-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch b/meta/recipes-devtools/llvm/llvm/0001-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch
new file mode 100644
index 0000000000000000000000000000000000000000..2320399d5f7de44cf9cc4269d180c097c1b4a616
--- /dev/null
+++ b/meta/recipes-devtools/llvm/llvm/0001-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch
@@ -0,0 +1,34 @@
+From caff2482f786dd7fd5f1f46f2667f7ed847cb8f8 Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Date: Wed, 2 Apr 2025 17:05:17 +0300
+Subject: [PATCH] llvm-config: remove LLVM_LDFLAGS from --ldflags output
+
+On native OE builds the LLVM_LDFLAGS gets a lot of extra flags which may
+depend on exact build dir and as such be inappropriate to binaries
+shared through sstate-cache. It is not possible to override this
+behaviour in llvm-config since crossscripts are not being used for
+native builds. As a OE-specific modification ignore LLVM_LDFLAGS for
+native builds.
+
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Upstream-Status: Inappropriate [OE-Specific]
+---
+ llvm/tools/llvm-config/llvm-config.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
+index d5b76b1bb6c1..29f7c2eaa419 100644
+--- a/llvm/tools/llvm-config/llvm-config.cpp
++++ b/llvm/tools/llvm-config/llvm-config.cpp
+@@ -529,7 +529,7 @@ int main(int argc, char **argv) {
+ OS << ActiveIncludeOption << ' ' << LLVM_CXXFLAGS << '\n';
+ } else if (Arg == "--ldflags") {
+ OS << ((HostTriple.isWindowsMSVCEnvironment()) ? "-LIBPATH:" : "-L")
+- << ActiveLibDir << ' ' << LLVM_LDFLAGS << '\n';
++ << ActiveLibDir << '\n';
+ } else if (Arg == "--system-libs") {
+ PrintSystemLibs = true;
+ } else if (Arg == "--libs") {
+--
+2.39.5
+
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index 1ea94327161a8002453ac1aa79d7661d4da72499..b95473c88b64961cb6ae2f4ace14aac4600cf98e 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -32,6 +32,8 @@ SRC_URI[sha256sum] = "4d5ebbd40ce1e984a650818a4bb5ae86fc70644dec2e6d54e78b4176db
UPSTREAM_CHECK_URI = "https://github.com/llvm/llvm-project"
UPSTREAM_CHECK_REGEX = "llvmorg-(?P<pver>\d+(\.\d+)+)"
+SRC_URI:append:class-native = " file://0001-llvm-config-remove-LLVM_LDFLAGS-from-ldflags-output.patch"
+
S = "${WORKDIR}/llvm-project-${PV}.src"
OECMAKE_SOURCEPATH = "${S}/llvm"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (5 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 06/13] llvm: remove LLVM_LDFLAGS from llvm-config --ldflags output Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 11:22 ` [OE-core] " Alexander Kanavin
2025-04-07 9:48 ` [PATCH v6 08/13] llvm: support building libclc Dmitry Baryshkov
` (6 subsequent siblings)
13 siblings, 1 reply; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
In the multiconfig builds the llvm-native build can get reused from the
sstate cache with uninative being bypassed. This can result in the
undefined __isoc23_strtol symbols (which are supported by the uninative,
but not by the host library).
In order to prevent such link issues, forcibly disable usage of C23
strtol functions inside the native LLVM build.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm/isoc23.h | 11 +++++++++++
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 4 ++++
2 files changed, 15 insertions(+)
diff --git a/meta/recipes-devtools/llvm/llvm/isoc23.h b/meta/recipes-devtools/llvm/llvm/isoc23.h
new file mode 100644
index 0000000000000000000000000000000000000000..b6738b6aaeb4e140aebad37ba0efb48a29cfac9b
--- /dev/null
+++ b/meta/recipes-devtools/llvm/llvm/isoc23.h
@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2024 Qualcomm Technologies, Inc.
+ * SPDX-License-Identifier: Apache-2.0-with-LLVM-exception
+ */
+#include <features.h>
+
+#undef __GLIBC_USE_C23_STRTOL
+#define __GLIBC_USE_C23_STRTOL 0
+
+#undef __GLIBC_USE_C2X_STRTOL
+#define __GLIBC_USE_C2X_STRTOL 0
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index b95473c88b64961cb6ae2f4ace14aac4600cf98e..69f19aee59388f92c254c1f049622845713f4e94 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -27,6 +27,7 @@ SRC_URI = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/
file://0007-llvm-allow-env-override-of-exe-path.patch \
file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch \
file://llvm-config \
+ file://isoc23.h \
"
SRC_URI[sha256sum] = "4d5ebbd40ce1e984a650818a4bb5ae86fc70644dec2e6d54e78b4176db3332e0"
UPSTREAM_CHECK_URI = "https://github.com/llvm/llvm-project"
@@ -71,6 +72,9 @@ LLVM_TARGETS ?= "AMDGPU;${@get_llvm_host_arch(bb, d)}"
ARM_INSTRUCTION_SET:armv5 = "arm"
ARM_INSTRUCTION_SET:armv4t = "arm"
+
+BUILD_CPPFLAGS += "-include ${UNPACKDIR}/isoc23.h"
+
EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_EXPENSIVE_CHECKS=OFF \
-DLLVM_ENABLE_PIC=ON \
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 08/13] llvm: support building libclc
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (6 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 09/13] llvm: add SPIRV-LLVM-Translator support Dmitry Baryshkov
` (5 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Current Mesa requires libclc in order to build Intel Gallium (iris) or
Vulkan drivers. In order to unblock Mesa updates, build libclc as a part
of the LLVM build process.
The libclc requires Clang for building, so enable Clang too via
LLVM_PROJECTS. Remove clang from the DESTDIR, so that it is only used
during the build process. Proper handling of Clang as a toolchain is a
separate and much more complicated topic. Clang is enabled for all kinds
of builds as it is a requirement for libclc to build.
Cleaning of ${datadir} has been moved to happen at the end of do_install
to be performed after do clang removal and made not to fail if
${datadir} is not empty, as libclc install files into that location.
NVPTX and SPIRV targets are enabled since they are required for the
libclc to link.
LLVM_NATIVE_TOOL_DIR is used to pass a path to the native tools built
via llvm-native instead of building them during the target and/or
nativesdk build.
The llvm-clc package is set to RPROVIDE libclc (and the recipe also
PROVIDEs libclc) in order to be compatible with the meta-clang packages
(and to be future-compatible with the split package after proper Clang
support is introduced to OE-Core).
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 39 +++++++++++++++++++++++++++----
1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index 69f19aee59388f92c254c1f049622845713f4e94..d33284c90180de60d5087b466304a94bd8ae6039 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -59,19 +59,21 @@ def get_llvm_arch(bb, d, arch_var):
def get_llvm_host_arch(bb, d):
return get_llvm_arch(bb, d, 'HOST_ARCH')
-PACKAGECONFIG ??= "libllvm"
+PACKAGECONFIG ??= "libllvm libclc"
# if optviewer OFF, force the modules to be not found or the ones on the host would be found
PACKAGECONFIG[optviewer] = ",-DPY_PYGMENTS_FOUND=OFF -DPY_PYGMENTS_LEXERS_C_CPP_FOUND=OFF -DPY_YAML_FOUND=OFF,python3-pygments python3-pyyaml,python3-pygments python3-pyyaml"
PACKAGECONFIG[libllvm] = ""
+PACKAGECONFIG[libclc] = ""
#
# Default to build all OE-Core supported target arches (user overridable).
#
-LLVM_TARGETS ?= "AMDGPU;${@get_llvm_host_arch(bb, d)}"
+LLVM_TARGETS ?= "AMDGPU;NVPTX;SPIRV;${@get_llvm_host_arch(bb, d)}"
ARM_INSTRUCTION_SET:armv5 = "arm"
ARM_INSTRUCTION_SET:armv4t = "arm"
+LLVM_PROJECTS = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', 'clang;libclc', '', d)}"
BUILD_CPPFLAGS += "-include ${UNPACKDIR}/isoc23.h"
@@ -88,6 +90,7 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_VERSION_SUFFIX='${VER_SUFFIX}' \
-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \
-DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_ENABLE_PROJECTS='${LLVM_PROJECTS}' \
"
EXTRA_OECMAKE:append:class-target = "\
@@ -95,6 +98,7 @@ EXTRA_OECMAKE:append:class-target = "\
-DLLVM_HOST_TRIPLE=${TARGET_SYS} \
-DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \
-DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
+ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
"
EXTRA_OECMAKE:append:class-nativesdk = "\
@@ -102,6 +106,7 @@ EXTRA_OECMAKE:append:class-nativesdk = "\
-DLLVM_HOST_TRIPLE=${SDK_SYS} \
-DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen${PV} \
-DLLVM_CONFIG_PATH=${STAGING_BINDIR_NATIVE}/llvm-config${PV} \
+ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \
"
# patch out build host paths for reproducibility
@@ -130,17 +135,39 @@ do_install() {
# Remove opt-viewer: https://llvm.org/docs/Remarks.html
rm -rf ${D}${datadir}/opt-viewer
- rmdir ${D}${datadir}
# reproducibility
sed -i -e 's,${WORKDIR},,g' ${D}/${libdir}/cmake/llvm/LLVMConfig.cmake
fi
+
+ # Remove clang bits from target packages, we are not providing it for the system
+ if ${@bb.utils.contains('PACKAGECONFIG', 'libclc', 'true', 'false', d)} &&
+ [ "${CLASSOVERRIDE}" != "class-native" ] ; then
+ rm -f ${D}${bindir}/clang*
+ rm -fr ${D}${libdir}/clang
+ rm -fr ${D}${datadir}/clang
+
+ rm -f ${D}${bindir}/scan*
+ rm -fr ${D}${libdir}/libscanbuild
+ rm -fr ${D}${datadir}/scan-build
+ rm -fr ${D}${datadir}/scan-view
+
+ rm -fr ${D}${libdir}/libear
+ fi
+
+ # Try to clean up datadir if it is empty, but don't fail if there are
+ # libclc files there
+ rmdir ${D}${datadir} || true
}
do_install:append:class-native() {
install -D -m 0755 ${B}/bin/llvm-tblgen ${D}${bindir}/llvm-tblgen${PV}
install -D -m 0755 ${B}/bin/llvm-config ${D}${bindir}/llvm-config${PV}
ln -sf llvm-config${PV} ${D}${bindir}/llvm-config
+
+ if ${@bb.utils.contains('PACKAGECONFIG', 'libclc', 'true', 'false', d)} ; then
+ install -D -m 0755 ${B}/bin/prepare_builtins ${D}${bindir}/prepare_builtins
+ fi
}
SYSROOT_PREPROCESS_FUNCS:append:class-target = " llvm_sysroot_preprocess"
@@ -152,9 +179,11 @@ llvm_sysroot_preprocess() {
ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
}
-PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm ${PN}-liboptremarks ${PN}-liblto"
+PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm ${PN}-liboptremarks ${PN}-liblto ${PN}-clc"
+PROVIDES = "${@bb.utils.filter('PACKAGECONFIG', 'libclc', d)}"
RRECOMMENDS:${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liboptremarks"
+RPROVIDES:${PN}-clc = "${@bb.utils.filter('PACKAGECONFIG', 'libclc', d)}"
FILES:${PN}-bugpointpasses = "\
${libdir}/BugpointPasses.so \
@@ -187,6 +216,8 @@ FILES:${PN}-staticdev += "\
${libdir}/*.a \
"
+FILES:${PN}-clc += "${datadir}/clc"
+
INSANE_SKIP:${PN}-libllvm += "dev-so"
BBCLASSEXTEND = "native nativesdk"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 09/13] llvm: add SPIRV-LLVM-Translator support
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (7 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 08/13] llvm: support building libclc Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 10/13] llvm: enable more targets to build Dmitry Baryshkov
` (4 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Mesa builds require SPIRV-LLVM-Translator in order to build CLC support.
While it is possible to build it separately (like meta-clang does), it
also requires a separate clang compiler (which OE-Core doesn't provide).
Use an alternative path and build SPIRV-LLVM-Translator as a part of the
LLVM build process, lifting the requirement for the separate clang. Once
Clang is properly integrated into the OE-Core layer, this can be split
to a separate package and dropped. In order to ease migration from
meta-clang and to ease future split, PROVIDE the spirv-llvm-translator
and make the llvm-spirv package RPROVIDE spirv-llvm-translator.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
.../llvm/llvm/spirv-internal-build.patch | 30 +++++++++++++++++++
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 35 ++++++++++++++++++----
2 files changed, 60 insertions(+), 5 deletions(-)
diff --git a/meta/recipes-devtools/llvm/llvm/spirv-internal-build.patch b/meta/recipes-devtools/llvm/llvm/spirv-internal-build.patch
new file mode 100644
index 0000000000000000000000000000000000000000..555d40f4fb07342cc204c7c578662688605b2cb1
--- /dev/null
+++ b/meta/recipes-devtools/llvm/llvm/spirv-internal-build.patch
@@ -0,0 +1,30 @@
+From e94e529aefb28b65165e978daa2bfd89867ee8d0 Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Date: Fri, 21 Mar 2025 17:17:52 +0200
+Subject: [PATCH] SPIRV-LLVM-Translator: fix handling of built-in SPIRV targer
+
+If the SPIRV-LLVM-Translator is being built together with the LLVM, set
+the defines declaring whether SPIRV target is also included into the
+LLVM library or not. Otherwise llvm-spirv execution fails because
+spirv-ext option is registered twice.
+
+Upstream-Status: Pending [will be submitted upstream after internal clearance]
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+
+Index: llvm-project-20.1.0.src/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
+===================================================================
+--- llvm-project-20.1.0.src.orig/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
++++ llvm-project-20.1.0.src/llvm/projects/SPIRV-LLVM-Translator/CMakeLists.txt
+@@ -116,6 +116,12 @@ if(LLVM_SPIRV_BUILD_EXTERNAL)
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
+ endif()
++else()
++ is_llvm_target_library("SPIRV" spirv_present_result INCLUDED_TARGETS)
++ if(spirv_present_result)
++ set(SPIRV_BACKEND_FOUND TRUE)
++ add_compile_definitions(LLVM_SPIRV_BACKEND_TARGET_PRESENT)
++ endif()
+ endif()
+
+ set(LLVM_SPIRV_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index d33284c90180de60d5087b466304a94bd8ae6039..027de04bdd6d340792d1a9ca303dcd508a6d87c4 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -23,9 +23,19 @@ MAJ_MIN_VERSION = "${@oe.utils.trim_version("${PV}", 2)}"
LLVM_RELEASE = "${PV}"
+SRCREV_spirv = "68edc9d3d10ff6ec6353803a1bc60a5c25e7b715"
+# pattern: llvm_branch_200, currently there are no minor releases, so, no llvm_branch_201
+SPIRV_BRANCH = "llvm_release_${@oe.utils.trim_version('${PV}', 1).replace('.', '')}0"
+
+SRC_URI_SPIRV = " \
+ git://github.com/KhronosGroup/SPIRV-LLVM-Translator;protocol=https;name=spirv;branch=${SPIRV_BRANCH};destsuffix=llvm-project-${PV}.src/llvm/projects/SPIRV-LLVM-Translator \
+ file://spirv-internal-build.patch \
+"
+
SRC_URI = "https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/llvm-project-${PV}.src.tar.xz \
file://0007-llvm-allow-env-override-of-exe-path.patch \
file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch \
+ ${@bb.utils.contains('PACKAGECONFIG', 'spirv-llvm-translator', '${SRC_URI_SPIRV}', '', d)} \
file://llvm-config \
file://isoc23.h \
"
@@ -59,11 +69,12 @@ def get_llvm_arch(bb, d, arch_var):
def get_llvm_host_arch(bb, d):
return get_llvm_arch(bb, d, 'HOST_ARCH')
-PACKAGECONFIG ??= "libllvm libclc"
+PACKAGECONFIG ??= "libllvm libclc spirv-llvm-translator"
# if optviewer OFF, force the modules to be not found or the ones on the host would be found
PACKAGECONFIG[optviewer] = ",-DPY_PYGMENTS_FOUND=OFF -DPY_PYGMENTS_LEXERS_C_CPP_FOUND=OFF -DPY_YAML_FOUND=OFF,python3-pygments python3-pyyaml,python3-pygments python3-pyyaml"
PACKAGECONFIG[libllvm] = ""
PACKAGECONFIG[libclc] = ""
+PACKAGECONFIG[spirv-llvm-translator] = "-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${STAGING_INCDIR}/.. ,,spirv-tools-native spirv-headers"
#
# Default to build all OE-Core supported target arches (user overridable).
@@ -73,7 +84,9 @@ LLVM_TARGETS ?= "AMDGPU;NVPTX;SPIRV;${@get_llvm_host_arch(bb, d)}"
ARM_INSTRUCTION_SET:armv5 = "arm"
ARM_INSTRUCTION_SET:armv4t = "arm"
-LLVM_PROJECTS = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', 'clang;libclc', '', d)}"
+LLVM_PROJECTS_CLANG = "${@bb.utils.contains_any('PACKAGECONFIG', 'libclc spirv-llvm-translator', 'clang', '', d)}"
+LLVM_PROJECTS_CLC = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', ';libclc', '', d)}"
+LLVM_PROJECTS = "${LLVM_PROJECTS_CLANG}${LLVM_PROJECTS_CLC}"
BUILD_CPPFLAGS += "-include ${UNPACKDIR}/isoc23.h"
@@ -141,7 +154,7 @@ do_install() {
fi
# Remove clang bits from target packages, we are not providing it for the system
- if ${@bb.utils.contains('PACKAGECONFIG', 'libclc', 'true', 'false', d)} &&
+ if ${@bb.utils.contains_any('PACKAGECONFIG', 'libclc spirv-llvm-translator', 'true', 'false', d)} &&
[ "${CLASSOVERRIDE}" != "class-native" ] ; then
rm -f ${D}${bindir}/clang*
rm -fr ${D}${libdir}/clang
@@ -179,11 +192,12 @@ llvm_sysroot_preprocess() {
ln -sf llvm-config ${SYSROOT_DESTDIR}${bindir_crossscripts}/llvm-config${PV}
}
-PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm ${PN}-liboptremarks ${PN}-liblto ${PN}-clc"
-PROVIDES = "${@bb.utils.filter('PACKAGECONFIG', 'libclc', d)}"
+PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-libllvm ${PN}-liboptremarks ${PN}-liblto ${PN}-clc ${PN}-spirv"
+PROVIDES = "${@bb.utils.filter('PACKAGECONFIG', 'libclc spirv-llvm-translator', d)}"
RRECOMMENDS:${PN}-dev += "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liboptremarks"
RPROVIDES:${PN}-clc = "${@bb.utils.filter('PACKAGECONFIG', 'libclc', d)}"
+RPROVIDES:${PN}-spirv = "${@bb.utils.filter('PACKAGECONFIG', 'spirv-llvm-translator', d)}"
FILES:${PN}-bugpointpasses = "\
${libdir}/BugpointPasses.so \
@@ -218,6 +232,17 @@ FILES:${PN}-staticdev += "\
FILES:${PN}-clc += "${datadir}/clc"
+FILES:${PN}-spirv = " \
+ ${bindir}/llvm-spirv \
+ ${includedir}/LLVMSPIRVLib \
+ ${libdir}/pkgconfig/LLVMSPIRVLib.pc \
+ ${libdir}/libLLVMSPIRV* \
+"
+
INSANE_SKIP:${PN}-libllvm += "dev-so"
+# SPIRV-LLVM-Translator provides only static libraries, they are included into
+# the llvm-spirv package.
+INSANE_SKIP:${PN}-spirv += "staticdev"
+
BBCLASSEXTEND = "native nativesdk"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 10/13] llvm: enable more targets to build
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (8 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 09/13] llvm: add SPIRV-LLVM-Translator support Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 11/13] mesa: upgrade 24.0.7 -> 25.0.2 Dmitry Baryshkov
` (3 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Pull in the list of targets being enabled by meta-clang in order to
make the libllvm from OE-Core runtime compatible with the one built by
the clang recipe inside meta-clang.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/recipes-devtools/llvm/llvm_20.1.1.bb | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)
diff --git a/meta/recipes-devtools/llvm/llvm_20.1.1.bb b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
index 027de04bdd6d340792d1a9ca303dcd508a6d87c4..1c6e9bc48fb832fe67c14ca6d8f93410cb268c00 100644
--- a/meta/recipes-devtools/llvm/llvm_20.1.1.bb
+++ b/meta/recipes-devtools/llvm/llvm_20.1.1.bb
@@ -51,24 +51,6 @@ OECMAKE_SOURCEPATH = "${S}/llvm"
LLVM_INSTALL_DIR = "${WORKDIR}/llvm-install"
-def get_llvm_arch(bb, d, arch_var):
- import re
- a = d.getVar(arch_var)
- if re.match(r'(i.86|athlon|x86.64)$', a): return 'X86'
- elif re.match(r'arm$', a): return 'ARM'
- elif re.match(r'armeb$', a): return 'ARM'
- elif re.match(r'aarch64$', a): return 'AArch64'
- elif re.match(r'aarch64_be$', a): return 'AArch64'
- elif re.match(r'loongarch(32|64|)$', a): return 'LoongArch'
- elif re.match(r'mips(isa|)(32|64|)(r6|)(el|)$', a): return 'Mips'
- elif re.match(r'riscv(32|64)(eb|)$', a): return 'RISCV'
- elif re.match(r'p(pc|owerpc)(|64)', a): return 'PowerPC'
- else:
- raise bb.parse.SkipRecipe("Cannot map '%s' to a supported LLVM architecture" % a)
-
-def get_llvm_host_arch(bb, d):
- return get_llvm_arch(bb, d, 'HOST_ARCH')
-
PACKAGECONFIG ??= "libllvm libclc spirv-llvm-translator"
# if optviewer OFF, force the modules to be not found or the ones on the host would be found
PACKAGECONFIG[optviewer] = ",-DPY_PYGMENTS_FOUND=OFF -DPY_PYGMENTS_LEXERS_C_CPP_FOUND=OFF -DPY_YAML_FOUND=OFF,python3-pygments python3-pyyaml,python3-pygments python3-pyyaml"
@@ -79,7 +61,7 @@ PACKAGECONFIG[spirv-llvm-translator] = "-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR
#
# Default to build all OE-Core supported target arches (user overridable).
#
-LLVM_TARGETS ?= "AMDGPU;NVPTX;SPIRV;${@get_llvm_host_arch(bb, d)}"
+LLVM_TARGETS ?= "AMDGPU;AArch64;ARM;BPF;Mips;PowerPC;RISCV;X86;LoongArch;NVPTX;SPIRV"
ARM_INSTRUCTION_SET:armv5 = "arm"
ARM_INSTRUCTION_SET:armv4t = "arm"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 11/13] mesa: upgrade 24.0.7 -> 25.0.2
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (9 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 10/13] llvm: enable more targets to build Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 12/13] bindgen-cli: a tool to generate Rust bindings Dmitry Baryshkov
` (2 subsequent siblings)
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Upgrade the Mesa package, dropping applied and refreshing outstanding
patches. The dri3 config option is now gone, dependencies are merged
into X11 deps. The swrast gallium driver has been split into softpipe
and llvmpipe drivers. Reworked OpenCL support to use mesa_clc compiler.
License-Update: license text cleared and clarified.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
...evert-meson-do-not-pull-in-clc-for-clover.patch | 53 -------------
| 41 ----------
.../files/0001-drisw-fix-build-without-dri3.patch | 58 --------------
...eno-don-t-encode-build-path-into-binaries.patch | 46 +++++++++--
...able-SIMD-blake-optimisations-on-x32-host.patch | 28 +++++++
...ext-don-t-try-zink-if-not-enabled-in-mesa.patch | 42 ----------
meta/recipes-graphics/mesa/mesa.inc | 91 ++++++++++++----------
7 files changed, 117 insertions(+), 242 deletions(-)
diff --git a/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch b/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch
deleted file mode 100644
index 1711e22585a72d1909473e4d9716c4734d4c5eee..0000000000000000000000000000000000000000
--- a/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 051f41beda540f0ae77b341db01a6de83c9e938a Mon Sep 17 00:00:00 2001
-From: Markus Volk <f_l_k@t-online.de>
-Date: Fri, 8 Mar 2024 15:53:11 +0100
-Subject: [PATCH] Revert "meson: do not pull in clc for clover"
-
-This reverts commit 815a6647eb1383e9dc704ffcc266d85f3b13338a.
-Upstream-Status: Inappropriate [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27783/diffs?commit_id=a976f2c9f0c07f9e06cc9affd9124b45bc60c2bd]
-
-Once the merge request above was added, it will only be possible to provide opencl spir-v with gallium-rusticl=true. This is not yet supported in the mesa recipe.
-For now reverting this commit allows to still use clover with opencl-spirv, which would otherwise be broken starting from mesa 24.0.2.
-
-After it was merged, this patch needs to be removed and rusticl support will be required
-
-Signed-off-by: Markus Volk <f_l_k@t-online.de>
----
- meson.build | 3 ++-
- src/compiler/meson.build | 2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 2db6185..741b5d1 100644
---- a/meson.build
-+++ b/meson.build
-@@ -813,6 +813,7 @@ if _opencl != 'disabled'
- error('The Clover OpenCL state tracker requires rtti')
- endif
-
-+ with_clc = true
- with_gallium_opencl = true
- with_opencl_icd = _opencl == 'icd'
- else
-@@ -837,7 +838,7 @@ if with_gallium_rusticl
- endif
-
- dep_clc = null_dep
--if with_gallium_opencl or with_clc
-+if with_clc
- dep_clc = dependency('libclc')
- endif
-
-diff --git a/src/compiler/meson.build b/src/compiler/meson.build
-index 8d73544..1dae56d 100644
---- a/src/compiler/meson.build
-+++ b/src/compiler/meson.build
-@@ -79,7 +79,7 @@ subdir('nir')
-
- subdir('spirv')
-
--if with_clc
-+if with_opencl_spirv
- subdir('clc')
- endif
- if with_gallium
diff --git a/meta/recipes-graphics/mesa/files/0001-amd-Include-missing-llvm-IR-header-Module.h.patch b/meta/recipes-graphics/mesa/files/0001-amd-Include-missing-llvm-IR-header-Module.h.patch
deleted file mode 100644
index 82ad88a079c144153778120bf2a3c1d1c36a0c94..0000000000000000000000000000000000000000
--- a/meta/recipes-graphics/mesa/files/0001-amd-Include-missing-llvm-IR-header-Module.h.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 777d69cf15b80ab1f109a4936d6e4801c4b0e0f3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 1 Jul 2024 23:09:29 -0700
-Subject: [PATCH] amd: Include missing llvm IR header Module.h
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-With LLVM-19, Module.h header is not being pulled, which results in
-compile errors e.g.
-
-src/amd/llvm/ac_llvm_helper.cpp:102:10: error: no matching function for call to ‘unwrap(LLVMOpaqueModule*&)’
- 102 | unwrap(module)->setTargetTriple(TM->getTargetTriple().getTriple());
- | ~~~~~~^~~~~~~~
-In file included from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/IR/Type.h:18,
- from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/IR/DerivedTypes.h:23,
- from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/IR/InstrTypes.h:26,
- from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/Analysis/TargetLibraryInfo.h:14,
- from ../mesa-24.0.7/src/amd/llvm/ac_llvm_helper.cpp:8:
-
-Its getting the definition from llvm/IR/Type.h instead of Module.h and caused
-confusion to compiler
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29993]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/amd/llvm/ac_llvm_helper.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/amd/llvm/ac_llvm_helper.cpp b/src/amd/llvm/ac_llvm_helper.cpp
-index 5d065279ad1..af4a50f8409 100644
---- a/src/amd/llvm/ac_llvm_helper.cpp
-+++ b/src/amd/llvm/ac_llvm_helper.cpp
-@@ -8,6 +8,7 @@
- #include <llvm/Analysis/TargetLibraryInfo.h>
- #include <llvm/IR/IRBuilder.h>
- #include <llvm/IR/LegacyPassManager.h>
-+#include <llvm/IR/Module.h>
- #include <llvm/IR/Verifier.h>
- #include <llvm/Target/TargetMachine.h>
- #include <llvm/MC/MCSubtargetInfo.h>
diff --git a/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch b/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch
deleted file mode 100644
index ab1615209063fb0b7bee74f3b49843790801e40a..0000000000000000000000000000000000000000
--- a/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 4bd15a419e892da843489c374c58c5b29c40b5d6 Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@smile.fr>
-Date: Tue, 6 Feb 2024 09:47:09 +0100
-Subject: [PATCH 1/2] drisw: fix build without dri3
-
-commit 1887368df41 ("glx/sw: check for modifier support in the kopper path")
-added dri3_priv.h header and dri3_check_multibuffer() function in drisw that
-can be build without dri3.
-
- i686-buildroot-linux-gnu/bin/ld: src/glx/libglx.a.p/drisw_glx.c.o: in function `driswCreateScreenDriver':
- drisw_glx.c:(.text.driswCreateScreenDriver+0x3a0): undefined reference to `dri3_check_multibuffer'
- collect2: error: ld returned 1 exit status
-
-Add HAVE_DRI3 guard around dri3_priv.h header and the zink code using
-dri3_check_multibuffer().
-
-Fixes: 1887368df41 ("glx/sw: check for modifier support in the kopper path")
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27478]
-Signed-off-by: Romain Naour <romain.naour@smile.fr>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/glx/drisw_glx.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
-index 3d3f752..4b19e2d 100644
---- a/src/glx/drisw_glx.c
-+++ b/src/glx/drisw_glx.c
-@@ -32,7 +32,9 @@
- #include <dlfcn.h>
- #include "dri_common.h"
- #include "drisw_priv.h"
-+#ifdef HAVE_DRI3
- #include "dri3_priv.h"
-+#endif
- #include <X11/extensions/shmproto.h>
- #include <assert.h>
- #include <vulkan/vulkan_core.h>
-@@ -995,6 +997,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
- goto handle_error;
- }
-
-+#ifdef HAVE_DRI3
- if (pdpyp->zink) {
- bool err;
- psc->has_multibuffer = dri3_check_multibuffer(priv->dpy, &err);
-@@ -1005,6 +1008,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv,
- goto handle_error;
- }
- }
-+#endif
-
- glx_config_destroy_list(psc->base.configs);
- psc->base.configs = configs;
---
-2.44.0
-
diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
index 5975ab4472ecebc34ef1504904523de73c9f5c51..953a724dc092667a5ac6f19f6b41d4277fab4ba2 100644
--- a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
+++ b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch
@@ -22,18 +22,29 @@ diff --git a/src/freedreno/afuc/meson.build b/src/freedreno/afuc/meson.build
index bb7cebf5a748..351cc31ef2de 100644
--- a/src/freedreno/afuc/meson.build
+++ b/src/freedreno/afuc/meson.build
-@@ -56,6 +56,7 @@ if with_tests
+@@ -56,10 +56,12 @@ if with_tests
asm_fw = custom_target('afuc_test.fw',
output: 'afuc_test.fw',
- command: [asm, '-g', '6', files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'],
+ command: [asm, files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'],
++ env: {'RNN_PATH': rnn_src_path},
+ )
+ asm_fw_a7xx = custom_target('afuc_test_a7xx.fw',
+ output: 'afuc_test_a7xx.fw',
+ command: [asm, files('../.gitlab-ci/traces/afuc_test_a7xx.asm'), '@OUTPUT@'],
+ env: {'RNN_PATH': rnn_src_path},
)
test('afuc-asm',
diff,
-@@ -120,6 +122,7 @@ if cc.sizeof('size_t') > 4
+@@ -120,11 +122,13 @@ if cc.sizeof('size_t') > 4
disasm_fw = custom_target('afuc_test.asm',
output: 'afuc_test.asm',
- command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw'), '-g', '630'],
+ command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw')],
++ env: {'RNN_PATH': rnn_src_path},
+ capture: true
+ )
+ disasm_fw_a7xx = custom_target('afuc_test_a7xx.asm',
+ output: 'afuc_test_a7xx.asm',
+ command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test_a7xx.fw')],
+ env: {'RNN_PATH': rnn_src_path},
capture: true
)
@@ -71,8 +82,29 @@ index 98e49b8fcf0e..145e72597eb9 100644
-rnn_path = rnn_src_path + ':' + get_option('prefix') + '/' + rnn_install_path
+rnn_path = get_option('prefix') + '/' + rnn_install_path
- dep_lua = dependency('lua54', 'lua53', 'lua52', 'lua', required: false,
- allow_fallback: true, version: '>=5.2')
---
+ dep_libarchive = dependency('libarchive', allow_fallback: true, required: false)
+ dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false)
+diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py
+--- a/src/freedreno/registers/gen_header.py
++++ b/src/freedreno/registers/gen_header.py
+@@ -885,13 +885,14 @@ The rules-ng-ng source files this header
+ """)
+ maxlen = 0
+ for filepath in p.xml_files:
+- maxlen = max(maxlen, len(filepath))
++ maxlen = max(maxlen, len(os.path.basename(filepath)))
+ for filepath in p.xml_files:
+- pad = " " * (maxlen - len(filepath))
++ filename = os.path.basename(filepath)
++ pad = " " * (maxlen - len(filename))
+ filesize = str(os.path.getsize(filepath))
+ filesize = " " * (7 - len(filesize)) + filesize
+ filetime = time.ctime(os.path.getmtime(filepath))
+- print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")")
++ print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")")
+ if p.copyright_year:
+ current_year = str(datetime.date.today().year)
+ print()
+---
2.39.2
diff --git a/meta/recipes-graphics/mesa/files/0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch b/meta/recipes-graphics/mesa/files/0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch
new file mode 100644
index 0000000000000000000000000000000000000000..bebe30037abffab676bdd371116c1b9cbd9f9cef
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch
@@ -0,0 +1,28 @@
+From f3c34b8da2662643089b33be8b93e56a4da8703d Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Date: Wed, 2 Apr 2025 15:30:20 +0300
+Subject: [PATCH] meson: disable SIMD blake optimisations on x32 host
+
+On X.org startup libgallium crashes on x32 hosts inside
+blake3_hash_many_sse41(), most likely because of the different pointer
+size. Disable SIMD blake implementation if x32 is detected.
+
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Upstream-Status: Pending [will be submitted upstream after internal clearance]
+---
+ src/util/blake3/meson.build | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/util/blake3/meson.build b/src/util/blake3/meson.build
+index 6b53daab6b32..ce6dd85ac1ea 100644
+--- a/src/util/blake3/meson.build
++++ b/src/util/blake3/meson.build
+@@ -24,6 +24,8 @@ if cpu_family == 'x86_64'
+ else
+ files_blake3 += ['blake3_sse2_x86-64_windows_gnu.S', 'blake3_sse41_x86-64_windows_gnu.S', 'blake3_avx2_x86-64_windows_gnu.S', 'blake3_avx512_x86-64_windows_gnu.S']
+ endif
++ elif meson.get_compiler('c').sizeof('void *') == 4
++ blake3_defs += blake3_x86_no_simd_defs
+ else
+ files_blake3 += ['blake3_sse2_x86-64_unix.S', 'blake3_sse41_x86-64_unix.S', 'blake3_avx2_x86-64_unix.S', 'blake3_avx512_x86-64_unix.S']
+ endif
diff --git a/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch b/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch
deleted file mode 100644
index 036a0b494539243e7850ba3ea24669e0749e2dd2..0000000000000000000000000000000000000000
--- a/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 62495ebb977866c52d5bed8499a547c49f0d9bc1 Mon Sep 17 00:00:00 2001
-From: Romain Naour <romain.naour@smile.fr>
-Date: Tue, 6 Feb 2024 09:47:10 +0100
-Subject: [PATCH 2/2] glxext: don't try zink if not enabled in mesa
-
-Commit 7d9ea77b459 ("glx: add automatic zink fallback loading between hw and sw drivers")
-added an automatic zink fallback even when the zink gallium is not
-enabled at build time.
-
-It leads to unexpected error log while loading drisw driver and
-zink is not installed on the rootfs:
-
- MESA-LOADER: failed to open zink: /usr/lib/dri/zink_dri.so
-
-Fixes: 7d9ea77b459 ("glx: add automatic zink fallback loading between hw and sw drivers")
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27478]
-Signed-off-by: Romain Naour <romain.naour@smile.fr>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/glx/glxext.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/glx/glxext.c b/src/glx/glxext.c
-index 05c825a..7a06aa9 100644
---- a/src/glx/glxext.c
-+++ b/src/glx/glxext.c
-@@ -908,9 +908,11 @@ __glXInitialize(Display * dpy)
- #endif /* HAVE_DRI3 */
- if (!debug_get_bool_option("LIBGL_DRI2_DISABLE", false))
- dpyPriv->dri2Display = dri2CreateDisplay(dpy);
-+#if defined(HAVE_ZINK)
- if (!dpyPriv->dri3Display && !dpyPriv->dri2Display)
- try_zink = !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false) &&
- !getenv("GALLIUM_DRIVER");
-+#endif /* HAVE_ZINK */
- }
- #endif /* GLX_USE_DRM */
- if (glx_direct)
---
-2.44.0
-
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index f6a91a7002f8aebc8845eda7f339912e086839b5..9edce6b2281c2e33e6fe20819f0f4998cceba60b 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -10,21 +10,18 @@ HOMEPAGE = "http://mesa3d.org"
BUGTRACKER = "https://bugs.freedesktop.org"
SECTION = "x11"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10"
+LIC_FILES_CHKSUM = "file://docs/license.rst;md5=ffe678546d4337b732cfd12262e6af11"
PE = "2"
SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
- file://0001-drisw-fix-build-without-dri3.patch \
- file://0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch \
- file://0001-Revert-meson-do-not-pull-in-clc-for-clover.patch \
- file://0001-amd-Include-missing-llvm-IR-header-Module.h.patch \
+ file://0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch \
file://0001-freedreno-don-t-encode-build-path-into-binaries.patch\
"
-SRC_URI[sha256sum] = "7454425f1ed4a6f1b5b107e1672b30c88b22ea0efea000ae2c7d96db93f6c26a"
-PV = "24.0.7"
+SRC_URI[sha256sum] = "adf904d083b308df95898600ffed435f4b5c600d95fb6ec6d4c45638627fdc97"
+PV = "25.0.2"
UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
@@ -38,8 +35,7 @@ do_install:append() {
fi
}
-DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native"
-DEPENDS:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'mesa-native', '', d)}"
+DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native"
EXTRANATIVEPATH += "chrpath-native"
PROVIDES = " \
${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \
@@ -77,44 +73,47 @@ EXTRA_OEMESON = " \
-Dplatforms='${@",".join("${PLATFORMS}".split())}' \
"
-EXTRA_OEMESON:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', '-Dintel-clc=system', '', d)}"
-EXTRA_OEMESON:append:class-native = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', '-Dintel-clc=enabled', '', d)}"
-
def strip_comma(s):
return s.strip(',')
+
PACKAGECONFIG = " \
gallium \
video-codecs \
${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'dri3', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \
"
-PACKAGECONFIG:append:class-native = " gallium-llvm r600"
+PACKAGECONFIG:append:x86 = " libclc gallium-llvm"
+PACKAGECONFIG:append:x86-64 = " libclc gallium-llvm"
+PACKAGECONFIG:append:i686 = " libclc gallium-llvm"
+PACKAGECONFIG:append:class-native = " libclc gallium-llvm r600"
# "gbm" requires "opengl"
PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled"
-X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr"
+X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr xorgproto libxshmfence"
# "x11" requires "opengl"
PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}"
PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols"
-PACKAGECONFIG[dri3] = "-Ddri3=enabled, -Ddri3=disabled, xorgproto libxshmfence"
+VULKAN_DRIVERS_AMD = ""
+VULKAN_DRIVERS_AMD:x86 = ",amd"
+VULKAN_DRIVERS_AMD:x86-64 = ",amd"
+# i686 is a 32 bit override for mesa-native
+VULKAN_DRIVERS_AMD:i686 = ",amd"
+
+VULKAN_DRIVERS_INTEL = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', ',intel', '', d)}"
+VULKAN_DRIVERS_SWRAST = ",swrast"
+# Crashes on x32
+VULKAN_DRIVERS_SWRAST:x86-x32 = ""
+VULKAN_DRIVERS_LLVM = "${VULKAN_DRIVERS_SWRAST}${VULKAN_DRIVERS_AMD}${VULKAN_DRIVERS_INTEL}"
-# Vulkan drivers need dri3 enabled
-# amd could be enabled as well but requires gallium-llvm with llvm >= 3.9
VULKAN_DRIVERS = ""
-VULKAN_DRIVERS:append:x86 = ",intel,amd"
-VULKAN_DRIVERS:append:x86-64 = ",intel,amd"
-# i686 is a 32 bit override for mesa-native
-VULKAN_DRIVERS:append:i686 = ",intel,amd"
VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}"
-VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',swrast', '', d)}"
+VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${VULKAN_DRIVERS_LLVM}', '', d)}"
VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}"
PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers"
@@ -137,7 +136,7 @@ PACKAGECONFIG[freedreno-fdperf] = ",,libconfig"
PACKAGECONFIG[tools] = "-Dtools=${@strip_comma('${TOOLS}')}, -Dtools='', ${TOOLS_DEPS}"
PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
-PACKAGECONFIG[glvnd] = "-Dglvnd=true, -Dglvnd=false, libglvnd"
+PACKAGECONFIG[glvnd] = "-Dglvnd=enabled, -Dglvnd=disabled, libglvnd"
# "gles" requires "opengl"
PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled"
@@ -145,9 +144,9 @@ PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2
# "egl" requires "opengl"
PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled"
-# "opencl" requires libclc from meta-clang and spirv-tools from OE-Core
-OPENCL_NATIVE = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', '-Dopencl-native=true', '', d)}"
-PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd -Dopencl-spirv=true ${OPENCL_NATIVE},-Dgallium-opencl=disabled -Dopencl-spirv=false,libclc spirv-tools python3-ply-native"
+# "opencl" also requires libclc and gallium-llvm to be present in PKGCONFIG!
+# Be sure to enable them both for the target and for the native build.
+PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd,-Dgallium-opencl=disabled,"
PACKAGECONFIG[broadcom] = ""
PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native"
@@ -157,13 +156,13 @@ PACKAGECONFIG[vc4] = ""
PACKAGECONFIG[v3d] = ""
PACKAGECONFIG[zink] = ""
-GALLIUMDRIVERS = "swrast"
+GALLIUMDRIVERS = "softpipe"
# gallium swrast was found to crash Xorg on startup in x32 qemu
GALLIUMDRIVERS:x86-x32 = ""
-GALLIUMDRIVERS:append:x86 = ",i915,iris,crocus"
-GALLIUMDRIVERS:append:x86-64 = ",i915,iris,crocus"
+GALLIUMDRIVERS:append:x86 = ",i915,crocus"
+GALLIUMDRIVERS:append:x86-64 = ",i915,crocus"
# i686 is a 32 bit override for mesa-native
-GALLIUMDRIVERS:append:i686 = ",i915,iris,crocus"
+GALLIUMDRIVERS:append:i686 = ",i915,crocus"
GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}"
GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}"
@@ -173,8 +172,12 @@ GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', ''
GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}"
# radeonsi requires LLVM
+GALLIUMDRIVERS_IRIS = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', ',iris', '', d)}"
GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}"
-GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_RADEONSI}"
+GALLIUMDRIVERS_LLVMPIPE = ",llvmpipe"
+# llvmpipe crashes on x32
+GALLIUMDRIVERS_LLVMPIPE:x86-x32 = ""
+GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_LLVMPIPE}${GALLIUMDRIVERS_IRIS}${GALLIUMDRIVERS_RADEONSI}"
GALLIUMDRIVERS_LLVM:append:x86 = ",svga"
GALLIUMDRIVERS_LLVM:append:x86-64 = ",svga"
# i686 is a 32 bit override for mesa-native
@@ -187,8 +190,16 @@ GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '
GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}"
GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}"
+MESA_CLC = "system"
+MESA_CLC:class-native = "enabled"
+INSTALL_MESA_CLC = "false"
+INSTALL_MESA_CLC:class-native = "true"
+MESA_NATIVE = "mesa-native"
+MESA_NATIVE:class-native = ""
+
PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm"
PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm llvm-native elfutils"
+PACKAGECONFIG[libclc] = "-Dmesa-clc=${MESA_CLC} -Dinstall-mesa-clc=${INSTALL_MESA_CLC},,libclc spirv-tools spirv-llvm-translator ${MESA_NATIVE}"
PACKAGECONFIG[xa] = "-Dgallium-xa=enabled, -Dgallium-xa=disabled"
PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial"
PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau"
@@ -242,6 +253,7 @@ RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'lib
PACKAGES =+ "libegl-mesa libegl-mesa-dev \
libosmesa libosmesa-dev \
+ libgallium \
libgl-mesa libgl-mesa-dev \
libglx-mesa libglx-mesa-dev \
libglapi libglapi-dev \
@@ -267,13 +279,6 @@ do_install:append () {
rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc
}
-do_install:append:class-native () {
- if ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'true', 'false', d)}; then
- install -d ${D}${bindir}
- install -m0755 ${B}/src/intel/compiler/intel_clc ${D}${bindir}
- fi
-}
-
# For the packages that make up the OpenGL interfaces, inject variables so that
# they don't get Debian-renamed (which would remove the -mesa suffix), and
# RPROVIDEs/RCONFLICTs on the generic libgl name.
@@ -344,7 +349,8 @@ FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d"
FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan"
FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d"
-FILES:libgbm = "${libdir}/libgbm.so.*"
+FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so"
+FILES:libgallium = "${libdir}/libgallium-*.so"
FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
FILES:libgl-mesa = "${libdir}/libGL.so.*"
@@ -372,6 +378,9 @@ FILES:libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \
FILES:${PN}-tools = "${bindir} ${datadir}"
ALLOW_EMPTY:${PN}-tools = "1"
+# All DRI drivers are symlinks to libdril_dri.so
+INSANE_SKIP:${PN}-megadriver += "dev-so"
+
# Fix upgrade path from mesa to mesa-megadriver
RREPLACES:mesa-megadriver = "mesa"
RCONFLICTS:mesa-megadriver = "mesa"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 12/13] bindgen-cli: a tool to generate Rust bindings
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (10 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 11/13] mesa: upgrade 24.0.7 -> 25.0.2 Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 13/13] mesa: add support for RustiCL under PACKAGECONFIG "opencl" Dmitry Baryshkov
2025-04-08 13:34 ` [OE-core] [PATCH v6 00/13] mesa: upgrade to 25.0.2 Mathieu Dubois-Briand
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj
Import bindgen-cli from the meta-clang layer, as it is required to
generate bindings for Mesa / RustiCL. Specify Khem as maintainer as he
is maintaining the meta-clang layer, which included this recipe too.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
meta/conf/distro/include/maintainers.inc | 1 +
.../bindgen-cli/bindgen-cli-crates.inc | 186 +++++++++++++++++++++
.../bindgen-cli/bindgen-cli_0.71.1.bb | 19 +++
3 files changed, 206 insertions(+)
diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index 2b47d3103c03b1b8a11f40566fdd5334d906860d..953abed2a9433bf1842b92ca7fc0b99f4df8bcd9 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -64,6 +64,7 @@ RECIPE_MAINTAINER:pn-bash = "Hongxu Jia <hongxu.jia@windriver.com>"
RECIPE_MAINTAINER:pn-bash-completion = "Unassigned <unassigned@yoctoproject.org>"
RECIPE_MAINTAINER:pn-bc = "Anuj Mittal <anuj.mittal@intel.com>"
RECIPE_MAINTAINER:pn-bind = "Unassigned <unassigned@yoctoproject.org>"
+RECIPE_MAINTAINER:pn-bindgen-cli = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-binutils = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-binutils-cross-${TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
RECIPE_MAINTAINER:pn-binutils-cross-canadian-${TRANSLATED_TARGET_ARCH} = "Khem Raj <raj.khem@gmail.com>"
diff --git a/meta/recipes-devtools/bindgen-cli/bindgen-cli-crates.inc b/meta/recipes-devtools/bindgen-cli/bindgen-cli-crates.inc
new file mode 100644
index 0000000000000000000000000000000000000000..a758440c9d324a2f17e6b2fef296d0d0dbd5e450
--- /dev/null
+++ b/meta/recipes-devtools/bindgen-cli/bindgen-cli-crates.inc
@@ -0,0 +1,186 @@
+# Autogenerated with 'bitbake -c update_crates bindgen-cli'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.1.3 \
+ crate://crates.io/annotate-snippets/0.11.4 \
+ crate://crates.io/anstyle/1.0.10 \
+ crate://crates.io/autocfg/1.4.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.2.1 \
+ crate://crates.io/block/0.1.6 \
+ crate://crates.io/cc/1.2.2 \
+ crate://crates.io/cexpr/0.6.0 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clang-sys/1.8.1 \
+ crate://crates.io/clap/4.1.4 \
+ crate://crates.io/clap_complete/4.2.0 \
+ crate://crates.io/clap_derive/4.1.0 \
+ crate://crates.io/clap_lex/0.3.1 \
+ crate://crates.io/either/1.13.0 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/env_logger/0.8.4 \
+ crate://crates.io/errno/0.3.10 \
+ crate://crates.io/fastrand/1.9.0 \
+ crate://crates.io/getrandom/0.2.15 \
+ crate://crates.io/glob/0.3.1 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.9 \
+ crate://crates.io/hermit-abi/0.4.0 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/io-lifetimes/1.0.11 \
+ crate://crates.io/is-terminal/0.4.13 \
+ crate://crates.io/itertools/0.13.0 \
+ crate://crates.io/libc/0.2.167 \
+ crate://crates.io/libloading/0.8.6 \
+ crate://crates.io/linux-raw-sys/0.3.8 \
+ crate://crates.io/log/0.4.22 \
+ crate://crates.io/malloc_buf/0.0.6 \
+ crate://crates.io/memchr/2.7.4 \
+ crate://crates.io/minimal-lexical/0.2.1 \
+ crate://crates.io/nom/7.1.3 \
+ crate://crates.io/objc/0.2.7 \
+ crate://crates.io/once_cell/1.20.2 \
+ crate://crates.io/os_str_bytes/6.4.1 \
+ crate://crates.io/owo-colors/4.1.0 \
+ crate://crates.io/prettyplease/0.2.25 \
+ crate://crates.io/proc-macro-error-attr/1.0.4 \
+ crate://crates.io/proc-macro-error/1.0.4 \
+ crate://crates.io/proc-macro2/1.0.92 \
+ crate://crates.io/quickcheck/1.0.3 \
+ crate://crates.io/quote/1.0.37 \
+ crate://crates.io/rand/0.8.5 \
+ crate://crates.io/rand_core/0.6.4 \
+ crate://crates.io/redox_syscall/0.3.5 \
+ crate://crates.io/regex-automata/0.4.9 \
+ crate://crates.io/regex-syntax/0.8.5 \
+ crate://crates.io/regex/1.11.1 \
+ crate://crates.io/rustc-hash/2.1.0 \
+ crate://crates.io/rustix/0.37.27 \
+ crate://crates.io/shlex/1.3.0 \
+ crate://crates.io/similar/2.6.0 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/1.0.109 \
+ crate://crates.io/syn/2.0.90 \
+ crate://crates.io/tempfile/3.6.0 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/unicode-ident/1.0.14 \
+ crate://crates.io/unicode-width/0.1.14 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-sys/0.52.0 \
+ crate://crates.io/windows-targets/0.48.5 \
+ crate://crates.io/windows-targets/0.52.6 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_gnullvm/0.52.6 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.52.6 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.52.6 \
+ crate://crates.io/windows_i686_gnullvm/0.52.6 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.52.6 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.52.6 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.52.6 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.52.6 \
+"
+
+SRC_URI[aho-corasick-1.1.3.sha256sum] = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+SRC_URI[annotate-snippets-0.11.4.sha256sum] = "24e35ed54e5ea7997c14ed4c70ba043478db1112e98263b3b035907aa197d991"
+SRC_URI[anstyle-1.0.10.sha256sum] = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+SRC_URI[autocfg-1.4.0.sha256sum] = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.2.1.sha256sum] = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813"
+SRC_URI[block-0.1.6.sha256sum] = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+SRC_URI[cc-1.2.2.sha256sum] = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clang-sys-1.8.1.sha256sum] = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
+SRC_URI[clap-4.1.4.sha256sum] = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76"
+SRC_URI[clap_complete-4.2.0.sha256sum] = "01c22dcfb410883764b29953103d9ef7bb8fe21b3fa1158bc99986c2067294bd"
+SRC_URI[clap_derive-4.1.0.sha256sum] = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8"
+SRC_URI[clap_lex-0.3.1.sha256sum] = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"
+SRC_URI[either-1.13.0.sha256sum] = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+SRC_URI[errno-0.3.10.sha256sum] = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[getrandom-0.2.15.sha256sum] = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.9.sha256sum] = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+SRC_URI[hermit-abi-0.4.0.sha256sum] = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[is-terminal-0.4.13.sha256sum] = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
+SRC_URI[itertools-0.13.0.sha256sum] = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+SRC_URI[libc-0.2.167.sha256sum] = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc"
+SRC_URI[libloading-0.8.6.sha256sum] = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[log-0.4.22.sha256sum] = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+SRC_URI[malloc_buf-0.0.6.sha256sum] = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+SRC_URI[memchr-2.7.4.sha256sum] = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[objc-0.2.7.sha256sum] = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+SRC_URI[once_cell-1.20.2.sha256sum] = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
+SRC_URI[os_str_bytes-6.4.1.sha256sum] = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+SRC_URI[owo-colors-4.1.0.sha256sum] = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56"
+SRC_URI[prettyplease-0.2.25.sha256sum] = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro2-1.0.92.sha256sum] = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0"
+SRC_URI[quickcheck-1.0.3.sha256sum] = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6"
+SRC_URI[quote-1.0.37.sha256sum] = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+SRC_URI[regex-automata-0.4.9.sha256sum] = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+SRC_URI[regex-syntax-0.8.5.sha256sum] = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+SRC_URI[regex-1.11.1.sha256sum] = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+SRC_URI[rustc-hash-2.1.0.sha256sum] = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
+SRC_URI[rustix-0.37.27.sha256sum] = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+SRC_URI[shlex-1.3.0.sha256sum] = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+SRC_URI[similar-2.6.0.sha256sum] = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.90.sha256sum] = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
+SRC_URI[tempfile-3.6.0.sha256sum] = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[unicode-ident-1.0.14.sha256sum] = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
+SRC_URI[unicode-width-0.1.14.sha256sum] = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows-targets-0.52.6.sha256sum] = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_gnullvm-0.52.6.sha256sum] = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_aarch64_msvc-0.52.6.sha256sum] = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_gnu-0.52.6.sha256sum] = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+SRC_URI[windows_i686_gnullvm-0.52.6.sha256sum] = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_i686_msvc-0.52.6.sha256sum] = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnu-0.52.6.sha256sum] = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_gnullvm-0.52.6.sha256sum] = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+SRC_URI[windows_x86_64_msvc-0.52.6.sha256sum] = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
\ No newline at end of file
diff --git a/meta/recipes-devtools/bindgen-cli/bindgen-cli_0.71.1.bb b/meta/recipes-devtools/bindgen-cli/bindgen-cli_0.71.1.bb
new file mode 100644
index 0000000000000000000000000000000000000000..5578fb3d18bf9cb622859ab3ff64ea23ea642e96
--- /dev/null
+++ b/meta/recipes-devtools/bindgen-cli/bindgen-cli_0.71.1.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Automatically generates Rust FFI bindings to C and C++ libraries."
+HOMEPAGE = "https://rust-lang.github.io/rust-bindgen/"
+LICENSE = "BSD-3-Clause"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=0b9a98cb3dcdefcceb145324693fda9b"
+
+inherit rust cargo cargo-update-recipe-crates
+
+SRC_URI += "git://github.com/rust-lang/rust-bindgen.git;protocol=https;branch=main"
+SRCREV = "af7fd38d5e80514406fb6a8bba2d407d252c30b9"
+S = "${WORKDIR}/git"
+
+require ${BPN}-crates.inc
+
+do_install:append:class-native() {
+ create_wrapper ${D}/${bindir}/bindgen LIBCLANG_PATH="${STAGING_LIBDIR_NATIVE}"
+}
+
+BBCLASSEXTEND = "native"
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v6 13/13] mesa: add support for RustiCL under PACKAGECONFIG "opencl"
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (11 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 12/13] bindgen-cli: a tool to generate Rust bindings Dmitry Baryshkov
@ 2025-04-07 9:48 ` Dmitry Baryshkov
2025-04-08 13:34 ` [OE-core] [PATCH v6 00/13] mesa: upgrade to 25.0.2 Mathieu Dubois-Briand
13 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 9:48 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj, Zoltán Böszörményi
From: Zoltán Böszörményi <zboszor@gmail.com>
Mesa now has two OpenCL implementations: Clover (older one) and RustiCL
(newer one). Extend the "opencl" package config to include both
implementations into the libopencl-mesa (-dev) packages. As the Clover
implementation is in maintenance mode and is expected to be removed at
Mesa 25.2, it doesn't make sense to split the packages or to provide
two config options.
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
[DB: merged "rusticl" and "clover" back to "opencl", reworked rust inheritance]
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
...vide-cross-compilation-arguments-to-LLVM-.patch | 67 ++++++++++++++++++++++
meta/recipes-graphics/mesa/mesa.inc | 21 +++++--
2 files changed, 83 insertions(+), 5 deletions(-)
diff --git a/meta/recipes-graphics/mesa/files/0001-rusticl-provide-cross-compilation-arguments-to-LLVM-.patch b/meta/recipes-graphics/mesa/files/0001-rusticl-provide-cross-compilation-arguments-to-LLVM-.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d527b3408734dfa0aa756053c1b0f3ea3a59563b
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-rusticl-provide-cross-compilation-arguments-to-LLVM-.patch
@@ -0,0 +1,67 @@
+From b9cf34f39ca7e7546508ce2ab1f053edef5fc201 Mon Sep 17 00:00:00 2001
+From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+Date: Wed, 26 Mar 2025 17:47:09 +0200
+Subject: [PATCH] rusticl: provide cross-compilation arguments to LLVM bindgen
+ invocation
+
+Correctly generating LLVM bindings requires several croos-compilation
+arguments. Provide them to rust.bindgen(). Karol Herbst on IRC suggested
+that a proper fix should be to fix meson's rust.bindgen() to support
+cross-compilation. Carry this patch until meson is fixed.
+
+Upstream-Status: Inappropriate [OE-Specific]
+Link: https://github.com/mesonbuild/meson/issues/13591
+Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
+---
+ meson_options.txt | 14 ++++++++++++++
+ src/gallium/frontends/rusticl/meson.build | 8 ++++++++
+ 2 files changed, 22 insertions(+)
+
+diff --git a/meson_options.txt b/meson_options.txt
+index 0147cafcb146..f73e83fded18 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -796,3 +796,17 @@ option(
+ value : false,
+ description : 'Install the drivers internal shader compilers (if needed for cross builds).'
+ )
++
++option(
++ 'bindgen-includedir',
++ type : 'string',
++ value : '',
++ description : 'system-wide include directory for cross-generating LLVM bindings'
++ )
++
++option(
++ 'bindgen-target',
++ type : 'string',
++ value : '',
++ description : 'Clang target for cross-generating LLVM bindings'
++ )
+diff --git a/src/gallium/frontends/rusticl/meson.build b/src/gallium/frontends/rusticl/meson.build
+index a5d1dcf3abb9..480c220b7f5f 100644
+--- a/src/gallium/frontends/rusticl/meson.build
++++ b/src/gallium/frontends/rusticl/meson.build
+@@ -115,6 +115,11 @@ rusticl_bindgen_c_args = [
+ '-fno-builtin-malloc',
+ ]
+
++bindgen_target = get_option('bindgen-target')
++if bindgen_target != ''
++ rusticl_bindgen_c_args += [ '-target', bindgen_target ]
++endif
++
+ cl_c_args = [
+ '-DCL_USE_DEPRECATED_OPENCL_1_0_APIS',
+ '-DCL_USE_DEPRECATED_OPENCL_1_1_APIS',
+@@ -187,6 +192,9 @@ rusticl_llvm_bindings_rs = rust.bindgen(
+ rusticl_bindgen_c_args,
+ pre_args,
+ ],
++ include_directories : [
++ get_option('bindgen-includedir'),
++ ],
+ dependencies : [
+ dep_clang,
+ dep_llvm,
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 9edce6b2281c2e33e6fe20819f0f4998cceba60b..aca34983e97ca684d662987d3a1d0b61ba44029a 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -18,6 +18,7 @@ SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
file://0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch \
file://0001-freedreno-don-t-encode-build-path-into-binaries.patch\
+ file://0001-rusticl-provide-cross-compilation-arguments-to-LLVM-.patch \
"
SRC_URI[sha256sum] = "adf904d083b308df95898600ffed435f4b5c600d95fb6ec6d4c45638627fdc97"
@@ -46,7 +47,7 @@ PROVIDES = " \
virtual/mesa \
"
-inherit meson pkgconfig python3native gettext features_check
+inherit meson pkgconfig python3native gettext features_check rust
BBCLASSEXTEND = "native nativesdk"
@@ -85,6 +86,9 @@ PACKAGECONFIG = " \
${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \
"
+# skip all Rust dependencies if we are not building OpenCL"
+INHIBIT_DEFAULT_RUST_DEPS = "${@bb.utils.contains('PACKAGECONFIG', 'opencl', '', '1', d)}"
+
PACKAGECONFIG:append:x86 = " libclc gallium-llvm"
PACKAGECONFIG:append:x86-64 = " libclc gallium-llvm"
PACKAGECONFIG:append:i686 = " libclc gallium-llvm"
@@ -144,9 +148,16 @@ PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2
# "egl" requires "opengl"
PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled"
+BINDGEN_TARGET = "${TARGET_ARCH}-${TARGET_OS}${@['-gnu', ''][d.getVar('LIBCEXTENSION') != '']}"
+BINDGEN_TARGET:class-native = ""
+
# "opencl" also requires libclc and gallium-llvm to be present in PKGCONFIG!
# Be sure to enable them both for the target and for the native build.
-PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd,-Dgallium-opencl=disabled,"
+PACKAGECONFIG[opencl] = " \
+ -Dgallium-opencl=icd -Dgallium-rusticl=true -Dbindgen-includedir=${STAGING_INCDIR} -Dbindgen-target=${BINDGEN_TARGET},\
+ -Dgallium-opencl=disabled -Dgallium-rusticl=false, \
+ bindgen-cli-native \
+"
PACKAGECONFIG[broadcom] = ""
PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native"
@@ -249,7 +260,7 @@ RDEPENDS:libgles3-mesa-dev += "libgles2-mesa-dev"
RDEPENDS:libgles2-mesa += "libgles3-mesa"
ALLOW_EMPTY:libgles3-mesa = "1"
-RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'libclc spirv-tools', '', d)}"
+RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'libclc spirv-tools spirv-llvm-translator', '', d)}"
PACKAGES =+ "libegl-mesa libegl-mesa-dev \
libosmesa libosmesa-dev \
@@ -355,7 +366,7 @@ FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
FILES:libgl-mesa = "${libdir}/libGL.so.*"
FILES:libglx-mesa = "${libdir}/libGLX*.so.*"
-FILES:libopencl-mesa = "${libdir}/libMesaOpenCL.so.* ${libdir}/gallium-pipe/*.so ${sysconfdir}/OpenCL/vendors/mesa.icd"
+FILES:libopencl-mesa = "${libdir}/lib*OpenCL.so.* ${libdir}/gallium-pipe/*.so ${sysconfdir}/OpenCL/vendors/*.icd"
FILES:libglapi = "${libdir}/libglapi.so.*"
FILES:libosmesa = "${libdir}/libOSMesa.so.*"
FILES:libxatracker = "${libdir}/libxatracker.so.*"
@@ -369,7 +380,7 @@ FILES:libglapi-dev = "${libdir}/libglapi.*"
FILES:libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
FILES:libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
FILES:libgles3-mesa-dev = "${includedir}/GLES3"
-FILES:libopencl-mesa-dev = "${libdir}/libMesaOpenCL.so"
+FILES:libopencl-mesa-dev = "${libdir}/lib*OpenCL.so"
FILES:libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/GL/osmesa.h ${libdir}/pkgconfig/osmesa.pc"
FILES:libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \
${includedir}/xa_tracker.h ${includedir}/xa_composite.h ${includedir}/xa_context.h \
--
2.39.5
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [OE-core] [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage
2025-04-07 9:48 ` [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage Dmitry Baryshkov
@ 2025-04-07 11:22 ` Alexander Kanavin
2025-04-07 11:58 ` Dmitry Baryshkov
0 siblings, 1 reply; 18+ messages in thread
From: Alexander Kanavin @ 2025-04-07 11:22 UTC (permalink / raw)
To: dmitry.baryshkov; +Cc: openembedded-core, Khem Raj
On Mon, 7 Apr 2025 at 11:48, Dmitry Baryshkov via
lists.openembedded.org
<dmitry.baryshkov=oss.qualcomm.com@lists.openembedded.org> wrote:
>
> In the multiconfig builds the llvm-native build can get reused from the
> sstate cache with uninative being bypassed. This can result in the
> undefined __isoc23_strtol symbols (which are supported by the uninative,
> but not by the host library).
I don't understand. How and where is uninative being bypassed?
Alex
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [OE-core] [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage
2025-04-07 11:22 ` [OE-core] " Alexander Kanavin
@ 2025-04-07 11:58 ` Dmitry Baryshkov
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-07 11:58 UTC (permalink / raw)
To: Alexander Kanavin; +Cc: openembedded-core, Khem Raj
On Mon, 7 Apr 2025 at 14:22, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>
> On Mon, 7 Apr 2025 at 11:48, Dmitry Baryshkov via
> lists.openembedded.org
> <dmitry.baryshkov=oss.qualcomm.com@lists.openembedded.org> wrote:
> >
> > In the multiconfig builds the llvm-native build can get reused from the
> > sstate cache with uninative being bypassed. This can result in the
> > undefined __isoc23_strtol symbols (which are supported by the uninative,
> > but not by the host library).
>
> I don't understand. How and where is uninative being bypassed?
See [1] . During multiconfig.MultiConfig.test_multiconfig there are
two additional multiconfs. Both musl and tiny end up not using
uninative. If I understand the issue correctly after reproducing it
locally, multiconfs end up using llvm-native from sstate cache, but
respective functions are not available in host's libc.
[1] https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/1374
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [OE-core] [PATCH v6 00/13] mesa: upgrade to 25.0.2
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
` (12 preceding siblings ...)
2025-04-07 9:48 ` [PATCH v6 13/13] mesa: add support for RustiCL under PACKAGECONFIG "opencl" Dmitry Baryshkov
@ 2025-04-08 13:34 ` Mathieu Dubois-Briand
2025-04-08 19:08 ` Dmitry Baryshkov
13 siblings, 1 reply; 18+ messages in thread
From: Mathieu Dubois-Briand @ 2025-04-08 13:34 UTC (permalink / raw)
To: dmitry.baryshkov, openembedded-core
Cc: Khem Raj, Zoltán Böszörményi
On Mon Apr 7, 2025 at 11:48 AM CEST, Dmitry Baryshkov via lists.openembedded.org wrote:
> libclc is required in order to build Intel drivers in Mesa 24.1 and
> later. Thus OE-Core is currently locked to the 24.0.x branch, which is
> no longer maintained, having last release in June 2024.
>
> A clean solution is to package Clang, then use it to build libclc and
> SPIRV-LLVM-Translator (required for Mesa OpenCL support). However
> creating proper recipes for Clang is a long process (ongoing by Khem
> Raj).
>
> This patchset attempts to solve the issue in a simpler way: by building
> libclc and SPIRV-LLVM-Translator together with the LLVM. This way we
> don't have to create target Clang recipes, there is no extra toolchain
> to support, etc. Clang binaries are creted as a part of the build
> process (in order to support building target packages), however it only
> hits the LLVM sysroot-native and is only used by the LLVM target build.
>
> Future work by Khem (once Clang is properly supported in OE-Core) should
> allow us to create proper recipes for libclc and spirv-llvm-translator
> and drop them from the llvm / clang recipe.
>
> I think this approach provides a good balance between OE-Core being
> stuck with the outdated Mesa release and being able to upgrade it,
> bringing support for new hardware.
>
> Last two patches of the series bring in RustiCL support, a new OpenCL
> implementation within Mesa. They are optional for the sake of the
> upgrade and can be dropped if there is any issue with those. RustiCL
> support is mostly compile-tested at this point.
>
> NOTE: This depends on the https://github.com/kraj/meta-clang/pull/1075
> for interoperability with meta-clang
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
Hi Dmitry,
Thanks for the new version, but it looks like we still have some issues:
| Mangler.cpp:(.text._ZN4SPIR13MangleVisitor18recordSubstitutionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN4SPIR13MangleVisitor18recordSubstitutionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x23f): undefined reference to `std::__throw_bad_array_new_length()'
| collect2: error: ld returned 1 exit status
https://autobuilder.yoctoproject.org/valkyrie/#/builders/4/builds/1356
https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/1331
Can you have a look at this please?
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [OE-core] [PATCH v6 00/13] mesa: upgrade to 25.0.2
2025-04-08 13:34 ` [OE-core] [PATCH v6 00/13] mesa: upgrade to 25.0.2 Mathieu Dubois-Briand
@ 2025-04-08 19:08 ` Dmitry Baryshkov
0 siblings, 0 replies; 18+ messages in thread
From: Dmitry Baryshkov @ 2025-04-08 19:08 UTC (permalink / raw)
To: Mathieu Dubois-Briand
Cc: openembedded-core, Khem Raj,
Zoltán Böszörményi
On Tue, 8 Apr 2025 at 16:34, Mathieu Dubois-Briand
<mathieu.dubois-briand@bootlin.com> wrote:
>
> On Mon Apr 7, 2025 at 11:48 AM CEST, Dmitry Baryshkov via lists.openembedded.org wrote:
> > libclc is required in order to build Intel drivers in Mesa 24.1 and
> > later. Thus OE-Core is currently locked to the 24.0.x branch, which is
> > no longer maintained, having last release in June 2024.
> >
> > A clean solution is to package Clang, then use it to build libclc and
> > SPIRV-LLVM-Translator (required for Mesa OpenCL support). However
> > creating proper recipes for Clang is a long process (ongoing by Khem
> > Raj).
> >
> > This patchset attempts to solve the issue in a simpler way: by building
> > libclc and SPIRV-LLVM-Translator together with the LLVM. This way we
> > don't have to create target Clang recipes, there is no extra toolchain
> > to support, etc. Clang binaries are creted as a part of the build
> > process (in order to support building target packages), however it only
> > hits the LLVM sysroot-native and is only used by the LLVM target build.
> >
> > Future work by Khem (once Clang is properly supported in OE-Core) should
> > allow us to create proper recipes for libclc and spirv-llvm-translator
> > and drop them from the llvm / clang recipe.
> >
> > I think this approach provides a good balance between OE-Core being
> > stuck with the outdated Mesa release and being able to upgrade it,
> > bringing support for new hardware.
> >
> > Last two patches of the series bring in RustiCL support, a new OpenCL
> > implementation within Mesa. They are optional for the sake of the
> > upgrade and can be dropped if there is any issue with those. RustiCL
> > support is mostly compile-tested at this point.
> >
> > NOTE: This depends on the https://github.com/kraj/meta-clang/pull/1075
> > for interoperability with meta-clang
> >
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > ---
>
> Hi Dmitry,
>
> Thanks for the new version, but it looks like we still have some issues:
>
> | Mangler.cpp:(.text._ZN4SPIR13MangleVisitor18recordSubstitutionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE[_ZN4SPIR13MangleVisitor18recordSubstitutionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE]+0x23f): undefined reference to `std::__throw_bad_array_new_length()'
> | collect2: error: ld returned 1 exit status
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/4/builds/1356
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/9/builds/1331
>
> Can you have a look at this please?
This definitely looks like a llvm built for a newer system (or
uninative) being used for an older one (debian-11, which is pretty
old).
I think we need to fix the uninative.bbclass to add NATIVELSBSTRING to
BB_HASHCONFIG_WHITELIST only if the uninative actually gets selected.
I will check if that works...
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2025-04-08 19:09 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-07 9:48 [PATCH v6 00/13] mesa: upgrade to 25.0.2 Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 01/13] runqemu: also set GBM_BACKENDS_PATH Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 02/13] llvm: move libLLVM.so.N.M to llvm-libllvm package Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 03/13] llvm: use OECMAKE_SOURCEPATH to specify cmake dir Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 04/13] llvm: handle libdir in llvm-config Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 05/13] llvm: also use llvm-config wrapper for nativesdk recipes Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 06/13] llvm: remove LLVM_LDFLAGS from llvm-config --ldflags output Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 07/13] llvm: forcibly disable __isoc23_strtol usage Dmitry Baryshkov
2025-04-07 11:22 ` [OE-core] " Alexander Kanavin
2025-04-07 11:58 ` Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 08/13] llvm: support building libclc Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 09/13] llvm: add SPIRV-LLVM-Translator support Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 10/13] llvm: enable more targets to build Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 11/13] mesa: upgrade 24.0.7 -> 25.0.2 Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 12/13] bindgen-cli: a tool to generate Rust bindings Dmitry Baryshkov
2025-04-07 9:48 ` [PATCH v6 13/13] mesa: add support for RustiCL under PACKAGECONFIG "opencl" Dmitry Baryshkov
2025-04-08 13:34 ` [OE-core] [PATCH v6 00/13] mesa: upgrade to 25.0.2 Mathieu Dubois-Briand
2025-04-08 19:08 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox