mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-01-11 19:51:36 +01:00
54 lines
2.2 KiB
Diff
54 lines
2.2 KiB
Diff
From eca19331d94005485de5246cfa87a21621486cd8 Mon Sep 17 00:00:00 2001
|
|
From: no92 <no92.mail@gmail.com>
|
|
Date: Wed, 27 Aug 2025 16:02:31 +0200
|
|
Subject: [PATCH] gallivm: support LLVM 21
|
|
|
|
LLVM PR#146819 changed the signature of `setObjectLinkingLayerCreator`,
|
|
dropping the Triple argument. The PR was first included in the LLVM 21
|
|
series, and the new signature is gated behind a version check for that.
|
|
|
|
`LLVMOrcThreadSafeContextGetContext` was removed in LLVM commit b18e5b6,
|
|
and the ORC examples in the LLVM tree seem to just create a context
|
|
instead, which we replicate here.
|
|
|
|
With this commit, mesa successfully builds the llvmpipe gallium driver
|
|
on riscv64 with LLVM 21.1.0.
|
|
|
|
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13785
|
|
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13852
|
|
|
|
Reviewed-by: David Heidelberg <david@ixit.cz>
|
|
---
|
|
src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp | 7 ++++++-
|
|
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp
|
|
index 3d2b8cf81bc0c..0be69b02b6eef 100644
|
|
--- a/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp
|
|
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init_orc.cpp
|
|
@@ -340,7 +340,12 @@ LPJit::LPJit() :jit_dylib_count(0) {
|
|
.setJITTargetMachineBuilder(std::move(JTMB))
|
|
#ifdef USE_JITLINK
|
|
.setObjectLinkingLayerCreator(
|
|
+#if LLVM_VERSION_MAJOR >= 21
|
|
+ /* LLVM 21 removed the Triple argument */
|
|
+ [&](ExecutionSession &ES) {
|
|
+#else
|
|
[&](ExecutionSession &ES, const llvm::Triple &TT) {
|
|
+#endif
|
|
return std::make_unique<ObjectLinkingLayer>(
|
|
ES, ExitOnErr(llvm::jitlink::InProcessMemoryManager::Create()));
|
|
})
|
|
@@ -552,7 +557,7 @@ init_gallivm_state(struct gallivm_state *gallivm, const char *name,
|
|
gallivm->cache = cache;
|
|
|
|
gallivm->_ts_context = context->ref;
|
|
- gallivm->context = LLVMOrcThreadSafeContextGetContext(context->ref);
|
|
+ gallivm->context = LLVMContextCreate();
|
|
|
|
gallivm->module_name = LPJit::get_unique_name(name);
|
|
gallivm->module = LLVMModuleCreateWithNameInContext(gallivm->module_name,
|
|
--
|
|
GitLab
|
|
|