Skip to content

Commit c9f7771

Browse files
committed
Refactor Vulkan SDK installation steps across platforms for better reliability and clarity
1 parent 7ecee14 commit c9f7771

File tree

1 file changed

+84
-21
lines changed

1 file changed

+84
-21
lines changed

.github/workflows/workflow.yml

Lines changed: 84 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,26 @@ jobs:
1717
vulkan-install: |
1818
# Download and install Vulkan SDK using the tar.gz method
1919
VULKAN_VERSION=$(curl -s https://vulkan.lunarg.com/sdk/latest/linux.txt)
20-
curl -O https://sdk.lunarg.com/sdk/download/$VULKAN_VERSION/linux/vulkansdk-linux-x86_64-$VULKAN_VERSION.tar.gz
21-
tar xf vulkansdk-linux-x86_64-$VULKAN_VERSION.tar.gz
22-
cd $VULKAN_VERSION
23-
./vulkansdk
20+
echo "Using Vulkan SDK version: $VULKAN_VERSION"
21+
22+
# Create a temporary directory for the SDK
23+
mkdir -p vulkan-sdk
24+
cd vulkan-sdk
25+
26+
# Download the SDK
27+
curl -O "https://sdk.lunarg.com/sdk/download/$VULKAN_VERSION/linux/vulkansdk-linux-x86_64-$VULKAN_VERSION.tar.gz"
28+
29+
# Extract the SDK
30+
tar xzf vulkansdk-linux-x86_64-$VULKAN_VERSION.tar.gz
31+
2432
# Set up environment variables
2533
echo "VULKAN_SDK=$PWD/$VULKAN_VERSION/x86_64" >> $GITHUB_ENV
2634
echo "PATH=$PWD/$VULKAN_VERSION/x86_64/bin:$PATH" >> $GITHUB_ENV
2735
echo "LD_LIBRARY_PATH=$PWD/$VULKAN_VERSION/x86_64/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
2836
echo "VK_LAYER_PATH=$PWD/$VULKAN_VERSION/x86_64/etc/vulkan/explicit_layer.d" >> $GITHUB_ENV
37+
38+
# Return to the original directory
39+
cd ..
2940
deps-install: |
3041
sudo apt-get update
3142
sudo apt-get install -y \
@@ -64,17 +75,42 @@ jobs:
6475
fi
6576
- os: windows-latest
6677
vulkan-install: |
78+
# Download the Vulkan SDK installer
6779
Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-sdk.exe" -OutFile "$env:TEMP\vulkan-sdk.exe"
68-
Start-Process -FilePath "$env:TEMP\vulkan-sdk.exe" -ArgumentList "--accept-licenses --default-answer --confirm-command install" -Wait
80+
81+
# Run the installer with silent options
82+
Start-Process -FilePath "$env:TEMP\vulkan-sdk.exe" -ArgumentList "--accept-licenses --default-answer --confirm-command install" -Wait -NoNewWindow
83+
84+
# Find the actual installed SDK version
85+
$vulkanPath = Get-ChildItem "C:\VulkanSDK" | Sort-Object -Property Name -Descending | Select-Object -First 1 -ExpandProperty FullName
86+
87+
if (-not $vulkanPath) {
88+
$vulkanPath = "C:\VulkanSDK\latest"
89+
}
90+
6991
# Set environment variables with correct Windows-style paths
70-
$vulkanPath = "C:\VulkanSDK\latest"
71-
echo "VULKAN_SDK=$vulkanPath" >> $env:GITHUB_ENV
92+
echo "VULKAN_SDK=$vulkanPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
93+
7294
# Add Vulkan SDK to system PATH
73-
echo "$vulkanPath\Bin" >> $env:GITHUB_PATH
95+
echo "$vulkanPath\Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
96+
7497
# Set explicit CMake variables
75-
echo "CMAKE_PREFIX_PATH=$vulkanPath" >> $env:GITHUB_ENV
76-
echo "Vulkan_INCLUDE_DIR=$vulkanPath\Include" >> $env:GITHUB_ENV
77-
echo "Vulkan_LIBRARY=$vulkanPath\Lib\vulkan-1.lib" >> $env:GITHUB_ENV
98+
echo "CMAKE_PREFIX_PATH=$vulkanPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
99+
echo "Vulkan_INCLUDE_DIR=$vulkanPath\Include" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
100+
echo "Vulkan_LIBRARY=$vulkanPath\Lib\vulkan-1.lib" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
101+
102+
# Display debug information
103+
Write-Host "Vulkan SDK path: $vulkanPath"
104+
if (Test-Path "$vulkanPath\Lib") {
105+
Write-Host "Lib directory exists"
106+
} else {
107+
Write-Host "Lib directory does not exist"
108+
}
109+
if (Test-Path "$vulkanPath\Include") {
110+
Write-Host "Include directory exists"
111+
} else {
112+
Write-Host "Include directory does not exist"
113+
}
78114
deps-install: |
79115
vcpkg install glfw3:x64-windows glm:x64-windows tinyobjloader:x64-windows stb:x64-windows
80116
echo "CMAKE_TOOLCHAIN_FILE=$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake" >> $env:GITHUB_ENV
@@ -102,23 +138,42 @@ jobs:
102138
}
103139
- os: macos-latest
104140
vulkan-install: |
141+
# Install MoltenVK (Vulkan implementation for macOS)
105142
brew install molten-vk
106-
curl -L -o vulkansdk.dmg "https://sdk.lunarg.com/sdk/download/latest/mac/vulkan-sdk.dmg"
107-
hdiutil attach vulkansdk.dmg
108-
sudo /Volumes/vulkansdk/InstallVulkan.app/Contents/MacOS/InstallVulkan --accept-licenses --default-answer --confirm-command install
109-
hdiutil detach /Volumes/vulkansdk
143+
144+
# Get the latest SDK version
145+
VULKAN_VERSION=$(curl -s https://vulkan.lunarg.com/sdk/latest/mac.txt)
146+
echo "Using Vulkan SDK version: $VULKAN_VERSION"
147+
148+
# Create a temporary directory for the SDK
149+
mkdir -p vulkan-sdk
150+
cd vulkan-sdk
151+
152+
# Download and extract the SDK tarball instead of using DMG
153+
curl -L -o vulkansdk.tar.gz "https://sdk.lunarg.com/sdk/download/$VULKAN_VERSION/mac/vulkansdk-macos-$VULKAN_VERSION.tar.gz"
154+
tar -xzf vulkansdk.tar.gz
155+
156+
# Set environment variables
157+
echo "VULKAN_SDK=$PWD/vulkansdk-macos-$VULKAN_VERSION/macOS" >> $GITHUB_ENV
158+
echo "PATH=$PWD/vulkansdk-macos-$VULKAN_VERSION/macOS/bin:$PATH" >> $GITHUB_ENV
159+
echo "DYLD_LIBRARY_PATH=$PWD/vulkansdk-macos-$VULKAN_VERSION/macOS/lib:$DYLD_LIBRARY_PATH" >> $GITHUB_ENV
160+
echo "VK_LAYER_PATH=$PWD/vulkansdk-macos-$VULKAN_VERSION/macOS/share/vulkan/explicit_layer.d" >> $GITHUB_ENV
161+
echo "VK_ICD_FILENAMES=$PWD/vulkansdk-macos-$VULKAN_VERSION/macOS/share/vulkan/icd.d/MoltenVK_icd.json" >> $GITHUB_ENV
162+
163+
# Return to the original directory
164+
cd ..
110165
deps-install: |
111166
# Install available packages through brew
112167
brew install glfw glm
113-
168+
114169
# Install tinyobjloader from source
115170
git clone https://github.com/tinyobjloader/tinyobjloader.git
116171
cd tinyobjloader
117172
cmake -B build -DCMAKE_BUILD_TYPE=Release
118173
cmake --build build --config Release
119174
sudo cmake --install build
120175
cd ..
121-
176+
122177
# Install stb headers
123178
git clone https://github.com/nothings/stb.git
124179
sudo mkdir -p /usr/local/include/stb
@@ -184,17 +239,25 @@ jobs:
184239
exit 1
185240
}
186241
187-
- name: Configure CMake
242+
- name: Configure CMake (Windows)
188243
working-directory: ${{github.workspace}}/attachments
244+
if: runner.os == 'Windows'
189245
run: |
190246
cmake -B build -DCMAKE_BUILD_TYPE=Release `
191247
-DVulkan_INCLUDE_DIR="$env:Vulkan_INCLUDE_DIR" `
192248
-DVulkan_LIBRARY="$env:Vulkan_LIBRARY" `
193-
-DCMAKE_PREFIX_PATH="$env:VULKAN_SDK"
194-
if: runner.os == 'Windows'
249+
-DCMAKE_PREFIX_PATH="$env:VULKAN_SDK" `
250+
-DCMAKE_TOOLCHAIN_FILE="$env:CMAKE_TOOLCHAIN_FILE"
251+
252+
# Display CMake cache to debug Vulkan detection
253+
if (Test-Path "build/CMakeCache.txt") {
254+
Write-Host "CMake cache contents:"
255+
Get-Content "build/CMakeCache.txt" | Select-String -Pattern "Vulkan"
256+
}
195257
196-
- name: Configure CMake
258+
- name: Configure CMake (Unix)
197259
working-directory: ${{github.workspace}}/attachments
260+
if: runner.os != 'Windows'
198261
run: cmake -B build -DCMAKE_BUILD_TYPE=Release
199262

200263
- name: Build

0 commit comments

Comments
 (0)