| name: Build (Sony Playstation Vita) |
| |
| on: [push, pull_request] |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} |
| cancel-in-progress: true |
| |
| defaults: |
| run: |
| shell: sh |
| |
| jobs: |
| vita: |
| name: ${{ matrix.platform.name }} |
| runs-on: ubuntu-latest |
| container: |
| image: vitasdk/vitasdk:latest |
| strategy: |
| fail-fast: false |
| matrix: |
| platform: |
| - { name: Vita (GLES w/ pib), os: windows-latest, pib: true, version: 1.1.4, artifact: SDL-vita-pib } |
| - { name: Vita (GLES w/ PVR_PSP2 + gles4vita), os: windows-latest, pvr: true, version: 3.9, artifact: SDL-vita-pvr } |
| |
| steps: |
| - uses: actions/checkout@v3 |
| - name: Install build requirements |
| run: | |
| apk update |
| apk add cmake ninja pkgconf bash tar |
| |
| - uses: actions/cache/restore@v3 |
| id: restore-cache |
| with: |
| path: /vita/dependencies |
| key: ${{ matrix.platform.artifact }}-${{ matrix.platform.version }} |
| |
| - name: Download PVR_PSP2 (GLES) |
| if: ${{ !!matrix.platform.pvr && !steps.restore-cache.outputs.cache-hit }} |
| run: | |
| pvr_psp2_version=${{ matrix.platform.version }} |
| |
| mkdir -p /vita/dependencies/include |
| mkdir -p /vita/dependencies/lib |
| |
| # Configure PVR_PSP2 headers |
| wget https://github.com/GrapheneCt/PVR_PSP2/archive/refs/tags/v$pvr_psp2_version.zip -P/tmp |
| unzip /tmp/v$pvr_psp2_version.zip -d/tmp |
| cp -r /tmp/PVR_PSP2-$pvr_psp2_version/include/* /vita/dependencies/include |
| rm /tmp/v$pvr_psp2_version.zip |
| |
| # include guard of PVR_PSP2's khrplatform.h does not match the usual one |
| sed -i -e s/__drvkhrplatform_h_/__khrplatform_h_/ /vita/dependencies/include/KHR/khrplatform.h |
| |
| # Configure PVR_PSP2 stub libraries |
| wget https://github.com/GrapheneCt/PVR_PSP2/releases/download/v$pvr_psp2_version/vitasdk_stubs.zip -P/tmp |
| unzip /tmp/vitasdk_stubs.zip -d/tmp/pvr_psp2_stubs |
| find /tmp/pvr_psp2_stubs -type f -name "*.a" -exec cp {} /vita/dependencies/lib \; |
| rm /tmp/vitasdk_stubs.zip |
| rm -rf /tmp/pvr_psp2_stubs |
| |
| - name: Download gl4es4vita (OpenGL) |
| if: ${{ !!matrix.platform.pib && !steps.restore-cache.outputs.cache-hit }} |
| run: | |
| gl4es4vita_version=${{ matrix.platform.version }} |
| |
| mkdir -p /vita/dependencies/include |
| mkdir -p /vita/dependencies/lib |
| |
| # Configure gl4es4vita headers |
| wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/include.zip -P/tmp |
| unzip -o /tmp/include.zip -d/vita/dependencies/include |
| rm /tmp/include.zip |
| |
| # Configure gl4es4vita stub libraries |
| wget https://github.com/SonicMastr/gl4es4vita/releases/download/v$gl4es4vita_version-vita/vitasdk_stubs.zip -P/tmp |
| unzip /tmp/vitasdk_stubs.zip -d/vita/dependencies/lib |
| |
| - uses: actions/cache/save@v3 |
| with: |
| path: /vita/dependencies |
| key: ${{ matrix.platform.artifact }}-${{ matrix.platform.version }} |
| |
| - name: Copy PVR_PSP2 (GLES) or gl4es4vita (OpenGL) to vita toolchain dir |
| run: | |
| cp -rv /vita/dependencies/* ${VITASDK}/arm-vita-eabi |
| |
| - name: Configure (CMake) |
| run: | |
| cmake -S . -B build -G Ninja \ |
| -Wdeprecated -Wdev -Werror \ |
| -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake \ |
| -DVIDEO_VITA_PIB=${{ !!matrix.platform.pib }} \ |
| -DVIDEO_VITA_PVR=${{ !!matrix.platform.pvr }} \ |
| -DSDL_WERROR=ON \ |
| -DSDL_TESTS=ON \ |
| -DSDL_INSTALL_TESTS=ON \ |
| -DCMAKE_BUILD_TYPE=Release \ |
| -DCMAKE_INSTALL_PREFIX=prefix |
| - name: Build (CMake) |
| run: cmake --build build --verbose |
| - name: Install (CMake) |
| run: | |
| echo "SDL3_DIR=$(pwd)/prefix" >> $GITHUB_ENV |
| cmake --install build/ |
| ( cd prefix; find ) | LC_ALL=C sort -u |
| - name: Package (CPack) |
| run: | |
| cmake --build build/ --config Release --target package |
| - name: Verify CMake configuration files |
| run: | |
| cmake -S cmake/test -B cmake_config_build -G Ninja \ |
| -DCMAKE_TOOLCHAIN_FILE=${VITASDK}/share/vita.toolchain.cmake \ |
| -DTEST_SHARED=FALSE \ |
| -DCMAKE_PREFIX_PATH=${{ env.SDL3_DIR }} \ |
| -DCMAKE_BUILD_TYPE=Release |
| cmake --build cmake_config_build --verbose |
| - name: Verify sdl3.pc |
| run: | |
| export CC=arm-vita-eabi-gcc |
| export PKG_CONFIG_PATH=${{ env.SDL3_DIR }}/lib/pkgconfig |
| cmake/test/test_pkgconfig.sh |
| - uses: actions/upload-artifact@v3 |
| with: |
| if-no-files-found: error |
| name: ${{ matrix.platform.artifact }} |
| path: build/dist/SDL3* |