Cemu/.github/workflows/build.yml

264 lines
8.8 KiB
YAML
Raw Normal View History

2022-08-22 22:21:23 +02:00
name: Build Cemu
on:
workflow_call:
inputs:
2024-08-26 11:43:38 +02:00
next_version_major:
2022-08-22 22:21:23 +02:00
required: false
type: string
2024-08-26 11:43:38 +02:00
next_version_minor:
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:
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
2024-08-26 11:43:38 +02:00
- name: Setup release mode parameters
2022-08-22 22:21:23 +02:00
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
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
2024-08-26 11:43:38 +02:00
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
2022-08-22 22:21:23 +02:00
run: |
2024-08-26 11:43:38 +02:00
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
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
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
- 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: |
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
- name: Prepare artifact
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
with:
name: cemu-bin-linux-x64
path: ./bin/Cemu
2022-11-04 15:07:17 +01:00
build-appimage:
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
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"
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
2024-08-26 11:43:38 +02:00
- name: Setup release mode parameters
2022-08-22 22:21:23 +02:00
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
2022-08-22 22:21:23 +02:00
echo "Build mode is release"
2024-08-26 11:43:38 +02:00
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
2024-08-26 11:43:38 +02:00
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
2022-08-22 22:21:23 +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
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"
2022-08-22 22:21:23 +02:00
- name: "Build Cemu"
run: |
cd build
cmake --build . --config ${{ env.BUILD_MODE }}
- name: Prepare artifact
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
with:
name: cemu-bin-windows-x64
path: ./bin/Cemu.exe
build-macos:
2024-08-28 11:06:49 +02:00
runs-on: macos-14
steps:
- name: "Checkout repo"
2024-05-05 01:34:36 +02:00
uses: actions/checkout@v4
with:
submodules: "recursive"
2023-03-28 18:29:30 +02:00
2024-08-26 11:43:38 +02:00
- name: Setup release mode parameters
run: |
echo "BUILD_MODE=release" >> $GITHUB_ENV
echo "BUILD_FLAGS=" >> $GITHUB_ENV
echo "Build mode is release"
2024-08-26 11:43:38 +02:00
- name: Setup build flags for version
if: ${{ inputs.next_version_major != '' }}
run: |
2024-08-26 11:43:38 +02:00
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: |
brew update
2024-08-28 11:06:49 +02:00
brew install ninja nasm automake libtool
2024-08-28 11:06:49 +02:00
- name: "Install molten-vk"
run: |
2024-08-28 11:06:49 +02:00
curl -L -O https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.9/MoltenVK-macos.tar
tar xf MoltenVK-macos.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
2023-01-06 03:46:10 +01:00
cmake .. ${{ env.BUILD_FLAGS }} \
-DCMAKE_BUILD_TYPE=${{ env.BUILD_MODE }} \
2024-08-28 11:06:49 +02:00
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
2023-01-06 03:46:10 +01:00
-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
2024-05-05 01:34:36 +02:00
chmod a+x bin/Cemu_app/Cemu.app/Contents/MacOS/{Cemu,update.sh}
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
2024-05-05 01:34:36 +02:00
uses: actions/upload-artifact@v4
with:
name: cemu-bin-macos-x64
2022-10-30 01:39:39 +02:00
path: ./bin/Cemu.dmg