mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-18 17:00:30 +02:00
ci: build the libretro core and the test tools only
The tree is built as a libretro core and nothing else, so the standalone frontends lose their lanes: the Visual Studio and UWP solutions, the Android app, iOS, the macOS app bundle, the AppImage and the manual packaging workflows. PPSSPPHeadless and PPSSPPUnitTest stay, built as named targets so a configure no longer pulls the SDL frontend in, and keep feeding the headless, frametest, qemu and Alpine jobs; the Docker image builds the same way. Two lanes cover builds nothing ran before: the core on an arm64 host, and the CMake build of the core on Linux.
This commit is contained in:
1 parent
cf9d102864
commit
6b22f99818
6 files changed
+24
-762
No files matched your search
@@ -1,221 +0,0 @@
|
||||
name: Generate Linux AppImage
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
# For testing.
|
||||
#- test_arch
|
||||
tags:
|
||||
- "v*.*"
|
||||
paths-ignore:
|
||||
- '*.{txt,md}'
|
||||
- 'Tools/**'
|
||||
- '.{editorconfig,gitattributes,gitignore}'
|
||||
- 'appveyor.yml'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
paths-ignore:
|
||||
- '*.{txt,md}'
|
||||
- 'Tools/**'
|
||||
- '.{editorconfig,gitattributes,gitignore}'
|
||||
- 'appveyor.yml'
|
||||
|
||||
env:
|
||||
SDL_AUDIODRIVER: "dummy" #"disk"
|
||||
#SDL_VIDEODRIVER: "dummy"
|
||||
#BUILD_CONFIGURATION: Release #RelWithDebInfo
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: build (${{ matrix.id }})
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
id: x86_64
|
||||
- os: ubuntu-24.04-arm
|
||||
id: aarch64
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
container: ghcr.io/pkgforge-dev/archlinux:latest
|
||||
env:
|
||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||
CCACHE_COMPILERCHECK: content
|
||||
CCACHE_SLOPPINESS: time_macros
|
||||
steps:
|
||||
- name: Install git
|
||||
run: pacman -Syu --noconfirm git
|
||||
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
|
||||
- name: Check Valid Version Tags
|
||||
id: valid-tags
|
||||
shell: bash
|
||||
run: |
|
||||
# Fix dubious ownership issue when running git describe inside a container
|
||||
git config --global --add safe.directory "$PWD" # Alternatively, chown -R $(id -u):$(id -g) $PWD
|
||||
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 and to preevnt androidGitVersion from crashing 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 up ccache for ${{ matrix.id }}
|
||||
uses: actions/cache@v6.1.0
|
||||
with:
|
||||
path: ${{ env.CCACHE_DIR }}
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.id }}-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-ccache-${{ matrix.id }}-
|
||||
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
#sudo su # Why sudo is needed?
|
||||
#sudo rm -rf /var/lib/apt/lists/lock # due to permisson issue, why there is such issue?
|
||||
|
||||
# Debian-based
|
||||
#sudo apt-get update -y -qq
|
||||
#sudo apt-get install -q -y zsync patchelf xvfb strace
|
||||
#sudo apt-get install -q -y libstdc++6 ffmpeg libvulkan-dev libglew-dev libsdl2-ttf-dev libsdl2-dev libasound2-dev alsa-base alsa-utils libglu1-mesa pulseaudio linux-modules-extra-$(uname -r) #build-essential #plocate
|
||||
#sudo updatedb # to update locate database
|
||||
|
||||
# Archlinux
|
||||
set -ex
|
||||
|
||||
ARCH=$(uname -m)
|
||||
echo "ARCH=$ARCH" >> $GITHUB_ENV # Export ARCH to be reused on other steps
|
||||
EXTRA_PACKAGES="https://raw.githubusercontent.com/pkgforge-dev/Anylinux-AppImages/refs/heads/main/useful-tools/get-debloated-pkgs.sh"
|
||||
|
||||
echo "Installing build dependencies..."
|
||||
echo "---------------------------------------------------------------"
|
||||
pacman -Syu --noconfirm \
|
||||
base-devel \
|
||||
curl \
|
||||
git \
|
||||
cmake \
|
||||
ninja \
|
||||
clang \
|
||||
ccache \
|
||||
lld \
|
||||
libxss \
|
||||
fontconfig \
|
||||
gcc-libs \
|
||||
glibc \
|
||||
libc++ \
|
||||
libc++abi \
|
||||
glew \
|
||||
sdl3 \
|
||||
sdl3_ttf \
|
||||
python \
|
||||
patchelf \
|
||||
pipewire \
|
||||
pipewire-audio \
|
||||
pulseaudio \
|
||||
pulseaudio-alsa \
|
||||
strace \
|
||||
wget \
|
||||
xorg-server-xvfb \
|
||||
zsync \
|
||||
vulkan-headers \
|
||||
alsa-lib sndio hidapi ibus jack libdecor libgl libpulse libusb \
|
||||
libx11 libxcursor libxext libxinerama libxkbcommon libxrandr libxrender libxss libxtst \
|
||||
wayland wayland-protocols
|
||||
|
||||
echo "Installing debloated packages..."
|
||||
echo "---------------------------------------------------------------"
|
||||
wget --retry-connrefused --tries=30 "$EXTRA_PACKAGES" -O ./get-debloated-pkgs.sh
|
||||
chmod +x ./get-debloated-pkgs.sh
|
||||
./get-debloated-pkgs.sh --add-mesa libxml2-mini opus-mini llvm-libs-nano
|
||||
|
||||
- name: Build Release
|
||||
id: version
|
||||
env:
|
||||
CC: gcc #clang
|
||||
CXX: g++ #clang++
|
||||
CPPFLAGS: -fno-pie -no-pie -static -Wl,-no_pie -Wl,-rpath,'$ORIGIN/../lib' -Wl,--disable-new-dtags -Wl,--no-undefined #-fno-unwind-tables -fno-exceptions -fno-threadsafe-statics -fno-rtti # -static-libgcc -static-libstdc++ # -fno-plt # -fPIC -D_XOPEN_SOURCE=700 #-D_GNU_SOURCE # -fno-split-stack
|
||||
#CXXFLAGS: -stdlib=libc++ -lc++abi # clang only
|
||||
LDFLAGS: -no-pie -static-libgcc -static-libstdc++ #-fuse-ld=lld #-static
|
||||
USE_CCACHE: 1
|
||||
APPIMAGE_EXTRACT_AND_RUN: 1
|
||||
run: |
|
||||
echo "Building..."
|
||||
uname -m
|
||||
echo "tag=$(git describe --always)" >> $GITHUB_OUTPUT
|
||||
|
||||
# Export ccache env var(s)
|
||||
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||
export CCACHE_SLOPPINESS=clang_index_store,ivfsoverlay,include_file_ctime,include_file_mtime,modules,system_headers,time_macros
|
||||
|
||||
gcc --version
|
||||
g++ --version
|
||||
|
||||
#clang --version
|
||||
#clang++ --version
|
||||
|
||||
# Build ppsspp
|
||||
#./b.sh --release --no-sdl2 --no-png
|
||||
mkdir -p build
|
||||
pushd build
|
||||
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUSE_SYSTEM_LIBPNG=OFF -DUSE_SYSTEM_FFMPEG=OFF -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ..
|
||||
make -j$(nproc)
|
||||
popd
|
||||
ccache -s -v
|
||||
|
||||
- name: Create AppImage
|
||||
shell: bash
|
||||
run: |
|
||||
# Use dummy soundcard
|
||||
#sudo locate snd-dummy
|
||||
#sudo modprobe snd-dummy fake_buffer=0
|
||||
|
||||
# Test for missing modules
|
||||
ldd ./build/PPSSPPSDL
|
||||
|
||||
# Create AppImage package
|
||||
echo "Creating AppImage..."
|
||||
chmod +x ./build/PPSSPPSDL
|
||||
chmod +x ./scripts/makeappimage_64-bit.sh
|
||||
VERSION=$([[ ${GITHUB_REF_TYPE} == tag ]] && echo "$GITHUB_REF_NAME" || echo "${{ steps.version.outputs.tag }}")
|
||||
echo "Version = $VERSION"
|
||||
./scripts/makeappimage_64-bit.sh "$VERSION"
|
||||
|
||||
- name: Prepare artifacts
|
||||
run: |
|
||||
find . -name "PPSSPPSDL"
|
||||
find . -name "PPSSPP*.AppImage" -exec chmod +x '{}' \;
|
||||
find . -name "PPSSPP*.AppBundle" -exec chmod +x '{}' \;
|
||||
find . -name "PPSSPP*.zsync"
|
||||
mkdir artifacts
|
||||
if [ -e ./PPSSPP*.AppImage ]; then
|
||||
cp -a ./PPSSPP*.AppImage artifacts/
|
||||
fi
|
||||
if [ -e ./PPSSPP*.AppBundle ]; then
|
||||
cp -a ./PPSSPP*.AppBundle artifacts/
|
||||
fi
|
||||
if [ -e ./PPSSPP*.zsync ]; then
|
||||
cp ./PPSSPP*.zsync artifacts/
|
||||
fi
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: linux-${{ steps.version.outputs.tag }}-${{ matrix.id }} AppImage
|
||||
path: artifacts/
|
||||
|
||||
- name: Upload release
|
||||
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||
if: github.ref_type == 'tag'
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
files: |
|
||||
artifacts/*.AppImage
|
||||
artifacts/*.AppImage.zsync
|
||||
+23
-244
@@ -26,119 +26,9 @@ env:
|
||||
BUILD_CONFIGURATION: Release
|
||||
|
||||
jobs:
|
||||
build-windows:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
platform: [x64, ARM64]
|
||||
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Add MSBuild to PATH
|
||||
uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0
|
||||
|
||||
- name: Check Valid Version Tags
|
||||
id: valid-tags
|
||||
shell: bash
|
||||
run: |
|
||||
# This is required for git describe --always to work for git-version.cpp.
|
||||
git fetch --deepen=15000 --no-recurse-submodules --tags || exit 0
|
||||
echo "count=$(git tag -l 'v[0-9]*' | wc -l | tr -d ' ')" >> $GITHUB_OUTPUT # $env:GITHUB_OUTPUT on pwsh
|
||||
|
||||
- name: Fetch upstream tags # Fallback to fetching tags from upstream
|
||||
if: steps.valid-tags.outputs.count == '0'
|
||||
shell: bash
|
||||
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
|
||||
git fetch --deepen=15000 --no-recurse-submodules --tags --force upstream || exit 0
|
||||
|
||||
- name: Create git-version.cpp for Windows # Not sure why the one at git-version-gen.cmd couldn't get the version properly.
|
||||
#if: github.ref_type == 'tag'
|
||||
run: |
|
||||
$GIT_VERSION=git describe --always
|
||||
echo "Num of Valid Tags = ${{ steps.valid-tags.outputs.count }}"
|
||||
echo "Test GitVer = ${{ github.ref_name }} / $GIT_VERSION / ${GITHUB_REF_NAME}"
|
||||
echo "const char *PPSSPP_GIT_VERSION = `"$GIT_VERSION`";" > git-version.cpp
|
||||
echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp
|
||||
|
||||
# Generate Windows/win-version.h too.
|
||||
if ($GIT_VERSION.StartsWith("v")) {
|
||||
$WIN_VERSION_COMMA=$GIT_VERSION -replace '^v', '' -replace '-g[0-9a-f]+$', '' -replace '[-\.]', ','
|
||||
echo "Test WinVer = $WIN_VERSION_COMMA"
|
||||
echo "#define PPSSPP_WIN_VERSION_STRING `"$GIT_VERSION`"" > Windows/win-version.h
|
||||
echo "#define PPSSPP_WIN_VERSION_COMMA $WIN_VERSION_COMMA" >> Windows/win-version.h
|
||||
echo "#define PPSSPP_WIN_VERSION_NO_UPDATE 1" >> Windows/win-version.h
|
||||
}
|
||||
|
||||
- name: Build Windows
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
run: msbuild /m /p:TrackFileAccess=false /p:Configuration=${{ env.BUILD_CONFIGURATION }} /p:Platform=${{ matrix.platform }} Windows/PPSSPP.sln
|
||||
|
||||
- name: Package build
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
run: |
|
||||
mkdir ppsspp
|
||||
cp PPSSPP*.exe ppsspp/
|
||||
cp *.pdb ppsspp/
|
||||
cp Windows/*.bat ppsspp/
|
||||
cp -r assets ppsspp/assets
|
||||
|
||||
- name: Package headless (non-Win32)
|
||||
if: matrix.platform != 'Win32'
|
||||
run: cp Windows/${{ matrix.platform }}/Release/*.exe ppsspp/
|
||||
|
||||
- name: Package headless (Win32)
|
||||
if: matrix.platform == 'Win32'
|
||||
run: cp Windows/Release/*.exe ppsspp/
|
||||
|
||||
- name: Upload build
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: Windows ${{ matrix.platform }} build
|
||||
path: ppsspp/
|
||||
|
||||
- name: Create release
|
||||
if: github.ref_type == 'tag'
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
run: |
|
||||
rm ppsspp/PPSSPPHeadless*
|
||||
rm ppsspp/UnitTest*
|
||||
rm ppsspp/*.pdb
|
||||
mkdir releases
|
||||
Compress-Archive -Path "ppsspp/*" -Update -DestinationPath "releases/PPSSPP-${{ github.ref_name }}-Windows-${{ matrix.platform }}.zip"
|
||||
|
||||
- name: Upload release
|
||||
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||
if: github.ref_type == 'tag'
|
||||
with:
|
||||
files: releases/*.zip
|
||||
|
||||
build-uwp:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Add MSBuild to PATH
|
||||
uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0
|
||||
|
||||
- name: Restore NuGet packages
|
||||
working-directory: ${{ github.workspace }}/UWP
|
||||
run: nuget restore PPSSPP_UWP.sln
|
||||
|
||||
- name: Build UWP
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
run: msbuild /m /p:TrackFileAccess=false /p:Configuration=${{ env.BUILD_CONFIGURATION }} /p:Platform=x64 /p:AppxPackageSigningEnabled=false UWP/PPSSPP_UWP.sln
|
||||
|
||||
# Mirrors the two Windows jobs in libretro's own GitLab CI (see .gitlab-ci.yml). The libretro core
|
||||
# is built by GNU make driving cl.exe/link.exe from an MSYS2 shell, not by the VS solution, so it
|
||||
# catches MSVC-specific errors that neither build-windows nor the Linux/Android libretro builds do
|
||||
# is built by GNU make driving cl.exe/link.exe from an MSYS2 shell, so it catches MSVC-specific
|
||||
# errors that the Linux/Android libretro builds don't
|
||||
# - duplicate symbols in particular, since MSVC emits inline functions that gcc/clang inline away.
|
||||
build-libretro-windows:
|
||||
name: build-libretro-windows (${{ matrix.arch }})
|
||||
@@ -203,34 +93,6 @@ jobs:
|
||||
shell: msys2 {0}
|
||||
run: make -C libretro -f Makefile -j4 platform=win
|
||||
|
||||
test-windows:
|
||||
runs-on: windows-latest
|
||||
needs: build-windows
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
submodules: false
|
||||
|
||||
- name: Fetch tests
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
# Doing this to avoid ffmpeg and other large submodules.
|
||||
run: git submodule update --init pspautotests assets/lang
|
||||
|
||||
- name: Download build
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: Windows x64 build
|
||||
path: ppsspp/
|
||||
|
||||
- name: Execute unit tests
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
run: ppsspp\\UnitTest.exe ALL
|
||||
|
||||
- name: Execute headless tests
|
||||
working-directory: ${{ env.GITHUB_WORKSPACE }}
|
||||
run: python test.py -g --graphics=software
|
||||
|
||||
build:
|
||||
name: build (${{ matrix.id }})
|
||||
strategy:
|
||||
@@ -241,12 +103,12 @@ jobs:
|
||||
extra: test
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: ./b.sh --headless --unittest
|
||||
args: ./b.sh --headless --unittest PPSSPPHeadless PPSSPPUnitTest
|
||||
id: clang-normal
|
||||
- os: ubuntu-26.04
|
||||
cc: gcc
|
||||
cxx: g++
|
||||
args: ./b.sh --headless --unittest
|
||||
args: ./b.sh --headless --unittest PPSSPPHeadless PPSSPPUnitTest
|
||||
id: gcc-normal
|
||||
|
||||
# Gives the headless tests an arm64 host to run the CPU backends on - the arm64 JIT is a
|
||||
@@ -255,33 +117,9 @@ jobs:
|
||||
extra: test
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: ./b.sh --headless --unittest
|
||||
args: ./b.sh --headless --unittest PPSSPPHeadless PPSSPPUnitTest
|
||||
id: clang-arm64
|
||||
|
||||
- os: ubuntu-26.04
|
||||
extra: android
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: cd android && ./ab.sh APP_ABI=arm64-v8a UNITTEST=1 HEADLESS=1
|
||||
id: android-arm64
|
||||
- os: ubuntu-26.04
|
||||
extra: android
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: cd android && ./ab.sh APP_ABI=armeabi-v7a UNITTEST=1 HEADLESS=1
|
||||
id: android-arm32
|
||||
- os: ubuntu-26.04
|
||||
extra: android
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: cd android && ./ab.sh APP_ABI=x86_64 UNITTEST=1 HEADLESS=1
|
||||
id: android-x86_64
|
||||
- os: ubuntu-26.04
|
||||
extra: android
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: cd android && ./ab.sh APP_ABI=arm64-v8a OPENXR=1
|
||||
id: android-vr
|
||||
- os: ubuntu-26.04
|
||||
extra: android
|
||||
cc: clang
|
||||
@@ -301,6 +139,20 @@ jobs:
|
||||
cxx: clang++
|
||||
args: make -C libretro -f Makefile -j2
|
||||
id: clang-libretro
|
||||
# The core on an arm64 host: the arm64 JIT and the NEON paths in the codecs.
|
||||
- os: ubuntu-26.04-arm
|
||||
extra: libretro
|
||||
cc: gcc
|
||||
cxx: g++
|
||||
args: make -C libretro -f Makefile -j2
|
||||
id: gcc-libretro-arm64
|
||||
# The CMake build of the core on Linux, which nothing else here builds.
|
||||
- os: ubuntu-26.04
|
||||
extra: libretro
|
||||
cc: gcc
|
||||
cxx: g++
|
||||
args: ./b.sh --libretro ppsspp_libretro
|
||||
id: cmake-libretro
|
||||
|
||||
- os: ubuntu-26.04
|
||||
extra: loongarch64
|
||||
@@ -320,7 +172,7 @@ jobs:
|
||||
extra: test
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: ./b.sh --headless --unittest --no-png
|
||||
args: ./b.sh --headless --unittest PPSSPPHeadless PPSSPPUnitTest
|
||||
id: macos
|
||||
- os: macos-latest
|
||||
extra: libretro_mac
|
||||
@@ -328,12 +180,6 @@ jobs:
|
||||
cxx: clang++
|
||||
args: ./b.sh --libretro
|
||||
id: macos-libretro
|
||||
- os: macos-latest
|
||||
extra: ios
|
||||
cc: clang
|
||||
cxx: clang++
|
||||
args: ./b-ios.sh
|
||||
id: ios
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
@@ -371,27 +217,6 @@ jobs:
|
||||
sudo apt-get install -y gcc-14-${{ matrix.extra }}-linux-gnu g++-14-${{ matrix.extra }}-linux-gnu binutils-${{ matrix.extra }}-linux-gnu libgl-dev libglu1-mesa-dev qemu-user
|
||||
sudo cmake/scripts/setup-cross.sh ${{ matrix.extra }}
|
||||
|
||||
- name: Install iOS dependencies
|
||||
if: matrix.id == 'ios'
|
||||
run: |
|
||||
brew install ldid dpkg pillow
|
||||
# Check Xcode version
|
||||
xcodebuild -version
|
||||
|
||||
- name: Create iOS Version.txt file
|
||||
if: matrix.id == 'ios'
|
||||
run: |
|
||||
# Create Version.txt file (should probably do this during building process)
|
||||
mkdir -p build-ios/PPSSPP.app
|
||||
GIT_VERSION=$(git describe --always --tags)
|
||||
echo ${GIT_VERSION#v} > build-ios/PPSSPP.app/Version.txt
|
||||
|
||||
- name: Create macOS & iOS git-version.cpp for tagged release
|
||||
if: github.ref_type == 'tag' && (matrix.id == 'macos' || matrix.id == 'ios')
|
||||
run: |
|
||||
echo "const char *PPSSPP_GIT_VERSION = \"${GITHUB_REF_NAME}\";" > git-version.cpp
|
||||
echo "#define PPSSPP_GIT_VERSION_NO_UPDATE 1" >> git-version.cpp
|
||||
|
||||
- name: Setup ccache
|
||||
uses: hendrikmuhs/ccache-action@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24
|
||||
# Disable ccache on macos for now, it's become buggy for some reason.
|
||||
@@ -445,29 +270,10 @@ jobs:
|
||||
python3 test.py -g --graphics=software --cpu=jit-ir --timeout=60 \
|
||||
--known-failures=${{ matrix.extra }}
|
||||
|
||||
- name: Package build
|
||||
if: matrix.extra == 'test' || matrix.id == 'ios'
|
||||
- name: Package test tools
|
||||
if: matrix.extra == 'test'
|
||||
run: |
|
||||
mkdir -p ppsspp
|
||||
if [ -e build*/$BUILD_CONFIGURATION/PPSSPPSDL ]; then
|
||||
cp build*/$BUILD_CONFIGURATION/PPSSPPSDL ppsspp/
|
||||
elif [ -e build*/PPSSPPSDL.app ]; then
|
||||
cp -a build*/PPSSPPSDL.app ppsspp/
|
||||
# GitHub Actions zipping kills symlinks and permissions.
|
||||
pushd ppsspp
|
||||
zip -qry PPSSPPSDL.zip PPSSPPSDL.app
|
||||
rm -rf PPSSPPSDL.app
|
||||
popd
|
||||
elif [ -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/ \;
|
||||
elif [ -e build*/PPSSPPSDL ]; then
|
||||
cp build*/PPSSPPSDL ppsspp/
|
||||
cp -r assets ppsspp/assets
|
||||
fi
|
||||
if [ -e build*/$BUILD_CONFIGURATION/PPSSPPHeadless ]; then
|
||||
cp build*/$BUILD_CONFIGURATION/PPSSPPHeadless ppsspp/
|
||||
elif [ -e build*/PPSSPPHeadless ]; then
|
||||
@@ -486,33 +292,6 @@ jobs:
|
||||
name: ${{ matrix.os }} build
|
||||
path: ppsspp/
|
||||
|
||||
- name: Upload iOS build
|
||||
uses: actions/upload-artifact@v7
|
||||
if: matrix.id == 'ios'
|
||||
with:
|
||||
name: ${{ matrix.id }} build
|
||||
path: ppsspp/
|
||||
|
||||
- name: Create macOS release
|
||||
if: github.ref_type == 'tag' && matrix.id == 'macos'
|
||||
working-directory: ppsspp
|
||||
run: mv PPSSPPSDL.zip PPSSPPSDL-macOS-${GITHUB_REF_NAME}.zip
|
||||
|
||||
- name: Upload macOS & iOS release
|
||||
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||
if: github.ref_type == 'tag' && (matrix.id == 'macos' || matrix.id == 'ios')
|
||||
with:
|
||||
files: |
|
||||
ppsspp/*.zip
|
||||
ppsspp/*.ipa
|
||||
ppsspp/*.deb
|
||||
body: >
|
||||
PPSSPP is a cross-platform PSP emulator.
|
||||
Visit PPSSPP [official website](https://ppsspp.org)
|
||||
for a [full changelog](https://ppsspp.org/index.html#news)
|
||||
as well as the [downloads section](https://ppsspp.org/downloads.html)
|
||||
for other platforms.
|
||||
|
||||
test:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -623,7 +402,7 @@ jobs:
|
||||
|
||||
- name: Build for testing
|
||||
run: |
|
||||
./b.sh --headless --unittest
|
||||
./b.sh --headless --unittest PPSSPPHeadless PPSSPPUnitTest
|
||||
|
||||
- name: Execute unit tests
|
||||
run: |
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
name: Manual Generate Android APK
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
|
||||
buildVariant:
|
||||
type: choice
|
||||
description: 'Build Variant'
|
||||
required: true
|
||||
default: 'NormalOptimized'
|
||||
options:
|
||||
- NormalOptimized
|
||||
- NormalDebug
|
||||
- VROptimized
|
||||
- VRDebug
|
||||
- LegacyOptimized
|
||||
|
||||
jobs:
|
||||
|
||||
apk:
|
||||
name: Generate ${{ github.event.inputs.buildVariant }} APK
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
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 and to preevnt androidGitVersion from crashing 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: Setup JDK
|
||||
uses: actions/setup-java@v6.0.1
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: 'gradle'
|
||||
|
||||
#- name: Setup SDK # gradlew will install SDK automatically, thus this step not needed
|
||||
# uses: android-actions/setup-android@v3
|
||||
|
||||
#- name: Setup NDK # gradle will install NDK (side by side) automatically, thus explictly seting up NDK here will cause not enough storage issue when building debug variant
|
||||
# uses: nttld/setup-ndk@v1
|
||||
# with:
|
||||
# ndk-version: r21e
|
||||
|
||||
- name: Test androidGitVersion
|
||||
run: |
|
||||
echo "count=${{steps.valid-tags.outputs.count}}"
|
||||
gradle --quiet androidGitVersion
|
||||
|
||||
- name: Assemble APK
|
||||
run: ./gradlew assemble${{ github.event.inputs.buildVariant }} --stacktrace
|
||||
|
||||
#- name: Gradle Test
|
||||
# run: bash ./gradlew test${{ github.event.inputs.buildVariant }}UnitTest --stacktrace
|
||||
|
||||
- name: Package build
|
||||
run: |
|
||||
find . -name "*.apk"
|
||||
mkdir ppsspp
|
||||
if [ -e android/build/*/apk/*/*/*.apk ]; then
|
||||
cp android/build/*/apk/*/*/*.apk ppsspp/
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: android-${{ github.event.inputs.buildVariant }} build
|
||||
path: ppsspp/
|
||||
@@ -1,94 +0,0 @@
|
||||
name: Manual Generate iOS IPA/DEB
|
||||
on:
|
||||
workflow_dispatch: {}
|
||||
|
||||
jobs:
|
||||
ios:
|
||||
name: Generate IPA & DEB
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
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@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24
|
||||
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
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
name: Manual Generate UWP MSIX/MSIXBundle
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
|
||||
buildConfiguration:
|
||||
type: choice
|
||||
description: 'Build Configuration'
|
||||
required: true
|
||||
default: 'Release'
|
||||
options:
|
||||
- Release
|
||||
- Debug
|
||||
|
||||
buildPlatform:
|
||||
type: choice
|
||||
description: 'Build Platform'
|
||||
required: true
|
||||
default: 'Bundle'
|
||||
options:
|
||||
- Bundle
|
||||
- x64
|
||||
- ARM64
|
||||
|
||||
signedPackage:
|
||||
type: boolean
|
||||
description: 'Signed Package'
|
||||
required: true
|
||||
default: true
|
||||
|
||||
jobs:
|
||||
|
||||
build-uwp:
|
||||
name: Generate ${{ github.event.inputs.buildConfiguration }} ${{ github.event.inputs.buildPlatform }} UWP
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
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 # $env:GITHUB_OUTPUT on pwsh
|
||||
|
||||
- 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: Add MSBuild to PATH
|
||||
uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0
|
||||
|
||||
#- name: Setup cache # We probably need something like MSBuildCache for MSBuild to be able to use cache properly
|
||||
# id: cache-uwp
|
||||
# uses: actions/cache@v3
|
||||
# with:
|
||||
# path: |
|
||||
# UWP/${{ github.event.inputs.buildPlatform }}/${{ github.event.inputs.buildConfiguration }}/**
|
||||
# key: uwp-${{ github.event.inputs.buildConfiguration }}-${{ github.event.inputs.buildPlatform }}
|
||||
|
||||
- name: Testing values
|
||||
run: |
|
||||
# Testing values ...
|
||||
#env
|
||||
echo "Content of [env.GITHUB_WORKSPACE] = ${env.GITHUB_WORKSPACE}"
|
||||
echo "Content of [[env.GITHUB_WORKSPACE]] = ${{env.GITHUB_WORKSPACE}}"
|
||||
echo "Content of [env:GITHUB_WORKSPACE] = ${env:GITHUB_WORKSPACE}"
|
||||
echo "Content of [github.workspace] = ${github.workspace}"
|
||||
echo "Content of [[github.workspace]] = ${{github.workspace}}"
|
||||
echo "double ${{ github.event.inputs.buildConfiguration }}"
|
||||
echo ${{github.workspace}}
|
||||
echo "count=${{steps.valid-tags.outputs.count}}"
|
||||
echo "single ${ github.event.inputs.buildConfiguration }"
|
||||
echo $env:GITHUB_WORKSPACE
|
||||
|
||||
- name: Restore NuGet packages
|
||||
working-directory: ${{ github.workspace }}/UWP
|
||||
run: |
|
||||
nuget restore PPSSPP_UWP.sln
|
||||
|
||||
- name: Execute MSIX build
|
||||
working-directory: ${{ github.workspace }}
|
||||
env:
|
||||
INCLUDE_SYMBOLS: ${{ github.event.inputs.buildConfiguration == 'Debug' && 'true' || 'false' }}
|
||||
if: github.event.inputs.buildPlatform != 'Bundle'
|
||||
run: |
|
||||
echo "include symbols = ${{ env.INCLUDE_SYMBOLS }}"
|
||||
msbuild UWP/PPSSPP_UWP.sln /m /p:TrackFileAccess=false /p:Configuration=${{ github.event.inputs.buildConfiguration }} /p:Platform=${{ github.event.inputs.buildPlatform }} /p:IncludeSymbols=${{ env.INCLUDE_SYMBOLS }} /p:AppxSymbolPackageEnabled=${{ env.INCLUDE_SYMBOLS }} /p:AppxPackageSigningEnabled=${{ github.event.inputs.signedPackage }} /p:PackageCertificateKeyFile=PPSSPP_UWP_TemporaryKey.pfx /p:AppxBundle=Never /p:UapAppxPackageBuildMode=SideloadOnly /p:AppxBundlePlatforms="${{ github.event.inputs.buildPlatform }}"
|
||||
|
||||
- name: Execute MSIXBundle build
|
||||
working-directory: ${{ github.workspace }}
|
||||
env:
|
||||
INCLUDE_SYMBOLS: ${{ github.event.inputs.buildConfiguration == 'Debug' && 'true' || 'false' }}
|
||||
if: github.event.inputs.buildPlatform == 'Bundle'
|
||||
run: |
|
||||
echo "include symbols = ${{ env.INCLUDE_SYMBOLS }}"
|
||||
msbuild UWP/PPSSPP_UWP.sln /m /p:TrackFileAccess=false /p:Configuration=${{ github.event.inputs.buildConfiguration }} /p:Platform=x64 /p:IncludeSymbols=${{ env.INCLUDE_SYMBOLS }} /p:AppxSymbolPackageEnabled=${{ env.INCLUDE_SYMBOLS }} /p:AppxPackageSigningEnabled=${{ github.event.inputs.signedPackage }} /p:PackageCertificateKeyFile=PPSSPP_UWP_TemporaryKey.pfx /p:AppxBundle=Always /p:UapAppxPackageBuildMode=SideloadOnly /p:AppxBundlePlatforms="x64|ARM64"
|
||||
|
||||
- name: Package build
|
||||
working-directory: ${{ github.workspace }}
|
||||
run: |
|
||||
# Testing file location ...
|
||||
#find . -name "PPSSPP*.exe"
|
||||
#find . -name "*.appx*"
|
||||
#find . -name "*.msix*"
|
||||
mkdir ppsspp
|
||||
#ls UWP/AppPackages/PPSSPP_UWP
|
||||
cp -r UWP/AppPackages/PPSSPP_UWP/*.* ppsspp/
|
||||
#ls ppsspp
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: UWP-${{ github.event.inputs.buildConfiguration }}-${{ github.event.inputs.buildPlatform }} build
|
||||
path: ppsspp/
|
||||
Reference in new issue
Block a user