mirror of
https://github.com/Inori/GPCS4.git
synced 2024-05-20 05:00:52 -04:00
116 lines
3.6 KiB
YAML
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
|