diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 934a6f2fd..f3922d769 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,10 +3,7 @@ on: [push, pull_request] jobs: linux-os: - runs-on: ubuntu-22.04 - env: - ALSOFT_CONF: resources/alsoft.conf - DISPLAY: :99 + runs-on: ubuntu-20.04 steps: - name: Update APT run: sudo apt-get update @@ -19,15 +16,12 @@ jobs: libgl1-mesa-dev libdbus-1-dev libudev-dev libgles2-mesa-dev \ libegl1-mesa-dev libibus-1.0-dev fcitx-libs-dev libsamplerate0-dev \ libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev \ - libfuse2 wmctrl openbox mesa-vulkan-drivers libvulkan1 vulkan-tools \ - vulkan-validationlayers libcurl4-openssl-dev + libcurl4-openssl-dev - name: Checkout love-appimage-source uses: actions/checkout@v3 with: repository: love2d/love-appimage-source ref: 12.x - - name: Checkout Repo - uses: actions/checkout@v3 - name: Checkout LÖVE uses: actions/checkout@v3 with: @@ -56,89 +50,8 @@ jobs: with: name: love-x86_64-AppImage-debug path: love-${{ github.sha }}.AppImage-debug.tar.gz - - name: Make Runnable - run: | - chmod a+x love-${{ github.sha }}.AppImage - echo "ready to run" - ls - - name: Start xvfb and openbox - run: | - echo "Starting XVFB on $DISPLAY" - Xvfb $DISPLAY -screen 0, 360x240x24 & - echo "XVFBPID=$!" >> $GITHUB_ENV - # wait for xvfb to startup (3s is the same amount xvfb-run waits by default) - sleep 3 - openbox & - echo "OPENBOXPID=$!" >> $GITHUB_ENV - # linux opengl tests - - name: Run All Tests (opengl) - run: | - ls - ./love-${{ github.sha }}.AppImage ./testing/main.lua - - name: Love Test Report (opengl) - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Linux - title: test-report-linux-opengl - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengl) - run: | - 7z a -tzip test-output-linux-opengl.zip testing/output/ - - name: Artifact Test Output (opengl) - uses: actions/upload-artifact@v3 - with: - name: test-output-linux-opengl - path: test-output-linux-opengl.zip - # linux opengles tests - - name: Run Test Suite (opengles) - run: | - export LOVE_GRAPHICS_USE_OPENGLES=1 - ./love-${{ github.sha }}.AppImage ./testing/main.lua - - name: Love Test Report (opengles) - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Linux - title: test-report-linux-opengles - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengles) - run: | - 7z a -tzip test-output-linux-opengles.zip testing/output/ - - name: Artifact Test Output (opengles) - uses: actions/upload-artifact@v3 - with: - name: test-output-linux-opengles - path: test-output-linux-opengles.zip - # linux vulkan tests - - name: Run Test Suite (vulkan) - run: | - export LOVE_GRAPHICS_DEBUG=1 - ./love-${{ github.sha }}.AppImage ./testing/main.lua --runAllTests --renderers vulkan - - name: Love Test Report (vulkan) - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Linux - title: test-report-linux-vulkan - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (vulkan) - run: | - 7z a -tzip test-output-linux-vulkan.zip testing/output/ - - name: Artifact Test Output (vulkan) - uses: actions/upload-artifact@v3 - with: - name: test-output-linux-vulkan - path: test-output-linux-vulkan.zip - - name: Stop xvfb and openbox - # should always stop xvfb and openbox even if other steps failed - if: always() - run: | - kill $XVFBPID - kill $OPENBOXPID windows-os: runs-on: windows-latest - env: - ALSOFT_CONF: resources/alsoft.conf - VK_ICD_FILENAMES: ${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json - VULKAN_SDK: C:/VulkanSDK/1.3.231.1 strategy: matrix: platform: [Win32, x64, ARM64] @@ -227,8 +140,6 @@ jobs: result = subprocess.run("git -C megasource rev-parse HEAD".split(), check=True, capture_output=True, encoding="UTF-8") commit = result.stdout.split()[0] with open(os.environ["GITHUB_OUTPUT"], "w", encoding="UTF-8") as f: f.write(f"commit={commit}") - - name: Checkout - uses: actions/checkout@v3 - name: Checkout uses: actions/checkout@v3 with: @@ -294,97 +205,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: love-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-dbg - path: pdb/Release/*.pdb - - name: Install Mesa - run: | - curl -L --output mesa.7z --url https://github.com/pal1000/mesa-dist-win/releases/download/23.2.1/mesa3d-23.2.1-release-msvc.7z - 7z x mesa.7z -o* - powershell.exe mesa\systemwidedeploy.cmd 1 - - name: Build Test Exe - if: steps.vars.outputs.arch != 'ARM64' - run: cmake --build build --config Release --target install - - name: Run Tests (opengl) - if: steps.vars.outputs.arch != 'ARM64' - run: | - echo 'check dir' - dir - powershell.exe ./install/lovec.exe ./testing/main.lua - # windows opengl test - - name: Love Test Report (opengl) - if: steps.vars.outputs.arch != 'ARM64' - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Windows (opengl) - title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-opengl - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengl) - if: steps.vars.outputs.arch != 'ARM64' - run: | - 7z a -tzip test-output-windows-opengl.zip testing/output/ - - name: Artifact Test Output (opengl) - if: steps.vars.outputs.arch != 'ARM64' - uses: actions/upload-artifact@v3 - with: - name: test-output-windows-opengl - path: test-output-windows-opengl.zip - # windows opengles test - - name: Run Tests (opengles) - if: steps.vars.outputs.arch != 'ARM64' - run: | - $ENV:LOVE_GRAPHICS_USE_OPENGLES=1 - powershell.exe ./install/lovec.exe ./testing/main.lua - - name: Love Test Report (opengles) - if: steps.vars.outputs.arch != 'ARM64' - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Windows (opengles) - title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-opengles - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (opengles) - if: steps.vars.outputs.arch != 'ARM64' - run: | - 7z a -tzip test-output-windows-opengles.zip testing/output/ - - name: Artifact Test Output (opengles) - if: steps.vars.outputs.arch != 'ARM64' - uses: actions/upload-artifact@v3 - with: - name: test-output-windows-opengles - path: test-output-windows-opengles.zip - - name: Install Vulkan - if: steps.vars.outputs.arch != 'ARM64' - run: | - curl -L --show-error --output VulkanSDK.exe https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/VulkanSDK-1.3.231.1-Installer.exe - ./VulkanSDK.exe --root C:/VulkanSDK/1.3.231.1 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.vma - curl -L --show-error --output vulkan-runtime.zip https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/vulkan-runtime-components.zip - 7z e vulkan-runtime.zip -o"C:/VulkanSDK/1.3.231.1/runtime/x64" */x64 - copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "mesa/x64" - copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "C:/Windows/System32" - copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "love-12.0-win64/love-12.0-win64" - reg add HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers /v "${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json" /t REG_DWORD /d 0 - powershell.exe C:/VulkanSDK/1.3.231.1/runtime/x64/vulkaninfo.exe --summary - # windows vulkan tests - - name: Run Tests (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - run: | - $ENV:LOVE_GRAPHICS_DEBUG=1 - powershell.exe ./install/lovec.exe ./testing/main.lua --runAllTests --renderers vulkan - - name: Love Test Report (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite Windows (vulkan) - title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-vulkan - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - run: | - 7z a -tzip test-output-windows-vulkan.zip testing/output - - name: Artifact Test Output (vulkan) - if: steps.vars.outputs.arch != 'ARM64' - uses: actions/upload-artifact@v3 - with: - name: test-output-windows-vulkan - path: test-output-windows-vulkan.zip + path: pdb/Release/*.pdb macOS: runs-on: macos-latest steps: @@ -413,23 +234,6 @@ jobs: with: name: love-macos path: love-macos.zip - # macos opengl tests - - name: Run Tests - run: love-macos/love.app/Contents/MacOS/love testing/main.lua - - name: Love Test Report - uses: ellraiser/love-test-report@main - with: - name: Love Testsuite MacOS - title: test-report-macos - path: testing/output/lovetest_runAllTests.md - - name: Zip Test Output - run: | - 7z a -tzip test-output-macos-opengl.zip testing/output/ - - name: Artifact Test Output - uses: actions/upload-artifact@v3 - with: - name: test-output-macos-opengl - path: test-output-macos-opengl.zip iOS-Simulator: runs-on: macos-latest steps: diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml new file mode 100644 index 000000000..2ca8483d1 --- /dev/null +++ b/.github/workflows/testsuite.yml @@ -0,0 +1,445 @@ +name: continuous-integration +on: [push, pull_request] + +jobs: + linux-os: + runs-on: ubuntu-22.04 + env: + ALSOFT_CONF: resources/alsoft.conf + DISPLAY: :99 + steps: + - name: Update APT + run: sudo apt-get update + - name: Install Dependencies + run: | + sudo apt-get install --assume-yes build-essential git make cmake autoconf automake \ + libtool pkg-config libasound2-dev libpulse-dev libaudio-dev \ + libjack-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev \ + libxfixes-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev \ + libgl1-mesa-dev libdbus-1-dev libudev-dev libgles2-mesa-dev \ + libegl1-mesa-dev libibus-1.0-dev fcitx-libs-dev libsamplerate0-dev \ + libsndio-dev libwayland-dev libxkbcommon-dev libdrm-dev libgbm-dev \ + libfuse2 wmctrl openbox mesa-vulkan-drivers libvulkan1 vulkan-tools \ + vulkan-validationlayers libcurl4-openssl-dev + - name: Checkout love-appimage-source + uses: actions/checkout@v3 + with: + repository: love2d/love-appimage-source + ref: 12.x + - name: Checkout LÖVE + uses: actions/checkout@v3 + with: + path: love2d-${{ github.sha }} + - name: Get Dependencies for AppImage + shell: python + env: + LOVE_BRANCH: ${{ github.sha }} + run: | + import os + for i in range(250): + if os.system(f"make getdeps LOVE_BRANCH={os.environ['LOVE_BRANCH']}") == 0: + raise SystemExit(0) + raise Exception("make getdeps failed") + - name: Build AppImage + run: make LOVE_BRANCH=${{ github.sha }} + - name: Print LuaJIT branch + run: git -C LuaJIT-v2.1 branch -v + - name: Artifact + uses: actions/upload-artifact@v3 + with: + name: love-linux-x86_64.AppImage + path: love-${{ github.sha }}.AppImage + - name: Artifact Debug Symbols + uses: actions/upload-artifact@v3 + with: + name: love-x86_64-AppImage-debug + path: love-${{ github.sha }}.AppImage-debug.tar.gz + - name: Make Runnable + run: | + chmod a+x love-${{ github.sha }}.AppImage + echo "ready to run" + ls + - name: Start xvfb and openbox + run: | + echo "Starting XVFB on $DISPLAY" + Xvfb $DISPLAY -screen 0, 360x240x24 & + echo "XVFBPID=$!" >> $GITHUB_ENV + # wait for xvfb to startup (3s is the same amount xvfb-run waits by default) + sleep 3 + openbox & + echo "OPENBOXPID=$!" >> $GITHUB_ENV + # linux opengl tests + - name: Run All Tests (opengl) + run: | + ls + ./love-${{ github.sha }}.AppImage ./testing/main.lua + - name: Love Test Report (opengl) + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite Linux + title: test-report-linux-opengl + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output (opengl) + run: | + 7z a -tzip test-output-linux-opengl.zip testing/output/ + - name: Artifact Test Output (opengl) + uses: actions/upload-artifact@v3 + with: + name: test-output-linux-opengl + path: test-output-linux-opengl.zip + # linux opengles tests + - name: Run Test Suite (opengles) + run: | + export LOVE_GRAPHICS_USE_OPENGLES=1 + ./love-${{ github.sha }}.AppImage ./testing/main.lua + - name: Love Test Report (opengles) + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite Linux + title: test-report-linux-opengles + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output (opengles) + run: | + 7z a -tzip test-output-linux-opengles.zip testing/output/ + - name: Artifact Test Output (opengles) + uses: actions/upload-artifact@v3 + with: + name: test-output-linux-opengles + path: test-output-linux-opengles.zip + # linux vulkan tests + - name: Run Test Suite (vulkan) + run: | + export LOVE_GRAPHICS_DEBUG=1 + ./love-${{ github.sha }}.AppImage ./testing/main.lua --runAllTests --renderers vulkan + - name: Love Test Report (vulkan) + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite Linux + title: test-report-linux-vulkan + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output (vulkan) + run: | + 7z a -tzip test-output-linux-vulkan.zip testing/output/ + - name: Artifact Test Output (vulkan) + uses: actions/upload-artifact@v3 + with: + name: test-output-linux-vulkan + path: test-output-linux-vulkan.zip + - name: Stop xvfb and openbox + # should always stop xvfb and openbox even if other steps failed + if: always() + run: | + kill $XVFBPID + kill $OPENBOXPID + windows-os: + runs-on: windows-latest + env: + ALSOFT_CONF: resources/alsoft.conf + VK_ICD_FILENAMES: ${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json + VULKAN_SDK: C:/VulkanSDK/1.3.231.1 + strategy: + matrix: + platform: [Win32, x64, ARM64] + install: [compat, modern] + exclude: + - platform: ARM64 + install: compat + defaults: + run: + shell: cmd + continue-on-error: ${{ matrix.platform == 'ARM64' }} + steps: + - name: Define Variables + id: vars + run: | + rem Compat/Modern switch + if "${{ matrix.install }}" == "compat" ( + echo moredef=-DLOVE_INSTALL_UCRT=ON>> "%GITHUB_OUTPUT%" + echo compatname=-compat>> "%GITHUB_OUTPUT%" + ) else ( + echo moredef=>> "%GITHUB_OUTPUT%" + echo compatname=>> "%GITHUB_OUTPUT%" + ) + + rem JIT Modules + if "${{ matrix.platform }}-${{ matrix.install }}" == "x64-modern" ( + (echo jitmodules=1)>> "%GITHUB_OUTPUT%" + ) else ( + (echo jitmodules=0)>> "%GITHUB_OUTPUT%" + ) + + rem Architecture-Specific Switch + goto ${{ matrix.platform }} + exit /b 1 + + :Win32 + (echo arch=x86)>> "%GITHUB_OUTPUT%" + (echo angle=0)>> "%GITHUB_OUTPUT%" + echo nofiles=warn>> "%GITHUB_OUTPUT%" + exit /b 0 + + :x64 + (echo arch=x64)>> "%GITHUB_OUTPUT%" + (echo angle=0)>> "%GITHUB_OUTPUT%" + echo nofiles=warn>> "%GITHUB_OUTPUT%" + exit /b 0 + + :ARM64 + (echo arch=arm64)>> "%GITHUB_OUTPUT%" + (echo angle=1)>> "%GITHUB_OUTPUT%" + echo nofiles=ignore>> "%GITHUB_OUTPUT%" + echo moredef=-DLOVE_EXTRA_DLLS=%CD%\angle\libEGL.dll;%CD%\angle\libGLESv2.dll>> "%GITHUB_OUTPUT%" + exit /b 0 + - name: Download Windows SDK Setup 10.0.20348 + run: curl -Lo winsdksetup.exe https://go.microsoft.com/fwlink/?linkid=2164145 + - name: Install Debugging Tools for Windows + id: windbg + run: | + setlocal enabledelayedexpansion + start /WAIT %CD%\winsdksetup.exe /features OptionId.WindowsDesktopDebuggers /q /log %CD%\log.txt + echo ERRORLEVEL=!ERRORLEVEL! >> %GITHUB_OUTPUT% + - name: Print Debugging Tools Install Log + if: always() + run: | + type log.txt + exit /b ${{ steps.windbg.outputs.ERRORLEVEL }} + - name: Setup Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Download source_index.py + run: curl -Lo source_index.py https://gist.github.com/MikuAuahDark/d9c099f5714e09a765496471c2827a55/raw/df34956052035f3473c5f01861dfb53930d06843/source_index.py + - name: Clone Megasource + uses: actions/checkout@v3 + with: + path: megasource + repository: love2d/megasource + ref: 12.x + - id: megasource + name: Get Megasource Commit SHA + shell: python + run: | + import os + import subprocess + + result = subprocess.run("git -C megasource rev-parse HEAD".split(), check=True, capture_output=True, encoding="UTF-8") + commit = result.stdout.split()[0] + with open(os.environ["GITHUB_OUTPUT"], "w", encoding="UTF-8") as f: f.write(f"commit={commit}") + - name: Checkout + uses: actions/checkout@v3 + with: + path: megasource/libs/love + - name: Download ANGLE + uses: robinraju/release-downloader@v1.7 + if: steps.vars.outputs.angle == '1' + with: + repository: MikuAuahDark/angle-winbuild + tag: cr_5249 + fileName: angle-win-${{ steps.vars.outputs.arch }}.zip + tarBall: false + zipBall: false + out-file-path: angle + - name: Extract ANGLE + if: steps.vars.outputs.angle == '1' + working-directory: angle + run: 7z x angle-win-${{ steps.vars.outputs.arch }}.zip + - name: Delete Strawbery Perl + # https://github.com/actions/runner-images/issues/6627 + # In particular, this is not pretty, but even CMAKE_IGNORE_PREFIX_PATH + # cannot help in this case. Delete the whole folder! + run: | + rmdir /s /q C:\Strawberry + exit /b 0 + - name: Configure + env: + CFLAGS: /Zi + CXXFLAGS: /Zi + LDFLAGS: /DEBUG:FULL /OPT:REF /OPT:ICF + run: cmake -Bbuild -Smegasource -T v142 -A ${{ matrix.platform }} --install-prefix %CD%\install -DCMAKE_PDB_OUTPUT_DIRECTORY=%CD%\pdb ${{ steps.vars.outputs.moredef }} + - name: Install + run: cmake --build build --target PACKAGE --config Release -j2 + - name: Copy LuaJIT lua51.pdb + run: | + copy /Y build\libs\LuaJIT\src\lua51.pdb pdb\Release\lua51.pdb + exit /b 0 + - name: Add srcsrv to PATH + run: | + echo C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\srcsrv>>%GITHUB_PATH% + - name: Embed Source Index into PDBs + run: | + python source_index.py ^ + --source %CD%\megasource\libs\love https://raw.githubusercontent.com/${{ github.repository }}/${{ github.sha }} ^ + --source %CD%\megasource https://raw.githubusercontent.com/love2d/megasource/${{ steps.megasource.outputs.commit }} ^ + --source %CD%\build\libs\LuaJIT https://raw.githubusercontent.com/love2d/megasource/${{ steps.megasource.outputs.commit }}/libs/LuaJIT ^ + pdb\Release\*.pdb + - name: Artifact + uses: actions/upload-artifact@v3 + with: + name: love-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }} + path: | + build/*.zip + build/*.exe + if-no-files-found: ${{ steps.vars.outputs.nofiles }} + - name: Artifact JIT Modules + if: steps.vars.outputs.jitmodules == '1' + uses: actions/upload-artifact@v3 + with: + name: love-windows-jitmodules + path: build/libs/LuaJIT/src/jit/*.lua + - name: Artifact PDB + uses: actions/upload-artifact@v3 + with: + name: love-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-dbg + path: pdb/Release/*.pdb + - name: Install Mesa + run: | + curl -L --output mesa.7z --url https://github.com/pal1000/mesa-dist-win/releases/download/23.2.1/mesa3d-23.2.1-release-msvc.7z + 7z x mesa.7z -o* + powershell.exe mesa\systemwidedeploy.cmd 1 + - name: Build Test Exe + if: steps.vars.outputs.arch != 'ARM64' + run: cmake --build build --config Release --target install + - name: Run Tests (opengl) + if: steps.vars.outputs.arch != 'ARM64' + run: | + echo 'check dir' + dir + powershell.exe ./install/lovec.exe ./testing/main.lua + # windows opengl test + - name: Love Test Report (opengl) + if: steps.vars.outputs.arch != 'ARM64' + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite Windows (opengl) + title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-opengl + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output (opengl) + if: steps.vars.outputs.arch != 'ARM64' + run: | + 7z a -tzip test-output-windows-opengl.zip testing/output/ + - name: Artifact Test Output (opengl) + if: steps.vars.outputs.arch != 'ARM64' + uses: actions/upload-artifact@v3 + with: + name: test-output-windows-opengl + path: test-output-windows-opengl.zip + # windows opengles test + - name: Run Tests (opengles) + if: steps.vars.outputs.arch != 'ARM64' + run: | + $ENV:LOVE_GRAPHICS_USE_OPENGLES=1 + powershell.exe ./install/lovec.exe ./testing/main.lua + - name: Love Test Report (opengles) + if: steps.vars.outputs.arch != 'ARM64' + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite Windows (opengles) + title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-opengles + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output (opengles) + if: steps.vars.outputs.arch != 'ARM64' + run: | + 7z a -tzip test-output-windows-opengles.zip testing/output/ + - name: Artifact Test Output (opengles) + if: steps.vars.outputs.arch != 'ARM64' + uses: actions/upload-artifact@v3 + with: + name: test-output-windows-opengles + path: test-output-windows-opengles.zip + - name: Install Vulkan + if: steps.vars.outputs.arch != 'ARM64' + run: | + curl -L --show-error --output VulkanSDK.exe https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/VulkanSDK-1.3.231.1-Installer.exe + ./VulkanSDK.exe --root C:/VulkanSDK/1.3.231.1 --accept-licenses --default-answer --confirm-command install com.lunarg.vulkan.core com.lunarg.vulkan.vma + curl -L --show-error --output vulkan-runtime.zip https://sdk.lunarg.com/sdk/download/1.3.231.1/windows/vulkan-runtime-components.zip + 7z e vulkan-runtime.zip -o"C:/VulkanSDK/1.3.231.1/runtime/x64" */x64 + copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "mesa/x64" + copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "C:/Windows/System32" + copy "C:/VulkanSDK/1.3.231.1/runtime/x64/vulkan-1.dll" "love-12.0-win64/love-12.0-win64" + reg add HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers /v "${{ github.workspace }}\mesa\x64\lvp_icd.x86_64.json" /t REG_DWORD /d 0 + powershell.exe C:/VulkanSDK/1.3.231.1/runtime/x64/vulkaninfo.exe --summary + # windows vulkan tests + - name: Run Tests (vulkan) + if: steps.vars.outputs.arch != 'ARM64' + run: | + $ENV:LOVE_GRAPHICS_DEBUG=1 + powershell.exe ./install/lovec.exe ./testing/main.lua --runAllTests --renderers vulkan + - name: Love Test Report (vulkan) + if: steps.vars.outputs.arch != 'ARM64' + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite Windows (vulkan) + title: test-report-windows-${{ steps.vars.outputs.arch }}${{ steps.vars.outputs.compatname }}-vulkan + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output (vulkan) + if: steps.vars.outputs.arch != 'ARM64' + run: | + 7z a -tzip test-output-windows-vulkan.zip testing/output + - name: Artifact Test Output (vulkan) + if: steps.vars.outputs.arch != 'ARM64' + uses: actions/upload-artifact@v3 + with: + name: test-output-windows-vulkan + path: test-output-windows-vulkan.zip + macOS: + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Clone Dependencies + uses: actions/checkout@v3 + with: + path: apple-dependencies + repository: love2d/love-apple-dependencies + ref: 12.x + - name: Move Dependencies + run: + mv apple-dependencies/macOS/Frameworks platform/xcode/macosx + - name: Build + run: + xcodebuild clean archive -project platform/xcode/love.xcodeproj -scheme love-macosx -configuration Release -archivePath love-macos.xcarchive + - name: Export Archive + run: + xcodebuild -exportArchive -archivePath love-macos.xcarchive -exportPath love-macos -exportOptionsPlist platform/xcode/macosx/macos-copy-app.plist + - name: Zip Archive + run: + ditto -c -k --sequesterRsrc --keepParent love-macos/love.app love-macos.zip + - name: Artifact + uses: actions/upload-artifact@v3 + with: + name: love-macos + path: love-macos.zip + # macos opengl tests + - name: Run Tests + run: love-macos/love.app/Contents/MacOS/love testing/main.lua + - name: Love Test Report + uses: ellraiser/love-test-report@main + with: + name: Love Testsuite MacOS + title: test-report-macos + path: testing/output/lovetest_runAllTests.md + - name: Zip Test Output + run: | + 7z a -tzip test-output-macos-opengl.zip testing/output/ + - name: Artifact Test Output + uses: actions/upload-artifact@v3 + with: + name: test-output-macos-opengl + path: test-output-macos-opengl.zip + iOS-Simulator: + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Clone Dependencies + uses: actions/checkout@v3 + with: + path: apple-dependencies + repository: love2d/love-apple-dependencies + ref: 12.x + - name: Move Dependencies + run: | + mv apple-dependencies/iOS/libraries platform/xcode/ios + - name: Build + run: + xcodebuild -project platform/xcode/love.xcodeproj -scheme love-ios -configuration Release -destination 'platform=iOS Simulator,name=iPhone 11'