Skip to content

Commit ba1cbd7

Browse files
committed
Refine Vulkan SDK setup in Linux CI workflow: introduce sysroot separation, enhance environment variable handling, improve tool detection, and add support for slangc in CMake configuration.
1 parent 24ce77c commit ba1cbd7

File tree

1 file changed

+36
-4
lines changed

1 file changed

+36
-4
lines changed

.github/workflows/simple_engine_ci.yml

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)