mirror of https://github.com/PCSX2/pcsx2.git
143 lines
4.4 KiB
YAML
143 lines
4.4 KiB
YAML
name: Windows Build Steps - Qt
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
jobName:
|
|
required: true
|
|
type: string
|
|
os:
|
|
required: false
|
|
type: string
|
|
default: windows-2022
|
|
platform:
|
|
required: false
|
|
type: string
|
|
default: x64
|
|
configuration:
|
|
required: true
|
|
type: string
|
|
simd:
|
|
required: false
|
|
type: string
|
|
default: AVX2
|
|
buildSystem:
|
|
required: false
|
|
type: string
|
|
default: msbuild
|
|
cmakeFlags:
|
|
required: false
|
|
type: string
|
|
default: ""
|
|
patchesUrl:
|
|
required: false
|
|
type: string
|
|
default: https://github.com/PCSX2/pcsx2_patches/releases/latest/download
|
|
fetchTags:
|
|
required: false
|
|
type: boolean
|
|
default: false
|
|
|
|
jobs:
|
|
build_windows_qt:
|
|
name: ${{ inputs.jobName }}
|
|
runs-on: ${{ inputs.os }}
|
|
# Set some sort of timeout in the event of run-away builds. We are limited on concurrent jobs so, get rid of them.
|
|
timeout-minutes: 90
|
|
env:
|
|
POWERSHELL_TELEMETRY_OPTOUT: 1
|
|
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
# actions/checkout elides tags, fetch them primarily for releases
|
|
- name: Fetch Tags
|
|
if: ${{ inputs.fetchTags }}
|
|
run: git fetch --tags --no-recurse-submodules
|
|
|
|
- name: Prepare Artifact Metadata
|
|
id: artifact-metadata
|
|
shell: bash
|
|
env:
|
|
OS: windows
|
|
BUILD_SYSTEM: ${{ inputs.buildSystem }}
|
|
ARCH: ${{ inputs.platform }}
|
|
SIMD: ${{ inputs.simd }}
|
|
EVENT_NAME: ${{ github.event_name }}
|
|
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
PR_NUM: ${{ github.event.pull_request.number }}
|
|
PR_SHA: ${{ github.event.pull_request.head.sha }}
|
|
run: ./.github/workflows/scripts/common/name-artifacts.sh
|
|
|
|
- name: Setup msbuild
|
|
if: inputs.configuration != 'CMake'
|
|
uses: microsoft/setup-msbuild@v1
|
|
|
|
- name: Download patches
|
|
shell: cmd
|
|
run: |
|
|
cd bin/resources
|
|
aria2c -Z "${{ inputs.patchesUrl }}/patches.zip"
|
|
|
|
- name: Cache Dependencies
|
|
id: cache-deps
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: deps
|
|
key: ${{ inputs.os }} ${{ inputs.platform }} deps ${{ hashFiles('.github/workflows/scripts/windows/build-dependencies.bat') }}
|
|
|
|
- name: Build Dependencies
|
|
if: steps.cache-deps.outputs.cache-hit != 'true'
|
|
env:
|
|
DEBUG: 0
|
|
run: .github/workflows/scripts/windows/build-dependencies.bat
|
|
|
|
- name: Generate CMake
|
|
if: inputs.configuration == 'CMake'
|
|
id: cmake
|
|
shell: cmd
|
|
run: |
|
|
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
cmake . -B build ${{ inputs.cmakeFlags }} "-DCMAKE_PREFIX_PATH=%cd%\deps" -DQT_BUILD=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DDISABLE_ADVANCE_SIMD=ON -G Ninja
|
|
|
|
- name: Build PCSX2
|
|
shell: cmd
|
|
run: |
|
|
if "${{ inputs.configuration }}"=="CMake" (
|
|
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
cmake --build build --config Release || exit /b
|
|
cmake --install build --config Release || exit /b
|
|
) else (
|
|
msbuild "PCSX2_qt.sln" /m /v:m /p:Configuration="${{ inputs.configuration }}" /p:Platform="${{ inputs.platform }}"
|
|
)
|
|
|
|
- name: Run Tests
|
|
if: inputs.configuration == 'CMake'
|
|
shell: cmd
|
|
run: |
|
|
call "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
|
|
cmake --build build --config Release --target unittests
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.artifact-metadata.outputs.artifact-name }}
|
|
path: |
|
|
./bin
|
|
!./bin/**/*.bsc
|
|
!./bin/**/*.exp
|
|
!./bin/**/*.ilk
|
|
!./bin/**/*.iobj
|
|
!./bin/**/*.ipdb
|
|
!./bin/**/*.pdb
|
|
!./bin/**/*.lib
|
|
|
|
- name: Upload artifact - with symbols
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.artifact-metadata.outputs.artifact-name }}-symbols
|
|
path: ./bin/**/*.pdb
|