Remove firmware and module section from README #300
This file contains hidden or 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 and Release KytyPlus | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [ main, master ] | |
| pull_request: | |
| env: | |
| KYTY_BUILD_ORIGIN: ${{ github.repository != 'Coder787-source/KytyPlus' && 'Fork' || github.event_name == 'push' && 'Official' || 'Source' }} | |
| KYTY_BUILD_REPOSITORY: ${{ github.repository }} | |
| jobs: | |
| metadata: | |
| name: Prepare build metadata | |
| runs-on: ubuntu-latest | |
| outputs: | |
| release_tag: ${{ steps.release_tag.outputs.value }} | |
| steps: | |
| - name: Generate release tag | |
| id: release_tag | |
| shell: bash | |
| run: | | |
| echo "value=KytyPlus-$(date -u +'%Y-%m-%d')-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" | |
| windows: | |
| name: Build KytyPlus (Windows) | |
| needs: metadata | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup Visual Studio environment | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Setup Ninja | |
| uses: seanmiddleditch/gha-setup-ninja@v5 | |
| - name: Locate vcpkg | |
| id: vcpkg | |
| shell: pwsh | |
| run: | | |
| $vcpkgRoot = Split-Path (Get-Command vcpkg).Source | |
| $portHash = (Get-FileHash "$vcpkgRoot\ports\glslang\vcpkg.json" -Algorithm SHA256).Hash | |
| "root=$vcpkgRoot" | | |
| Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append | |
| "port_hash=$($portHash.ToLowerInvariant())" | | |
| Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append | |
| - name: Cache glslang | |
| id: glslang_cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ${{ steps.vcpkg.outputs.root }}\installed\x64-windows | |
| key: glslang-${{ runner.os }}-${{ runner.arch }}-${{ steps.vcpkg.outputs.port_hash }}-tools-opt | |
| - name: Install glslang | |
| shell: pwsh | |
| run: | | |
| $vcpkgRoot = "${{ steps.vcpkg.outputs.root }}" | |
| if ("${{ steps.glslang_cache.outputs.cache-hit }}" -ne "true") { | |
| vcpkg install glslang[tools,opt]:x64-windows | |
| } | |
| "$vcpkgRoot\installed\x64-windows\tools\glslang" | | |
| Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| - name: Install Qt 6.10.3 | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: "6.10.3" | |
| host: windows | |
| target: desktop | |
| arch: win64_msvc2022_64 | |
| cache: true | |
| - name: Verify toolchain | |
| shell: cmd | |
| run: | | |
| git --version | |
| cmake --version | |
| ninja --version | |
| clang-cl --version | |
| glslangValidator --version | |
| echo Qt6_DIR=%Qt6_DIR% | |
| - name: Configure | |
| shell: cmd | |
| run: | | |
| cmake -S . -B _Build/windows ^ | |
| -G Ninja ^ | |
| -DCMAKE_BUILD_TYPE=Release ^ | |
| -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON ^ | |
| -DKYTY_BUILD_ORIGIN=%KYTY_BUILD_ORIGIN% ^ | |
| -DKYTY_BUILD_REPOSITORY=%KYTY_BUILD_REPOSITORY% ^ | |
| -DKYTY_RELEASE_TAG=${{ needs.metadata.outputs.release_tag }} ^ | |
| -DCMAKE_C_COMPILER=clang-cl ^ | |
| -DCMAKE_CXX_COMPILER=clang-cl ^ | |
| -DCMAKE_PREFIX_PATH="%Qt6_DIR%" | |
| - name: Build | |
| shell: cmd | |
| run: | | |
| cmake --build _Build/windows --target launcher --parallel | |
| - name: Install | |
| shell: cmd | |
| run: | | |
| cmake --install _Build/windows --prefix _Build/windows/install | |
| - name: Upload Windows artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: KytyPlus-Windows-x64 | |
| path: _Build/windows/install/** | |
| if-no-files-found: error | |
| macos: | |
| name: Build KytyPlus (macOS) | |
| needs: metadata | |
| runs-on: macos-15 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Select Xcode 26 | |
| shell: bash | |
| run: | | |
| xcode_path="$(ls -d /Applications/Xcode_26*.app | tail -n 1)" | |
| test -n "$xcode_path" | |
| sudo xcode-select --switch "$xcode_path/Contents/Developer" | |
| xcodebuild -version | |
| - name: Install build dependencies | |
| shell: bash | |
| run: brew install glslang ninja | |
| - name: Install Qt 6.10.3 | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: "6.10.3" | |
| host: mac | |
| target: desktop | |
| arch: clang_64 | |
| cache: true | |
| - name: Verify toolchain | |
| shell: bash | |
| run: | | |
| git --version | |
| cmake --version | |
| ninja --version | |
| clang++ --version | |
| glslangValidator --version | |
| echo "Host architecture: $(uname -m)" | |
| echo "QT_ROOT_DIR=$QT_ROOT_DIR" | |
| - name: Configure | |
| shell: bash | |
| run: | | |
| cmake -S . -B _Build/macos \ | |
| -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ | |
| -DKYTY_BUILD_ORIGIN="$KYTY_BUILD_ORIGIN" \ | |
| -DKYTY_BUILD_REPOSITORY="$KYTY_BUILD_REPOSITORY" \ | |
| -DKYTY_RELEASE_TAG="${{ needs.metadata.outputs.release_tag }}" \ | |
| -DCMAKE_OSX_ARCHITECTURES=x86_64 \ | |
| -DCMAKE_C_COMPILER=clang \ | |
| -DCMAKE_CXX_COMPILER=clang++ \ | |
| -DCMAKE_PREFIX_PATH="$QT_ROOT_DIR" | |
| - name: Build | |
| shell: bash | |
| run: | | |
| cmake --build _Build/macos \ | |
| --target launcher \ | |
| --parallel | |
| - name: Install | |
| shell: bash | |
| run: | | |
| cmake --install _Build/macos --prefix _Build/macos/install | |
| - name: Bundle MoltenVK | |
| shell: bash | |
| env: | |
| MOLTENVK_VERSION: v1.4.2 | |
| MOLTENVK_SHA256: f95765a6229cb7b915990a2890ce12ebe36a730b021545d3d52ae69ce4c4024e | |
| run: | | |
| archive="$RUNNER_TEMP/MoltenVK-macos.tar" | |
| package="$RUNNER_TEMP/MoltenVK" | |
| curl --fail --location --retry 3 \ | |
| --output "$archive" \ | |
| "https://github.com/KhronosGroup/MoltenVK/releases/download/$MOLTENVK_VERSION/MoltenVK-macos.tar" | |
| echo "$MOLTENVK_SHA256 $archive" | shasum -a 256 --check | |
| tar -xf "$archive" -C "$RUNNER_TEMP" | |
| install -m 755 \ | |
| "$package/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" \ | |
| _Build/macos/install/libMoltenVK.dylib | |
| install -m 644 "$package/LICENSE" _Build/macos/install/LICENSE.MoltenVK | |
| codesign --force --sign - --timestamp=none _Build/macos/install/libMoltenVK.dylib | |
| - name: Verify artifacts | |
| shell: bash | |
| run: | | |
| file _Build/macos/install/launcher | |
| file _Build/macos/install/kyty_emulator | |
| file _Build/macos/install/libMoltenVK.dylib | |
| lipo _Build/macos/install/launcher -verify_arch x86_64 | |
| lipo _Build/macos/install/kyty_emulator -verify_arch x86_64 | |
| lipo _Build/macos/install/libMoltenVK.dylib -verify_arch x86_64 | |
| codesign --verify --strict _Build/macos/install/kyty_emulator | |
| codesign --verify --strict _Build/macos/install/libMoltenVK.dylib | |
| - name: Upload macOS artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: KytyPlus-macOS-x86_64 | |
| path: _Build/macos/install/** | |
| if-no-files-found: error | |
| linux: | |
| name: Build KytyPlus (Linux) | |
| needs: metadata | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install build dependencies | |
| shell: bash | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install --no-install-recommends --yes \ | |
| clang \ | |
| glslang-tools \ | |
| libasound2-dev \ | |
| libdbus-1-dev \ | |
| libgl1-mesa-dev \ | |
| libpulse-dev \ | |
| libudev-dev \ | |
| libwayland-dev \ | |
| libx11-dev \ | |
| libxcursor-dev \ | |
| libxext-dev \ | |
| libxfixes-dev \ | |
| libxi-dev \ | |
| libxkbcommon-dev \ | |
| libxrandr-dev \ | |
| libxss-dev \ | |
| lld \ | |
| ninja-build \ | |
| wayland-protocols | |
| - name: Install Qt 6.10.3 | |
| uses: jurplel/install-qt-action@v4 | |
| with: | |
| version: "6.10.3" | |
| host: linux | |
| target: desktop | |
| arch: linux_gcc_64 | |
| cache: true | |
| - name: Verify toolchain | |
| shell: bash | |
| run: | | |
| git --version | |
| cmake --version | |
| ninja --version | |
| clang++ --version | |
| ld.lld --version | |
| glslangValidator --version | |
| echo "Qt6_DIR=$Qt6_DIR" | |
| - name: Configure | |
| shell: bash | |
| run: | | |
| mkdir -p _Build | |
| cmake -S . -B _Build/linux \ | |
| -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ | |
| -DKYTY_BUILD_ORIGIN="$KYTY_BUILD_ORIGIN" \ | |
| -DKYTY_BUILD_REPOSITORY="$KYTY_BUILD_REPOSITORY" \ | |
| -DKYTY_RELEASE_TAG="${{ needs.metadata.outputs.release_tag }}" \ | |
| -DCMAKE_C_COMPILER=clang \ | |
| -DCMAKE_CXX_COMPILER=clang++ \ | |
| -DCMAKE_PREFIX_PATH="$Qt6_DIR" 2>&1 | tee _Build/configure.log | |
| exit "${PIPESTATUS[0]}" | |
| - name: Verify SDL2 backends | |
| shell: bash | |
| run: | | |
| status=0 | |
| for feature in SDL_ALSA SDL_PULSEAUDIO SDL_WAYLAND SDL_X11 SDL_LIBUDEV SDL_DBUS; do | |
| if grep -qE "^-- ${feature} +\\(Wanted: ON\\): ON" _Build/configure.log; then | |
| echo "ok ${feature}" | |
| else | |
| echo "FAIL ${feature} is not enabled" | |
| status=1 | |
| fi | |
| done | |
| exit "$status" | |
| - name: Build | |
| shell: bash | |
| run: | | |
| cmake --build _Build/linux \ | |
| --target launcher \ | |
| --parallel | |
| - name: Install | |
| shell: bash | |
| run: | | |
| cmake --install _Build/linux --prefix _Build/linux/install | |
| - name: Verify artifacts | |
| shell: bash | |
| run: | | |
| file _Build/linux/install/launcher | |
| file _Build/linux/install/kyty_emulator | |
| file _Build/linux/install/kyty_emulator | grep -q "ELF 64-bit LSB .*x86-64" | |
| ldd _Build/linux/install/kyty_emulator > /dev/null | |
| readelf -d _Build/linux/install/launcher | grep -q 'RPATH.*\$ORIGIN/lib' | |
| while IFS= read -r -d '' binary; do | |
| while read -r dependency; do | |
| test -e "_Build/linux/install/lib/$dependency" | |
| done < <( | |
| readelf -d "$binary" | | |
| sed -n 's/.*Shared library: \[\(libQt6[^]]*\|libicu[^]]*\)\].*/\1/p' | |
| ) | |
| done < <( | |
| find _Build/linux/install/launcher _Build/linux/install/plugins \ | |
| -type f \( -name launcher -o -name '*.so' \) -print0 | |
| ) | |
| _Build/linux/install/kyty_emulator --help > /dev/null | |
| - name: Upload Linux artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: KytyPlus-Linux-x86_64 | |
| path: _Build/linux/install/** | |
| if-no-files-found: error | |
| release: | |
| name: Release KytyPlus | |
| if: >- | |
| always() && | |
| github.event_name == 'push' && | |
| github.repository == 'KytyPS5/KytyPS5' && | |
| (needs.windows.result == 'success' || | |
| needs.macos.result == 'success' || | |
| needs.linux.result == 'success') | |
| needs: [metadata, windows, macos, linux] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| env: | |
| RELEASE_NAME: ${{ needs.metadata.outputs.release_tag }} | |
| steps: | |
| - name: Download Windows build | |
| if: needs.windows.result == 'success' | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: KytyPlus-Windows-x64 | |
| path: artifacts/KytyPlus-Windows-x64 | |
| - name: Download macOS build | |
| if: needs.macos.result == 'success' | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: KytyPlus-macOS-x86_64 | |
| path: artifacts/KytyPlus-macOS-x86_64 | |
| - name: Download Linux build | |
| if: needs.linux.result == 'success' | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: KytyPlus-Linux-x86_64 | |
| path: artifacts/KytyPlus-Linux-x86_64 | |
| - name: Package Windows build | |
| if: needs.windows.result == 'success' | |
| shell: bash | |
| run: | | |
| windows_dir="artifacts/KytyPlus-Windows-x64" | |
| test -d "$windows_dir" | |
| ( | |
| cd "$windows_dir" | |
| zip -r "$GITHUB_WORKSPACE/$RELEASE_NAME-Windows-x64.zip" . | |
| ) | |
| - name: Package macOS build | |
| if: needs.macos.result == 'success' | |
| shell: bash | |
| run: | | |
| macos_dir="artifacts/KytyPlus-macOS-x86_64" | |
| test -d "$macos_dir" | |
| chmod a+x \ | |
| "$macos_dir/launcher" \ | |
| "$macos_dir/kyty_emulator" \ | |
| "$macos_dir/libMoltenVK.dylib" | |
| ( | |
| cd "$macos_dir" | |
| zip -r "$GITHUB_WORKSPACE/$RELEASE_NAME-macOS-x86_64.zip" . | |
| ) | |
| - name: Package Linux build | |
| if: needs.linux.result == 'success' | |
| shell: bash | |
| run: | | |
| linux_dir="artifacts/KytyPlus-Linux-x86_64" | |
| test -d "$linux_dir" | |
| chmod a+x \ | |
| "$linux_dir/launcher" \ | |
| "$linux_dir/kyty_emulator" | |
| tar -C "$linux_dir" -czf \ | |
| "$GITHUB_WORKSPACE/$RELEASE_NAME-Linux-x86_64.tar.gz" . | |
| - name: Create release | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| assets=() | |
| for artifact in \ | |
| "$RELEASE_NAME-Windows-x64.zip" \ | |
| "$RELEASE_NAME-macOS-x86_64.zip" \ | |
| "$RELEASE_NAME-Linux-x86_64.tar.gz"; do | |
| if [[ -f "$artifact" ]]; then | |
| assets+=("$artifact") | |
| fi | |
| done | |
| test "${#assets[@]}" -gt 0 | |
| if gh release view "$RELEASE_NAME" --repo "$GITHUB_REPOSITORY" > /dev/null 2>&1; then | |
| gh release upload "$RELEASE_NAME" "${assets[@]}" \ | |
| --clobber \ | |
| --repo "$GITHUB_REPOSITORY" | |
| else | |
| gh release create "$RELEASE_NAME" "${assets[@]}" \ | |
| --generate-notes \ | |
| --repo "$GITHUB_REPOSITORY" \ | |
| --target "$GITHUB_SHA" \ | |
| --title "$RELEASE_NAME" | |
| fi |