mirror of
https://github.com/libretro/parallel-gx2.git
synced 2026-11-07 04:25:58 -10:00
build.yml pushed every vcpkg artifact it built to this fork's GitHub Packages - 537 of them, none of which anything here reads: the libretro core build in libretro.yml has its own dependency handling and never looks at the nuget source. Upstream wants the cache because its own CI builds the standalone app on three platforms; a fork that does not run that pipeline only accumulates packages.
303 lines
10 KiB
YAML
303 lines
10 KiB
YAML
name: Build Cemu
|
||
|
||
on:
|
||
workflow_call:
|
||
inputs:
|
||
next_version_major:
|
||
required: false
|
||
type: string
|
||
next_version_minor:
|
||
required: false
|
||
type: string
|
||
|
||
env:
|
||
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
|
||
# No nuget binary cache: this fork does not publish packages, and the one it
|
||
# had was 537 vcpkg artifacts nothing here reads - the libretro core build in
|
||
# libretro.yml does not use it.
|
||
VCPKG_BINARY_SOURCES: 'clear'
|
||
VCPKG_FORCE_DOWNLOADED_BINARIES: true
|
||
|
||
jobs:
|
||
build-ubuntu:
|
||
continue-on-error: true
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
include:
|
||
- os: ubuntu-22.04
|
||
arch: x64
|
||
- os: ubuntu-22.04-arm
|
||
arch: arm
|
||
|
||
name: build-ubuntu-${{ matrix.arch }}
|
||
runs-on: ${{ matrix.os }}
|
||
steps:
|
||
- name: "Checkout repo"
|
||
uses: actions/checkout@v6
|
||
with:
|
||
submodules: "recursive"
|
||
fetch-depth: 0
|
||
|
||
- name: Setup release mode parameters
|
||
run: |
|
||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||
echo "Build mode is release"
|
||
|
||
- name: Setup build flags for version
|
||
if: ${{ inputs.next_version_major != '' }}
|
||
run: |
|
||
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
||
|
||
- name: "Install system dependencies"
|
||
run: |
|
||
sudo apt update -qq
|
||
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev libudev-dev nasm ninja-build libbluetooth-dev
|
||
|
||
- name: "Bootstrap vcpkg"
|
||
run: |
|
||
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: |
|
||
cmake -S . -B build ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DCMAKE_C_COMPILER=/usr/bin/clang-15 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-15 -G Ninja -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja
|
||
|
||
- name: "Build Cemu"
|
||
run: |
|
||
cmake --build build
|
||
|
||
- name: Prepare artifact
|
||
run: mv bin/Cemu_release bin/Cemu
|
||
|
||
- name: Upload artifact
|
||
uses: actions/upload-artifact@v6
|
||
with:
|
||
name: cemu-bin-linux-${{ matrix.arch }}
|
||
path: ./bin/Cemu
|
||
|
||
build-appimage:
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
include:
|
||
- os: ubuntu-22.04
|
||
arch: x64
|
||
- os: ubuntu-22.04-arm
|
||
arch: arm
|
||
|
||
name: build-appimage-${{ matrix.arch }}
|
||
runs-on: ${{ matrix.os }}
|
||
needs: build-ubuntu
|
||
steps:
|
||
- name: Checkout Upstream Repo
|
||
uses: actions/checkout@v6
|
||
|
||
- uses: actions/download-artifact@v8
|
||
with:
|
||
name: cemu-bin-linux-${{ matrix.arch }}
|
||
path: bin
|
||
|
||
- name: "Install system dependencies"
|
||
run: |
|
||
sudo apt update -qq
|
||
sudo apt install -y clang-15 cmake freeglut3-dev libgcrypt20-dev libglm-dev libgtk-3-dev libpulse-dev libsecret-1-dev libsystemd-dev nasm ninja-build appstream libbluetooth-dev
|
||
|
||
- name: "Build AppImage"
|
||
run: |
|
||
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
|
||
export DEPLOY_GTK_VERSION=3
|
||
dist/linux/appimage.sh ${{ runner.arch }}
|
||
|
||
- name: Upload artifact
|
||
uses: actions/upload-artifact@v6
|
||
with:
|
||
name: cemu-appimage-${{ matrix.arch }}
|
||
path: artifacts
|
||
|
||
build-windows:
|
||
runs-on: windows-2022
|
||
steps:
|
||
- name: "Checkout repo"
|
||
uses: actions/checkout@v6
|
||
with:
|
||
submodules: "recursive"
|
||
|
||
- name: Setup release mode parameters
|
||
run: |
|
||
echo "BUILD_MODE=release" | 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 release"
|
||
|
||
- name: Setup build flags for version
|
||
if: ${{ inputs.next_version_major != '' }}
|
||
run: |
|
||
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||
|
||
- name: "Setup cmake"
|
||
uses: jwlawson/actions-setup-cmake@v2
|
||
with:
|
||
cmake-version: '3.29.0'
|
||
|
||
- 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
|
||
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
|
||
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
|
||
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
|
||
|
||
- name: "Build Cemu"
|
||
run: |
|
||
cd build
|
||
cmake --build . --config ${{ env.BUILD_MODE }}
|
||
|
||
- name: Prepare artifact
|
||
run: Rename-Item bin/Cemu_release.exe Cemu.exe
|
||
|
||
- name: Build NSIS Installer
|
||
shell: cmd
|
||
run: |
|
||
cd src\resource
|
||
makensis /DPRODUCT_VERSION=${{ inputs.next_version_major }}.${{ inputs.next_version_minor }} installer.nsi
|
||
|
||
- name: Upload artifact
|
||
uses: actions/upload-artifact@v6
|
||
with:
|
||
name: cemu-bin-windows-x64
|
||
path: ./bin/Cemu.exe
|
||
|
||
- name: Upload NSIS Installer
|
||
uses: actions/upload-artifact@v6
|
||
with:
|
||
name: cemu-installer-windows-x64
|
||
path: ./src/resource/cemu-${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}-windows-x64-installer.exe
|
||
|
||
build-macos:
|
||
runs-on: macos-14
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
arch: [x86_64, arm64]
|
||
steps:
|
||
- name: "Checkout repo"
|
||
uses: actions/checkout@v6
|
||
with:
|
||
submodules: "recursive"
|
||
|
||
- name: Setup release mode parameters
|
||
run: |
|
||
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
||
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
||
echo "Build mode is release"
|
||
|
||
- name: Setup build flags for version
|
||
if: ${{ inputs.next_version_major != '' }}
|
||
run: |
|
||
echo "[INFO] Version ${{ inputs.next_version_major }}.${{ inputs.next_version_minor }}"
|
||
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEMULATOR_VERSION_MAJOR=${{ inputs.next_version_major }} -DEMULATOR_VERSION_MINOR=${{ inputs.next_version_minor }}" >> $GITHUB_ENV
|
||
|
||
- name: "Install system dependencies"
|
||
run: |
|
||
# Removing azure/bicep and aws to silence warnings in Github Actions
|
||
brew uninstall bicep
|
||
brew untap aws/tap azure/bicep
|
||
brew update
|
||
brew install nasm automake libtool
|
||
|
||
- name: "Install molten-vk"
|
||
run: |
|
||
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
|
||
tar xf MoltenVK-macos-privateapi.tar
|
||
sudo mkdir -p /usr/local/lib
|
||
sudo cp MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib /usr/local/lib
|
||
|
||
- name: "Setup cmake"
|
||
uses: jwlawson/actions-setup-cmake@v2
|
||
with:
|
||
cmake-version: '3.29.0'
|
||
|
||
- name: "Bootstrap vcpkg"
|
||
run: |
|
||
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: |
|
||
mkdir build
|
||
cd build
|
||
cmake .. ${{ env.BUILD_FLAGS }} \
|
||
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
|
||
-DCMAKE_OSX_ARCHITECTURES=${{ matrix.arch }} \
|
||
-DMACOS_BUNDLE=ON \
|
||
-G Ninja
|
||
|
||
- name: "Build Cemu"
|
||
run: |
|
||
cmake --build build
|
||
|
||
- name: Prepare artifact
|
||
run: |
|
||
mkdir bin/Cemu_app
|
||
mv bin/Cemu_release.app bin/Cemu_app/Cemu.app
|
||
mv bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu_release bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
|
||
sed -i '' 's/Cemu_release/Cemu/g' bin/Cemu_app/Cemu.app/Contents/Info.plist
|
||
codesign --entitlements ${{github.workspace}}/src/resource/cemu.macos.entitlements --force --deep --preserve-metadata=entitlements,requirements,flags,runtime --sign - --timestamp --options runtime bin/Cemu_app/Cemu.app/Contents/MacOS/Cemu
|
||
ln -s /Applications bin/Cemu_app/Applications
|
||
hdiutil create ./bin/tmp.dmg -ov -volname "Cemu" -fs HFS+ -srcfolder "./bin/Cemu_app"
|
||
hdiutil convert ./bin/tmp.dmg -format UDZO -o bin/Cemu.dmg
|
||
rm bin/tmp.dmg
|
||
|
||
- name: Upload artifact
|
||
uses: actions/upload-artifact@v6
|
||
with:
|
||
name: cemu-bin-macos-${{ matrix.arch }}
|
||
path: ./bin/Cemu.dmg
|