name: Manual Generate iOS IPA/DEB on: workflow_dispatch: {} jobs: ios: name: Generate IPA & DEB runs-on: macos-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive - name: Check Valid Version Tags id: valid-tags shell: bash run: | echo "count=$(git tag -l 'v[0-9]*' | wc -l | tr -d ' ')" >> $GITHUB_OUTPUT - name: Fetch upstream tags # required for git describe to return a valid version on a new fork if: steps.valid-tags.outputs.count == '0' run: | # TODO: should try to fetch tags from whereever this repo was forked from before fetching from official repo git remote add upstream https://github.com/hrydgard/ppsspp.git # fetching from official repo as a fallback git fetch --deepen=15000 --no-recurse-submodules --tags --force upstream || exit 0 - name: Set Env Var(s) run: | echo "GIT_VERSION=$(git describe --always)" >> $GITHUB_ENV - name: Install iOS dependencies run: | brew install ldid dpkg pillow # Check Xcode version xcodebuild -version # List available Xcode versions ls /Applications | grep Xcode # Select a specific Xcode version. The recommended Xcode version is 9.4.1 according to https://github.com/Halo-Michael/ppsspp-builder #sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer - name: Create git-version.cpp & Version.txt run: | echo "const char *PPSSPP_GIT_VERSION = \"${GIT_VERSION}\";" > git-version.cpp echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp # Create Version.txt file (should probably do this during building process) mkdir -p build-ios/PPSSPP.app echo ${GIT_VERSION#v} > build-ios/PPSSPP.app/Version.txt - name: Setup ccache uses: hendrikmuhs/ccache-action@5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20 with: key: ios create-symlink: true - name: Execute build env: CC: clang CXX: clang++ USE_CCACHE: 1 run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" export CCACHE_SLOPPINESS=pch_defines,clang_index_store,ivfsoverlay,include_file_ctime,include_file_mtime,modules,system_headers,time_macros export CCACHE_FILECLONE=true export CCACHE_DEPEND=true export CCACHE_COMPILERCHECK=content ./b-ios.sh - name: Prepare artifacts run: | # Testing file location ... find . -name "*.app" mkdir ppsspp if [ -e build-ios/PPSSPP.app ]; then # Get the final files generated by b-ios.h script find build -name 'PPSSPP*.ipa' -exec cp -a '{}' ppsspp/ \; find build -name 'PPSSPP*.xcarchive' -exec cp -a '{}' ppsspp/ \; find build -name 'PPSSPP*.deb' -exec cp -a '{}' ppsspp/ \; find build -name 'org.ppsspp*.deb' -exec cp -a '{}' ppsspp/ \; fi - name: Upload IPA artifact uses: actions/upload-artifact@v7 with: name: iOS-IPA build path: ppsspp/*.ipa - name: Upload DEB artifact uses: actions/upload-artifact@v7 with: name: iOS-DEB build path: ppsspp/*.deb