2022-08-22 22:21:23 +02:00
|
|
|
name: Build Cemu
|
|
|
|
|
|
|
|
on:
|
|
|
|
workflow_call:
|
|
|
|
inputs:
|
|
|
|
deploymode:
|
|
|
|
required: false
|
|
|
|
type: string
|
2022-08-31 12:04:09 +02:00
|
|
|
experimentalversion:
|
|
|
|
required: false
|
|
|
|
type: string
|
2022-08-22 22:21:23 +02:00
|
|
|
|
|
|
|
env:
|
|
|
|
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg"
|
|
|
|
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
build-ubuntu:
|
2023-09-29 17:17:28 +02:00
|
|
|
runs-on: ubuntu-22.04
|
2022-08-22 22:21:23 +02:00
|
|
|
steps:
|
|
|
|
- name: "Checkout repo"
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/checkout@v4
|
2022-08-22 22:21:23 +02:00
|
|
|
with:
|
|
|
|
submodules: "recursive"
|
2023-03-28 18:29:30 +02:00
|
|
|
fetch-depth: 0
|
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- name: Setup release mode parameters (for deploy)
|
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
run: |
|
|
|
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
2022-09-24 08:43:27 +02:00
|
|
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
2022-08-22 22:21:23 +02:00
|
|
|
echo "Build mode is release"
|
2022-11-04 15:07:17 +01:00
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- 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"
|
2022-11-04 15:07:17 +01:00
|
|
|
|
2022-08-31 12:04:09 +02:00
|
|
|
- name: Setup version for experimental
|
|
|
|
if: ${{ inputs.experimentalversion != '' }}
|
|
|
|
run: |
|
|
|
|
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
|
|
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
|
2022-11-04 15:07:17 +01:00
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- name: "Install system dependencies"
|
|
|
|
run: |
|
|
|
|
sudo apt update -qq
|
2023-09-29 17:17:28 +02:00
|
|
|
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
|
2022-11-04 15:07:17 +01:00
|
|
|
|
2024-04-11 03:06:36 +02:00
|
|
|
- name: "Setup cmake"
|
|
|
|
uses: jwlawson/actions-setup-cmake@v2
|
|
|
|
with:
|
|
|
|
cmake-version: '3.29.0'
|
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- name: "Bootstrap vcpkg"
|
|
|
|
run: |
|
|
|
|
bash ./dependencies/vcpkg/bootstrap-vcpkg.sh
|
2022-11-04 15:07:17 +01:00
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- 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: |
|
2024-02-18 05:54:41 +01:00
|
|
|
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
|
2022-08-22 22:21:23 +02:00
|
|
|
|
|
|
|
- name: "Build Cemu"
|
|
|
|
run: |
|
2022-11-04 15:07:17 +01:00
|
|
|
cmake --build build
|
|
|
|
|
2022-09-04 22:23:24 +02:00
|
|
|
- name: Prepare artifact
|
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
run: mv bin/Cemu_release bin/Cemu
|
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- name: Upload artifact
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/upload-artifact@v4
|
2022-08-22 22:21:23 +02:00
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
with:
|
|
|
|
name: cemu-bin-linux-x64
|
|
|
|
path: ./bin/Cemu
|
2022-11-04 15:07:17 +01:00
|
|
|
|
|
|
|
build-appimage:
|
2023-09-29 17:17:28 +02:00
|
|
|
runs-on: ubuntu-22.04
|
2022-11-04 15:07:17 +01:00
|
|
|
needs: build-ubuntu
|
|
|
|
steps:
|
|
|
|
- name: Checkout Upstream Repo
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/checkout@v4
|
2022-11-04 15:07:17 +01:00
|
|
|
|
2024-05-05 01:34:36 +02:00
|
|
|
- uses: actions/download-artifact@v4
|
2022-11-04 15:07:17 +01:00
|
|
|
with:
|
|
|
|
name: cemu-bin-linux-x64
|
|
|
|
path: bin
|
|
|
|
|
|
|
|
- name: "Install system dependencies"
|
|
|
|
run: |
|
|
|
|
sudo apt update -qq
|
2023-09-29 17:17:28 +02:00
|
|
|
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
|
2022-11-04 15:07:17 +01:00
|
|
|
|
|
|
|
- name: "Build AppImage"
|
2023-04-15 12:21:08 +02:00
|
|
|
run: |
|
|
|
|
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
|
|
|
|
export DEPLOY_GTK_VERSION=3
|
|
|
|
dist/linux/appimage.sh
|
2022-11-04 15:07:17 +01:00
|
|
|
|
|
|
|
- name: Upload artifact
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/upload-artifact@v4
|
2022-11-04 15:07:17 +01:00
|
|
|
with:
|
|
|
|
name: cemu-appimage-x64
|
|
|
|
path: artifacts
|
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
build-windows:
|
|
|
|
runs-on: windows-2022
|
|
|
|
steps:
|
|
|
|
- name: "Checkout repo"
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/checkout@v4
|
2022-08-22 22:21:23 +02:00
|
|
|
with:
|
|
|
|
submodules: "recursive"
|
2023-03-28 18:29:30 +02:00
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- 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
|
2022-09-24 08:43:27 +02:00
|
|
|
echo "BUILD_FLAGS=" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
2022-08-22 22:21:23 +02:00
|
|
|
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"
|
2022-08-31 12:04:09 +02:00
|
|
|
- name: Setup version for experimental
|
|
|
|
if: ${{ inputs.experimentalversion != '' }}
|
|
|
|
run: |
|
|
|
|
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
|
|
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
2022-08-22 22:21:23 +02:00
|
|
|
|
2024-04-11 03:06:36 +02:00
|
|
|
- name: "Setup cmake"
|
|
|
|
uses: jwlawson/actions-setup-cmake@v2
|
|
|
|
with:
|
|
|
|
cmake-version: '3.29.0'
|
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- 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
|
2022-08-31 12:04:09 +02:00
|
|
|
echo "[INFO] BUILD_FLAGS: ${{ env.BUILD_FLAGS }}"
|
|
|
|
echo "[INFO] BUILD_MODE: ${{ env.BUILD_MODE }}"
|
2022-09-22 11:34:13 +02:00
|
|
|
cmake .. ${{ env.BUILD_FLAGS }} -DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} -DVCPKG_INSTALL_OPTIONS="--clean-after-build"
|
2022-08-22 22:21:23 +02:00
|
|
|
|
|
|
|
- name: "Build Cemu"
|
|
|
|
run: |
|
|
|
|
cd build
|
2024-01-19 23:32:24 +01:00
|
|
|
cmake --build . --config ${{ env.BUILD_MODE }}
|
2022-09-04 22:23:24 +02:00
|
|
|
|
|
|
|
- name: Prepare artifact
|
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
run: Rename-Item bin/Cemu_release.exe Cemu.exe
|
|
|
|
|
2022-08-22 22:21:23 +02:00
|
|
|
- name: Upload artifact
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/upload-artifact@v4
|
2022-08-22 22:21:23 +02:00
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
with:
|
|
|
|
name: cemu-bin-windows-x64
|
2022-09-04 22:23:24 +02:00
|
|
|
path: ./bin/Cemu.exe
|
2022-10-23 16:58:28 +02:00
|
|
|
|
2022-09-23 11:17:50 +02:00
|
|
|
build-macos:
|
|
|
|
runs-on: macos-12
|
|
|
|
steps:
|
|
|
|
- name: "Checkout repo"
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/checkout@v4
|
2022-09-23 11:17:50 +02:00
|
|
|
with:
|
|
|
|
submodules: "recursive"
|
2023-03-28 18:29:30 +02:00
|
|
|
|
2022-09-23 11:17:50 +02:00
|
|
|
- name: Setup release mode parameters (for deploy)
|
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
run: |
|
|
|
|
echo "BUILD_MODE=release" >> $GITHUB_ENV
|
2022-09-24 08:43:27 +02:00
|
|
|
echo "BUILD_FLAGS=" >> $GITHUB_ENV
|
2022-09-23 11:17:50 +02:00
|
|
|
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: Setup version for experimental
|
|
|
|
if: ${{ inputs.experimentalversion != '' }}
|
|
|
|
run: |
|
|
|
|
echo "[INFO] Experimental version ${{ inputs.experimentalversion }}"
|
|
|
|
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=${{ inputs.experimentalversion }}" >> $GITHUB_ENV
|
|
|
|
|
|
|
|
- name: "Install system dependencies"
|
|
|
|
run: |
|
2023-03-30 13:13:06 +02:00
|
|
|
brew update
|
2024-07-27 18:33:01 +02:00
|
|
|
brew install llvm@15 ninja nasm automake libtool
|
|
|
|
brew install cmake python3 ninja
|
|
|
|
|
|
|
|
- name: "Build and install molten-vk"
|
|
|
|
run: |
|
|
|
|
git clone https://github.com/KhronosGroup/MoltenVK.git
|
|
|
|
cd MoltenVK
|
|
|
|
git checkout bf097edc74ec3b6dfafdcd5a38d3ce14b11952d6
|
|
|
|
./fetchDependencies --macos
|
|
|
|
make macos
|
|
|
|
make install
|
2023-03-30 13:13:06 +02:00
|
|
|
|
2024-04-11 03:06:36 +02:00
|
|
|
- name: "Setup cmake"
|
|
|
|
uses: jwlawson/actions-setup-cmake@v2
|
|
|
|
with:
|
|
|
|
cmake-version: '3.29.0'
|
|
|
|
|
2022-09-23 11:17:50 +02:00
|
|
|
- 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
|
2023-01-06 03:46:10 +01:00
|
|
|
cmake .. ${{ env.BUILD_FLAGS }} \
|
|
|
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
|
|
|
|
-DMACOS_BUNDLE=ON \
|
2023-03-30 13:13:06 +02:00
|
|
|
-DCMAKE_C_COMPILER=/usr/local/opt/llvm@15/bin/clang \
|
|
|
|
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@15/bin/clang++ \
|
2023-01-06 03:46:10 +01:00
|
|
|
-G Ninja
|
2022-09-23 11:17:50 +02:00
|
|
|
|
|
|
|
- name: "Build Cemu"
|
|
|
|
run: |
|
|
|
|
cmake --build build
|
|
|
|
|
|
|
|
- name: Prepare artifact
|
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
2022-10-23 16:58:28 +02:00
|
|
|
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
|
2024-05-05 01:34:36 +02:00
|
|
|
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
|
2022-10-23 16:58:28 +02:00
|
|
|
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
|
2022-09-23 11:17:50 +02:00
|
|
|
|
|
|
|
- name: Upload artifact
|
2024-05-05 01:34:36 +02:00
|
|
|
uses: actions/upload-artifact@v4
|
2022-09-23 11:17:50 +02:00
|
|
|
if: ${{ inputs.deploymode == 'release' }}
|
|
|
|
with:
|
|
|
|
name: cemu-bin-macos-x64
|
2022-10-30 01:39:39 +02:00
|
|
|
path: ./bin/Cemu.dmg
|