GPCS4/.github/workflows/build-windows.yml
2023-06-27 01:42:13 +08:00

95 lines
3.2 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: .
# Configuration type to build.
# You can convert this to a build matrix if you need coverage of multiple configuration types.
# https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
BUILD_CONFIGURATION: Release
VULKAN_SDK_PATH: C:\VulkanSDK
LLVM_PATH: C:\LLVM
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/1.3.250.0/windows/VulkanSDK-1.3.250.0-Installer.exe" -OutFile VulkanSDK.exe
$installer = Start-Process -FilePath VulkanSDK.exe -Wait -PassThru -ArgumentList @("--root ${{env.VULKAN_SDK_PATH}}\1.3.250.0 --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-16.0.6/LLVM-16.0.6-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 "16.0.6" }
Set-Content -Path .\Directory.build.props -Value "<Project>`n <PropertyGroup>`n <LLVMInstallDir>${{env.LLVM_PATH}}</LLVMInstallDir>`n <LLVMToolsVersion>16.0.6</LLVMToolsVersion>`n </PropertyGroup>`n</Project>"
- name: Setup Vulkan SDK path
run: |
$vk_sdk="${{env.VULKAN_SDK_PATH}}\1.3.250.0"
$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=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}