Update build.yml #703
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Cemu | |
on: | |
push: | |
workflow_call: | |
inputs: | |
deploymode: | |
required: false | |
type: string | |
experimentalversion: | |
required: false | |
type: string | |
env: | |
VCPKG_ROOT: "${{github.workspace}}/dependencies/vcpkg" | |
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' | |
jobs: | |
build-ubuntu: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: "Checkout repo" | |
uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
fetch-depth: 0 | |
- name: "Fetch full history for vcpkg submodule" | |
run: | | |
cd dependencies/vcpkg | |
git fetch --unshallow | |
git checkout 431eb6bda0950874c8d4ed929cc66e15d8aae46f | |
- name: Setup release mode parameters (for deploy) | |
#if: ${{ inputs.deploymode == 'release' }} | |
run: | | |
echo "BUILD_MODE=release" >> $GITHUB_ENV | |
echo "BUILD_FLAGS=" >> $GITHUB_ENV | |
echo "Build mode is release" | |
- name: Setup version for experimental | |
run: | | |
echo "[INFO] Experimental version 40" | |
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=40" >> $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 | |
- 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 | |
#if: ${{ inputs.deploymode == 'release' }} | |
run: mv bin/Cemu_release bin/Cemu | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
#if: ${{ inputs.deploymode == 'release' }} | |
with: | |
name: cemu-bin-linux-x64 | |
path: ./bin/Cemu | |
build-appimage: | |
runs-on: ubuntu-22.04 | |
needs: build-ubuntu | |
steps: | |
- name: Checkout Upstream Repo | |
uses: actions/checkout@v3 | |
- uses: actions/download-artifact@v3 | |
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 | |
- name: "Build AppImage" | |
run: | | |
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" | |
export DEPLOY_GTK_VERSION=3 | |
dist/linux/appimage.sh | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cemu-appimage-x64 | |
path: artifacts | |
build-windows: | |
runs-on: windows-2022 | |
steps: | |
- name: "Checkout repo" | |
uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- name: "Fetch full history for vcpkg submodule" | |
run: | | |
cd dependencies/vcpkg | |
git fetch --unshallow | |
git checkout 431eb6bda0950874c8d4ed929cc66e15d8aae46f | |
- name: Setup release mode parameters (for deploy) | |
#if: ${{ inputs.deploymode == 'release' }} | |
run: | | |
echo "BUILD_MODE=release" >> $GITHUB_ENV | |
echo "BUILD_FLAGS=" >> $GITHUB_ENV | |
echo "Build mode is release" | |
- name: Setup version for experimental | |
run: | | |
echo "[INFO] Experimental version 40" | |
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=40" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | |
- 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 | |
if: ${{ inputs.deploymode == 'release' }} | |
run: Rename-Item bin/Cemu_release.exe Cemu.exe | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
if: ${{ inputs.deploymode == 'release' }} | |
with: | |
name: cemu-bin-windows-x64 | |
path: ./bin/Cemu.exe | |
build-macos: | |
runs-on: macos-12 | |
steps: | |
- name: "Checkout repo" | |
uses: actions/checkout@v3 | |
with: | |
submodules: "recursive" | |
- name: "Fetch full history for vcpkg submodule" | |
run: | | |
cd dependencies/vcpkg | |
git fetch --unshallow | |
git pull --all | |
- name: Setup release mode parameters (for deploy) | |
#if: ${{ inputs.deploymode == 'release' }} | |
run: | | |
echo "BUILD_MODE=release" >> $GITHUB_ENV | |
echo "BUILD_FLAGS=" >> $GITHUB_ENV | |
echo "Build mode is release" | |
- name: Setup version for experimental | |
run: | | |
echo "[INFO] Experimental version 40" | |
echo "BUILD_FLAGS=${{ env.BUILD_FLAGS }} -DEXPERIMENTAL_VERSION=40" >> $GITHUB_ENV | |
- name: "Install system dependencies" | |
run: | | |
brew update | |
brew install llvm@15 ninja nasm molten-vk automake libtool | |
- 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 }} \ | |
-DMACOS_BUNDLE=ON \ | |
-DCMAKE_C_COMPILER=/usr/local/opt/llvm@15/bin/clang \ | |
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@15/bin/clang++ \ | |
-G Ninja | |
- name: "Build Cemu" | |
run: | | |
cmake --build build | |
- name: Prepare artifact | |
if: ${{ inputs.deploymode == 'release' }} | |
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 | |
chmod a+x 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@v3 | |
if: ${{ inputs.deploymode == 'release' }} | |
with: | |
name: cemu-bin-macos-x64 | |
path: ./bin/Cemu.dmg |