@@ -132,15 +132,28 @@ jobs:
132132 exit 1
133133 fi
134134
135- # Most LunarG tarballs have the actual sysroot under `x86_64/`.
136- # We want `VULKAN_SDK` to point at the directory that contains `include/`, `lib/`, `bin/`.
135+ # LunarG Linux tarballs commonly have:
136+ # - tools in: <version>/bin (often includes slangc)
137+ # - headers/libs in: <version>/x86_64/{include,lib}
138+ # We set VULKAN_SDK to the version root for tool discovery, and use VULKAN_SDK_SYSROOT
139+ # to point CMake's FindVulkan at the correct include/lib paths.
137140 SDK_SYSROOT="$VULKAN_SDK_PATH"
138141 if [ -d "$VULKAN_SDK_PATH/x86_64" ]; then
139142 SDK_SYSROOT="$VULKAN_SDK_PATH/x86_64"
140143 fi
141144
142- echo "VULKAN_SDK=$SDK_SYSROOT" >> "$GITHUB_ENV"
143- echo "$SDK_SYSROOT/bin" >> "$GITHUB_PATH"
145+ echo "VULKAN_SDK=$VULKAN_SDK_PATH" >> "$GITHUB_ENV"
146+ echo "VULKAN_SDK_SYSROOT=$SDK_SYSROOT" >> "$GITHUB_ENV"
147+
148+ # Ensure SDK tools are on PATH regardless of whether they're in <version>/bin or <version>/x86_64/bin.
149+ if [ -d "$VULKAN_SDK_PATH/bin" ]; then
150+ echo "$VULKAN_SDK_PATH/bin" >> "$GITHUB_PATH"
151+ fi
152+ if [ -d "$SDK_SYSROOT/bin" ]; then
153+ echo "$SDK_SYSROOT/bin" >> "$GITHUB_PATH"
154+ fi
155+
156+ # Prefer the sysroot for FindVulkan so we don't accidentally pick up runner system headers.
144157 echo "CMAKE_PREFIX_PATH=$SDK_SYSROOT" >> "$GITHUB_ENV"
145158
146159 # Force CMake's FindVulkan to use the SDK headers/libs instead of runner system headers.
@@ -151,19 +164,35 @@ jobs:
151164 echo "Vulkan_LIBRARY=$SDK_SYSROOT/lib/libvulkan.so.1" >> "$GITHUB_ENV"
152165 fi
153166
167+ # If slangc exists, capture its full path so we can pass it directly to CMake.
168+ if command -v slangc >/dev/null 2>&1; then
169+ echo "SLANGC_EXECUTABLE=$(command -v slangc)" >> "$GITHUB_ENV"
170+ fi
171+
154172 - name : Vulkan SDK diagnostics (Linux)
155173 if : runner.os == 'Linux'
156174 shell : bash
157175 run : |
158176 set -euo pipefail
159177 echo "VULKAN_SDK=$VULKAN_SDK"
178+ echo "VULKAN_SDK_SYSROOT=${VULKAN_SDK_SYSROOT:-}"
160179 echo "Vulkan_INCLUDE_DIR=${Vulkan_INCLUDE_DIR:-}"
161180 echo "Vulkan_LIBRARY=${Vulkan_LIBRARY:-}"
181+ echo "SLANGC_EXECUTABLE=${SLANGC_EXECUTABLE:-}"
182+ echo "PATH=$PATH"
183+ echo "which slangc: $(command -v slangc || echo 'NOT FOUND')"
184+ if command -v slangc >/dev/null 2>&1; then
185+ slangc --version || slangc --help || true
186+ fi
162187 if [ -f "${VULKAN_SDK}/include/vulkan/vulkan.hpp" ]; then
163188 echo "Using SDK vulkan.hpp at: ${VULKAN_SDK}/include/vulkan/vulkan.hpp"
164189 head -n 5 "${VULKAN_SDK}/include/vulkan/vulkan.hpp" || true
165190 else
166191 echo "WARNING: SDK vulkan.hpp not found under ${VULKAN_SDK}/include/vulkan/vulkan.hpp" >&2
192+ if [ -n "${VULKAN_SDK_SYSROOT:-}" ] && [ -f "${VULKAN_SDK_SYSROOT}/include/vulkan/vulkan.hpp" ]; then
193+ echo "Found sysroot vulkan.hpp at: ${VULKAN_SDK_SYSROOT}/include/vulkan/vulkan.hpp"
194+ head -n 5 "${VULKAN_SDK_SYSROOT}/include/vulkan/vulkan.hpp" || true
195+ fi
167196 fi
168197
169198 # Use the engine's dependency install scripts instead of calling vcpkg directly in CI.
@@ -218,6 +247,9 @@ jobs:
218247 if [ -n "${Vulkan_LIBRARY:-}" ]; then
219248 extra_args+=("-DVulkan_LIBRARY=${Vulkan_LIBRARY}")
220249 fi
250+ if [ -n "${SLANGC_EXECUTABLE:-}" ]; then
251+ extra_args+=("-DSLANGC_EXECUTABLE=${SLANGC_EXECUTABLE}")
252+ fi
221253
222254 cmake -S . -B build -G Ninja \
223255 -DCMAKE_BUILD_TYPE=Release \
0 commit comments