QVAC-23767 cmake: skip x86 cpu-feats helper in hybrid GGML_BACKEND_DL + GGML_CPU_STATIC builds - #61
Merged
Conversation
…_STATIC builds The cpu-feats OBJECT library implements the DL loader's variant score; it is meaningful only when the CPU backend itself is a dlopen'd module. In hybrid mode (GGML_BACKEND_DL=ON + GGML_CPU_STATIC=ON - the qvac diffusion port configuration) the CPU backend is a static library registered directly in-process, and PRIVATE-linking the un-exported OBJECT helper into it makes configure fail at install(EXPORT ggml-targets): includes target "ggml-cpu" which requires target "ggml-cpu-feats" that is not in any export set. ARM never hit this because its feats call is gated on GGML_CPU_ALL_VARIANTS; x86 gated it on GGML_BACKEND_DL alone. Needed to extend the Android hybrid mode to desktop Linux (QVAC-23767 / qvac#3853).
DmitryMalishev
force-pushed
the
qvac-23767-x86-hybrid-cpu-feats
branch
from
August 21, 2026 17:47
ee34924 to
94cb08a
Compare
gianni-cor
approved these changes
Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
One cmake-only commit on top of the
2026-08-11head (f31dab0): gate the x86cpu-featsOBJECT helper onGGML_BACKEND_DL AND NOT GGML_CPU_STATIC.Why. The
cpu-featsobject implements the DL loader's CPU-variant score; it only means anything when the CPU backend itself is a dlopen'd module. In hybrid mode (GGML_BACKEND_DL=ON+GGML_CPU_STATIC=ON— the configuration the qvacggmldiffusion registry port uses) the CPU backend is a static library registered directly in-process and the score is never consulted. But the x86 path created the helper onGGML_BACKEND_DLalone and PRIVATE-linked it into the now-exported staticggml-cpu, so configure dies at:ARM never hit this because its
ggml_add_cpu_backend_featurescall is gated onGGML_CPU_ALL_VARIANTS— which is why the Android hybrid (the only hybrid consumer until now) built fine. PowerPC/riscv/s390 sit under the same all-variants-style gating; x86 was the one arch with the bareGGML_BACKEND_DLguard.Where it's needed. QVAC-23767 / tetherto/qvac#3853: the linux
@qvac/diffusion-cppprebuilds hard-linklibvulkan.so.1(statically linked Vulkan backend), so the SDK worker aborts on any CPU-only server. The fix extends the Android hybrid DL mode to desktop Linux; hybrid on x86 is exactly where this configure error fires. This commit makes the2026-08-11line hybrid-capable for the diffusion registry port family going forward.Behavioral scope. Static, non-DL, and full-DL (
GGML_CPU_ALL_VARIANTS) builds are untouched — the condition only removes the helper from a configuration that could never configure successfully in the first place. No compiled-code change.Validation.
-DGGML_BACKEND_DL=ON -DGGML_CPU_STATIC=ON -DGGML_NATIVE=OFF):f31dab0(branch head, without this commit) → fails with the export-set error above;94cb08a(this PR) → configure + generate clean.2026-07-03-line pin, built via overlay port across the whole diffusion matrix — three green-or-running rounds: 32388143581 (green, commit form), 32511668376 (green, as the registry port patch — the exact backport of this commit), 32714613203 (green; adds x64/arm64 CPU-only no-graphics-stack legs). 9/9 prebuilds, 3/3 C++ suites, integration legs 74/74, Vulkan loading via the dlopen'd module on the GPU leg. The failure-before reference on that line: job link.Downstream: qvac-registry-vcpkg#325 and tetherto/qvac#3978 deliver the desktop-Linux hybrid to
@qvac/diffusion-cpp. Since the port family still consumes the frozen2026-07-03engine pair, ggml-org#325 carries this exact one-liner as a port patch (hybrid-cpu-static-feats.patch) — neither downstream PR depends on this PR's merge timing. This PR makes the fix canonical on the current dev line so the patch retires automatically when the port family migrates to the2026-08-11pair.