From 8b238a1db1f9f7e2dcc24a551a2890a3245c7e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= Date: Wed, 10 Sep 2025 23:53:03 +0300 Subject: [PATCH] meson: support both pkg-config files installed by SPIRV-Cross MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is dumb, yes. One does not handle shared vs static like this, but alas upstream has been doing this since 2023ยน. Until now I've been doing symlinks to work around this, but I keep forgetting it. [1]: KhronosGroup/SPIRV-Cross@bb0c17f8a893823bf35a32d9994f0e168de953d8 --- meson.build | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 94ee12feee4f1..8928efa08308c 100644 --- a/meson.build +++ b/meson.build @@ -991,8 +991,31 @@ if features['posix'] features += {'posix-shm': cc.has_function('shm_open', prefix: '#include ')} endif -spirv_cross = dependency('spirv-cross-c-shared', required: - get_option('spirv-cross').require(features['win32-desktop'])) +prefer_static = get_option('prefer_static') + +spirv_cross_deps = ['spirv-cross-c-shared'] +spirv_cross_required = get_option('spirv-cross').require(features['win32-desktop']).enabled() +spirv_cross_preferred_check_failed = false + +if prefer_static + spirv_cross_deps = ['spirv-cross-c'] + spirv_cross_deps +else + spirv_cross_deps += ['spirv-cross-c'] +endif + +foreach spirv_dep : spirv_cross_deps + spirv_cross = dependency( + spirv_dep, + required: spirv_cross_required and spirv_cross_preferred_check_failed + ) + if not spirv_cross.found() + spirv_cross_preferred_check_failed = true + continue + endif + + break +endforeach + features += {'spirv-cross': spirv_cross.found()} if features['spirv-cross'] dependencies += spirv_cross