name: Build GPCS4 on: push: branches: [ "master" ] pull_request: branches: [ "master" ] env: # Path to the solution file relative to the root of the project. SOLUTION_FILE_PATH: . VULKAN_SDK_PATH: C:\VulkanSDK VULKAN_SDK_VERSIOIN: 1.3.250.0 LLVM_PATH: C:\LLVM LLVM_VERSION: 16.0.6 permissions: contents: read jobs: build: runs-on: windows-latest steps: - name: Cache Vulkan SDK id: cache-vulkan-sdk uses: actions/cache@v3 with: path: "${{env.VULKAN_SDK_PATH}}" key: key-vulkan-sdk - name: Install Vulkan SDK if: ${{steps.cache-vulkan-sdk.outputs.cache-hit != 'true'}} run: | Invoke-WebRequest -Uri "https://sdk.lunarg.com/sdk/download/${{env.VULKAN_SDK_VERSIOIN}}/windows/VulkanSDK-${{env.VULKAN_SDK_VERSIOIN}}-Installer.exe" -OutFile VulkanSDK.exe $installer = Start-Process -FilePath VulkanSDK.exe -Wait -PassThru -ArgumentList @("--root ${{env.VULKAN_SDK_PATH}}\${{env.VULKAN_SDK_VERSIOIN}} --accept-licenses --default-answer --confirm-command install"); $installer.WaitForExit(); - name: Cache LLVM id: cache-llvm uses: actions/cache@v3 with: path: "${{env.LLVM_PATH}}" key: key-llvm - name: Install LLVM if: ${{steps.cache-llvm.outputs.cache-hit != 'true'}} run: | Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-${{env.LLVM_VERSION}}/LLVM-${{env.LLVM_VERSION}}-win64.exe" -OutFile LLVM.exe $installer = Start-Process -FilePath LLVM.exe -Wait -PassThru -ArgumentList @("/S /D=${{env.LLVM_PATH}}"); $installer.WaitForExit(); - name: Checkout code id: checkout-code uses: actions/checkout@v3 with: submodules: recursive - name: Setup clang-cl working-directory: ${{env.GITHUB_WORKSPACE}} # Fix a LLVM/VS bug which installs/checks wrong path. # Then write a Directory.build.props file to specify clang-cl path. run: | $lib_path="${{env.LLVM_PATH}}\lib\clang\16" if(Test-Path $lib_path) { Rename-Item -Path $lib_path -NewName "${{env.LLVM_VERSION}}" } Set-Content -Path .\Directory.build.props -Value "`n `n ${{env.LLVM_PATH}}`n ${{env.LLVM_VERSION}}`n `n" - name: Setup Vulkan SDK path run: | $vk_sdk="${{env.VULKAN_SDK_PATH}}\${{env.VULKAN_SDK_VERSIOIN}}" $vk_bin="$vk_sdk\Bin" "VULKAN_SDK=$vk_sdk" >> $env:GITHUB_ENV "$vk_bin" >> $env:GITHUB_PATH - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v1.3.1 with: msbuild-architecture: x64 - name: Build working-directory: ${{env.GITHUB_WORKSPACE}} # Add additional options to the MSBuild command line here (like platform or verbosity level). # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference run: | msbuild /m /p:Configuration=Debug /t:Rebuild ${{env.SOLUTION_FILE_PATH}} msbuild /m /p:Configuration=Release /t:Rebuild ${{env.SOLUTION_FILE_PATH}} - name: Setup git hash run: | $git_hash = @(git rev-parse --short HEAD) "GIT_HASH_SHORT=$git_hash" >> $env:GITHUB_ENV - name: Upload build files id: upload-artifacts uses: actions/upload-artifact@v3 with: name: gpcs4-${{ env.GIT_HASH_SHORT }} path: | x64 !x64/**/*.pdb !x64/**/*.lib if-no-files-found: error