Skip to content

Commit 24ce77c

Browse files
committed
Update Vulkan SDK setup in CI workflow for Linux builds.
Enhance Vulkan SDK configuration by dynamically handling sysroot paths, setting explicit include and library directories, and refining CMake arguments, ensuring better compatibility and diagnostics.
1 parent 376c7ea commit 24ce77c

1 file changed

Lines changed: 48 additions & 8 deletions

File tree

.github/workflows/simple_engine_ci.yml

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,39 @@ jobs:
132132
exit 1
133133
fi
134134
135-
echo "VULKAN_SDK=$VULKAN_SDK_PATH" >> "$GITHUB_ENV"
136-
echo "$VULKAN_SDK_PATH/bin" >> "$GITHUB_PATH"
137-
echo "CMAKE_PREFIX_PATH=$VULKAN_SDK_PATH" >> "$GITHUB_ENV"
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/`.
137+
SDK_SYSROOT="$VULKAN_SDK_PATH"
138+
if [ -d "$VULKAN_SDK_PATH/x86_64" ]; then
139+
SDK_SYSROOT="$VULKAN_SDK_PATH/x86_64"
140+
fi
141+
142+
echo "VULKAN_SDK=$SDK_SYSROOT" >> "$GITHUB_ENV"
143+
echo "$SDK_SYSROOT/bin" >> "$GITHUB_PATH"
144+
echo "CMAKE_PREFIX_PATH=$SDK_SYSROOT" >> "$GITHUB_ENV"
145+
146+
# Force CMake's FindVulkan to use the SDK headers/libs instead of runner system headers.
147+
echo "Vulkan_INCLUDE_DIR=$SDK_SYSROOT/include" >> "$GITHUB_ENV"
148+
if [ -f "$SDK_SYSROOT/lib/libvulkan.so" ]; then
149+
echo "Vulkan_LIBRARY=$SDK_SYSROOT/lib/libvulkan.so" >> "$GITHUB_ENV"
150+
elif [ -f "$SDK_SYSROOT/lib/libvulkan.so.1" ]; then
151+
echo "Vulkan_LIBRARY=$SDK_SYSROOT/lib/libvulkan.so.1" >> "$GITHUB_ENV"
152+
fi
153+
154+
- name: Vulkan SDK diagnostics (Linux)
155+
if: runner.os == 'Linux'
156+
shell: bash
157+
run: |
158+
set -euo pipefail
159+
echo "VULKAN_SDK=$VULKAN_SDK"
160+
echo "Vulkan_INCLUDE_DIR=${Vulkan_INCLUDE_DIR:-}"
161+
echo "Vulkan_LIBRARY=${Vulkan_LIBRARY:-}"
162+
if [ -f "${VULKAN_SDK}/include/vulkan/vulkan.hpp" ]; then
163+
echo "Using SDK vulkan.hpp at: ${VULKAN_SDK}/include/vulkan/vulkan.hpp"
164+
head -n 5 "${VULKAN_SDK}/include/vulkan/vulkan.hpp" || true
165+
else
166+
echo "WARNING: SDK vulkan.hpp not found under ${VULKAN_SDK}/include/vulkan/vulkan.hpp" >&2
167+
fi
138168
139169
# Use the engine's dependency install scripts instead of calling vcpkg directly in CI.
140170
- name: Bootstrap vcpkg (Windows)
@@ -179,11 +209,21 @@ jobs:
179209
- name: Configure (Linux)
180210
if: runner.os == 'Linux'
181211
shell: bash
182-
run: >
183-
cmake -S . -B build -G Ninja
184-
-DCMAKE_BUILD_TYPE=Release
185-
-DCMAKE_C_COMPILER=clang
186-
-DCMAKE_CXX_COMPILER=clang++
212+
run: |
213+
set -euo pipefail
214+
extra_args=()
215+
if [ -n "${Vulkan_INCLUDE_DIR:-}" ]; then
216+
extra_args+=("-DVulkan_INCLUDE_DIR=${Vulkan_INCLUDE_DIR}")
217+
fi
218+
if [ -n "${Vulkan_LIBRARY:-}" ]; then
219+
extra_args+=("-DVulkan_LIBRARY=${Vulkan_LIBRARY}")
220+
fi
221+
222+
cmake -S . -B build -G Ninja \
223+
-DCMAKE_BUILD_TYPE=Release \
224+
-DCMAKE_C_COMPILER=clang \
225+
-DCMAKE_CXX_COMPILER=clang++ \
226+
"${extra_args[@]}"
187227
188228
- name: Build
189229
run: cmake --build build --target SimpleEngine --parallel 4

0 commit comments

Comments
 (0)