Skip to content

Commit 0350198

Browse files
committed
meson: support both pkg-config files installed by SPIRV-Cross
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@bb0c17f
1 parent 77dee9b commit 0350198

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

meson.build

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -991,9 +991,32 @@ if features['posix']
991991
features += {'posix-shm': cc.has_function('shm_open', prefix: '#include <sys/mman.h>')}
992992
endif
993993

994-
spirv_cross = dependency('spirv-cross-c-shared', required:
995-
get_option('spirv-cross').require(features['win32-desktop']))
996-
features += {'spirv-cross': spirv_cross.found()}
994+
prefer_static = get_option('prefer_static')
995+
996+
spirv_cross_deps = ['spirv-cross-c-shared']
997+
spirv_cross_required = get_option('spirv-cross').require(features['win32-desktop']).enabled()
998+
spirv_cross_preferred_check_failed = false
999+
1000+
if prefer_static
1001+
spirv_cross_deps = ['spirv-cross-c'] + spirv_cross_deps
1002+
else
1003+
spirv_cross_deps += ['spirv-cross-c']
1004+
endif
1005+
1006+
foreach spirv_dep : spirv_cross_deps
1007+
spirv_cross = dependency(
1008+
spirv_dep,
1009+
required: spirv_cross_required and spirv_cross_preferred_check_failed
1010+
)
1011+
if not spirv_cross.found()
1012+
spirv_cross_preferred_check_failed = true
1013+
continue
1014+
endif
1015+
1016+
features += {'spirv-cross': spirv_cross.found()}
1017+
break
1018+
endforeach
1019+
9971020
if features['spirv-cross']
9981021
dependencies += spirv_cross
9991022
endif

0 commit comments

Comments
 (0)