|
1 | 1 | #!/usr/bin/env bash |
2 | | -# Build the Vulkan toolchain (headers + loader + glslc) from pinned Khronos |
| 2 | +# Build the Vulkan toolchain (headers + SPIRV-Headers + loader + glslc) from pinned Khronos |
3 | 3 | # tags inside the manylinux_2_28 container, for the Linux cpu+vulkan provider |
4 | 4 | # wheel (cibuildwheel before-all hook; see [tool.cibuildwheel.linux] in the |
5 | 5 | # repo-root pyproject.toml). |
|
18 | 18 |
|
19 | 19 | set -euo pipefail |
20 | 20 |
|
21 | | -VULKAN_SDK_TAG="vulkan-sdk-1.4.350.0" # Vulkan-Headers + Vulkan-Loader |
| 21 | +VULKAN_SDK_TAG="vulkan-sdk-1.4.350.0" # Vulkan-Headers + SPIRV-Headers + Vulkan-Loader |
22 | 22 | SHADERC_TAG="v2026.2" # google/shaderc (glslc) |
23 | 23 |
|
24 | 24 | PREFIX=/usr/local |
@@ -53,6 +53,16 @@ cmake -S "$WORK/headers" -B "$WORK/headers/build" -G Ninja \ |
53 | 53 | -DCMAKE_INSTALL_PREFIX="$STAGE" >/dev/null |
54 | 54 | cmake --install "$WORK/headers/build" >/dev/null |
55 | 55 |
|
| 56 | +# 1b. SPIRV-Headers: header-only, seconds. ggml-vulkan's CMakeLists now does |
| 57 | +# find_package(SPIRV-Headers CONFIG REQUIRED) (added in the ggml v0.15.2 |
| 58 | +# sync), so the SPIRV-HeadersConfig.cmake must be on CMAKE_PREFIX_PATH. |
| 59 | +# Same Khronos vulkan-sdk-* tag as the Vulkan headers. |
| 60 | +git clone --quiet --depth 1 --branch "$VULKAN_SDK_TAG" \ |
| 61 | + https://github.com/KhronosGroup/SPIRV-Headers "$WORK/spirv-headers" |
| 62 | +cmake -S "$WORK/spirv-headers" -B "$WORK/spirv-headers/build" -G Ninja \ |
| 63 | + -DCMAKE_INSTALL_PREFIX="$STAGE" >/dev/null |
| 64 | +cmake --install "$WORK/spirv-headers/build" >/dev/null |
| 65 | + |
56 | 66 | # 2. Vulkan-Loader: link-time libvulkan.so for the ggml-vulkan module. WSI |
57 | 67 | # support off — compute-only linking, no X11/Wayland build deps. At |
58 | 68 | # runtime the wheel resolves the *system* loader (auditwheel --exclude |
|
0 commit comments