GPCS4/.github/workflows/build-windows.yml
2023-06-27 17:54:38 +08:00

116 lines
3.6 KiB
YAML

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 "<Project>`n <PropertyGroup>`n <LLVMInstallDir>${{env.LLVM_PATH}}</LLVMInstallDir>`n <LLVMToolsVersion>${{env.LLVM_VERSION}}</LLVMToolsVersion>`n </PropertyGroup>`n</Project>"
- 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