mirror of
https://github.com/cemu-project/Cemu.git
synced 2024-11-22 09:09:18 +01:00
199 lines
7.6 KiB
YAML
199 lines
7.6 KiB
YAML
|
name: Build Cemu
|
||
|
|
||
|
on:
|
||
|
pull_request_target:
|
||
|
types:
|
||
|
- opened
|
||
|
- synchronize
|
||
|
- reopened
|
||
|
push:
|
||
|
branches:
|
||
|
- main
|
||
|
workflow_call:
|
||
|
inputs:
|
||
|
deploymode:
|
||
|
required: false
|
||
|
type: string
|
||
|
|
||
|
env:
|
||
|
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
|
||
|
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
|
||
|
|
||
|
jobs:
|
||
|
build-ubuntu:
|
||
|
runs-on: ubuntu-20.04
|
||
|
env:
|
||
|
install_vulkan_folder: "$GITHUB_WORKSPACE/vulkan_sdk"
|
||
|
install_vulkan_version: "1.3.216.0"
|
||
|
steps:
|
||
|
- name: "Checkout repo"
|
||
|
uses: actions/checkout@v3
|
||
|
with:
|
||
|
submodules: "recursive"
|
||
|
|
||
|
- name: Setup release mode parameters (for deploy)
|
||
|
if: ${{ inputs.deploymode == 'release' }}
|
||
|
run: |
|
||
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||
|
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" >> $GITHUB_ENV
|
||
|
echo "Build mode is release"
|
||
|
|
||
|
- name: Setup debug mode parameters (for continous build)
|
||
|
if: ${{ inputs.deploymode != 'release' }}
|
||
|
run: |
|
||
|
echo "BUILD_MODE=debug" >> $GITHUB_ENV
|
||
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||
|
echo "Build mode is debug"
|
||
|
|
||
|
- name: "Install system dependencies"
|
||
|
run: |
|
||
|
sudo apt update -qq
|
||
|
sudo apt install -y ninja-build cmake libgtk-3-dev libsecret-1-dev libgcrypt20-dev libsystemd-dev freeglut3-dev clang-12 nasm
|
||
|
wget https://sdk.lunarg.com/sdk/download/${{ env.install_vulkan_version }}/linux/vulkansdk-linux-x86_64-${{ env.install_vulkan_version }}.tar.gz -q -O vulkansdk.tar.gz
|
||
|
mkdir -p "${{ env.install_vulkan_folder }}"
|
||
|
tar -xf vulkansdk.tar.gz --directory ${{ env.install_vulkan_folder }}
|
||
|
|
||
|
- name: "Bootstrap vcpkg"
|
||
|
run: |
|
||
|
export VULKAN_SDK="${{ env.install_vulkan_folder }}/${{ env.install_vulkan_version }}/x86_64"
|
||
|
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
||
|
|
||
|
- name: 'Setup NuGet Credentials for vcpkg'
|
||
|
shell: 'bash'
|
||
|
run: |
|
||
|
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
|
||
|
sources add \
|
||
|
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
||
|
-storepasswordincleartext \
|
||
|
-name "GitHub" \
|
||
|
-username "${{ github.repository_owner }}" \
|
||
|
-password "${{ secrets.GITHUB_TOKEN }}"
|
||
|
mono `./dependencies/vcpkg/vcpkg fetch nuget | tail -n 1` \
|
||
|
setapikey "${{ secrets.GITHUB_TOKEN }}" \
|
||
|
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
||
|
|
||
|
- name: "cmake"
|
||
|
run: |
|
||
|
export VULKAN_SDK="${{ env.install_vulkan_folder }}/${{ env.install_vulkan_version }}/x86_64"
|
||
|
mkdir -p build
|
||
|
cd build
|
||
|
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
||
|
|
||
|
- name: "Build Cemu"
|
||
|
run: |
|
||
|
cd build
|
||
|
ninja
|
||
|
|
||
|
- name: Upload artifact
|
||
|
uses: actions/upload-artifact@v3
|
||
|
if: ${{ inputs.deploymode == 'release' }}
|
||
|
with:
|
||
|
name: cemu-bin-linux-x64
|
||
|
path: ./bin/Cemu
|
||
|
|
||
|
|
||
|
build-windows:
|
||
|
runs-on: windows-2022
|
||
|
env:
|
||
|
install_vulkan_folder: "$GITHUB_WORKSPACE/vulkan_sdk"
|
||
|
install_vulkan_version: "1.3.216.0"
|
||
|
steps:
|
||
|
- name: "Checkout repo"
|
||
|
uses: actions/checkout@v3
|
||
|
with:
|
||
|
submodules: "recursive"
|
||
|
|
||
|
- name: Setup release mode parameters (for deploy)
|
||
|
if: ${{ inputs.deploymode == 'release' }}
|
||
|
run: |
|
||
|
echo "BUILD_MODE=release" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||
|
echo "BUILD_FLAGS=-DPUBLIC_RELEASE=ON" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||
|
echo "Build mode is release"
|
||
|
|
||
|
- name: Setup debug mode parameters (for continous build)
|
||
|
if: ${{ inputs.deploymode != 'release' }}
|
||
|
run: |
|
||
|
echo "BUILD_MODE=debug" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||
|
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||
|
echo "Build mode is debug"
|
||
|
|
||
|
- name: Prepare Vulkan SDK
|
||
|
uses: humbletim/setup-vulkan-sdk@v1.2.0
|
||
|
with:
|
||
|
vulkan-query-version: 1.3.216.0
|
||
|
vulkan-components: Vulkan-Headers, Vulkan-Loader
|
||
|
vulkan-use-cache: false
|
||
|
|
||
|
- name: Workaround
|
||
|
run: |
|
||
|
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
|
||
|
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
|
||
|
$componentsToRemove= @(
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ARM64.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.x86.x64.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.ATL.ARM64.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM.Spectre"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64"
|
||
|
"Microsoft.VisualStudio.Component.VC.14.32.17.2.MFC.ARM64.Spectre"
|
||
|
)
|
||
|
[string]$workloadArgs = $componentsToRemove | ForEach-Object {" --remove " + $_}
|
||
|
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
|
||
|
# should be run twice
|
||
|
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
|
||
|
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
|
||
|
|
||
|
- name: Configure MSVC
|
||
|
uses: ilammy/msvc-dev-cmd@v1
|
||
|
with:
|
||
|
arch: amd64
|
||
|
toolset: 14.33.31629
|
||
|
spectre: false
|
||
|
|
||
|
- name: "Bootstrap vcpkg"
|
||
|
run: |
|
||
|
./dependencies/vcpkg/bootstrap-vcpkg.bat
|
||
|
|
||
|
- name: 'Setup NuGet Credentials for vcpkg'
|
||
|
shell: 'bash'
|
||
|
run: |
|
||
|
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
|
||
|
sources add \
|
||
|
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
||
|
-storepasswordincleartext \
|
||
|
-name "GitHub" \
|
||
|
-username "${{ github.repository_owner }}" \
|
||
|
-password "${{ secrets.GITHUB_TOKEN }}"
|
||
|
`./dependencies/vcpkg/vcpkg.exe fetch nuget | tail -n 1` \
|
||
|
setapikey "${{ secrets.GITHUB_TOKEN }}" \
|
||
|
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
||
|
|
||
|
- name: "cmake"
|
||
|
run: |
|
||
|
mkdir -p build
|
||
|
cd build
|
||
|
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }}
|
||
|
|
||
|
- name: "Build Cemu"
|
||
|
run: |
|
||
|
cd build
|
||
|
cmake --build . --config ${{ env.BUILD_MODE }} -j 2
|
||
|
|
||
|
- name: Upload artifact
|
||
|
uses: actions/upload-artifact@v3
|
||
|
if: ${{ inputs.deploymode == 'release' }}
|
||
|
with:
|
||
|
name: cemu-bin-windows-x64
|
||
|
path: ./bin/Cemu.exe
|