CI: macOS builds for distribution (using LTO) instead of release #298
This file contains 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: continuous-integration | |
on: [push, pull_request] | |
jobs: | |
Linux: | |
runs-on: ubuntu-22.04 | |
permissions: | |
checks: write | |
pull-requests: write | |
env: | |
ALSOFT_CONF: love2d-${{ github.sha }}/testing/resources/alsoft.conf | |
VK_LAYER_SETTINGS_PATH: love2d-${{ github.sha }}/testing/resources/vk_layer_settings.txt | |
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 \ | |
libcurl4-openssl-dev libfuse2 wmctrl openbox mesa-vulkan-drivers \ | |
libvulkan1 | |
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.283-jammy.list https://packages.lunarg.com/vulkan/1.3.283/lunarg-vulkan-1.3.283-jammy.list | |
sudo apt update | |
sudo apt install --assume-yes vulkan-sdk | |
- name: Checkout love-appimage-source | |
uses: actions/checkout@v4 | |
with: | |
repository: love2d/love-appimage-source | |
ref: 12.x | |
- name: Checkout LÖVE | |
uses: actions/checkout@v4 | |
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 | |
# start xvfb for test running | |
- 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 Test Suite (opengl) | |
run: | | |
chmod a+x love-${{ github.sha }}.AppImage | |
./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers opengl | |
- name: Love Test Report (opengl) | |
id: report1 | |
uses: ellraiser/love-test-report@main | |
with: | |
name: Love Testsuite Linux | |
title: test-report-linux-opengl | |
path: love2d-${{ github.sha }}/testing/output/lovetest_all.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Zip Test Output (opengl) | |
run: | | |
7z a -tzip test-output-linux-opengl.zip love2d-${{ github.sha }}/testing/output/ | |
- name: Artifact Test Output (opengl) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-output-linux-opengl-${{ steps.report1.outputs.conclusion }} | |
path: test-output-linux-opengl.zip | |
# linux opengles tests | |
- name: Run Test Suite (opengles) | |
env: | |
LOVE_GRAPHICS_DEBUG: 1 | |
run: | | |
export LOVE_GRAPHICS_USE_OPENGLES=1 | |
./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers opengl | |
- name: Love Test Report (opengles) | |
uses: ellraiser/love-test-report@main | |
id: report2 | |
with: | |
name: Love Testsuite Linux | |
title: test-report-linux-opengles | |
path: love2d-${{ github.sha }}/testing/output/lovetest_all.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Zip Test Output (opengles) | |
run: | | |
7z a -tzip test-output-linux-opengles.zip love2d-${{ github.sha }}/testing/output/ | |
- name: Artifact Test Output (opengles) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-output-linux-opengles-${{ steps.report2.outputs.conclusion }} | |
path: test-output-linux-opengles.zip | |
# linux vulkan tests | |
- name: Run Test Suite (vulkan) | |
env: | |
LOVE_GRAPHICS_DEBUG: 1 | |
run: | | |
./love-${{ github.sha }}.AppImage love2d-${{ github.sha }}/testing/main.lua --all --isRunner --renderers vulkan | |
- name: Love Test Report (vulkan) | |
uses: ellraiser/love-test-report@main | |
with: | |
name: Love Testsuite Linux | |
title: test-report-linux-vulkan | |
path: love2d-${{ github.sha }}/testing/output/lovetest_all.md | |
- name: Zip Test Output (vulkan) | |
run: | | |
7z a -tzip test-output-linux-vulkan.zip love2d-${{ github.sha }}/testing/output/ | |
- name: Artifact Test Output (vulkan) | |
uses: actions/upload-artifact@v4 | |
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 | |
- name: Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-linux-x86_64.AppImage | |
path: love-${{ github.sha }}.AppImage | |
- name: Artifact Debug Symbols | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-x86_64-AppImage-debug | |
path: love-${{ github.sha }}.AppImage-debug.tar.gz | |
- name: Check Tests Passing | |
if: steps.report1.outputs.conclusion == 'failure' || steps.report2.outputs.conclusion == 'failure' | |
run: | | |
echo "${{ steps.report1.outputs.failed }} opengl tests failed" | |
echo "${{ steps.report2.outputs.failed }} opengles tests failed" | |
exit 1 | |
Windows: | |
runs-on: windows-latest | |
permissions: | |
checks: write | |
pull-requests: write | |
env: | |
ALSOFT_CONF: megasource/libs/love/testing/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: [x64, ARM64] | |
defaults: | |
run: | |
shell: cmd | |
continue-on-error: ${{ matrix.platform == 'ARM64' }} | |
steps: | |
- name: Define Variables | |
id: vars | |
run: | | |
rem JIT Modules | |
if "${{ matrix.platform }}" == "x64" ( | |
(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 pdbstr | |
run: curl -Lfo pdbstr.nupkg https://www.nuget.org/api/v2/package/Microsoft.Debugging.Tools.PdbStr/20230731.1609.0 | |
- name: Download srctool | |
run: curl -Lfo srctool.nupkg https://www.nuget.org/api/v2/package/Microsoft.Debugging.Tools.SrcTool/20230731.1609.0 | |
- name: Extract Tools and Add to PATH | |
run: | | |
mkdir debugtools | |
cd debugtools | |
if errorlevel 1 exit /b 1 | |
7z e ..\srctool.nupkg content/amd64/srctool.exe | |
if errorlevel 1 exit /b 1 | |
7z e ..\pdbstr.nupkg content/amd64/pdbstr.exe | |
if errorlevel 1 exit /b 1 | |
echo %CD%>>%GITHUB_PATH% | |
- name: Setup Python 3.10 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- name: Download source_index.py | |
run: curl -Lfo source_index.py https://gist.github.com/MikuAuahDark/d9c099f5714e09a765496471c2827a55/raw/df34956052035f3473c5f01861dfb53930d06843/source_index.py | |
- name: Clone Megasource | |
uses: actions/checkout@v4 | |
with: | |
path: megasource | |
repository: love2d/megasource | |
ref: main | |
- 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@v4 | |
with: | |
path: megasource/libs/love | |
- name: Download ANGLE | |
uses: robinraju/[email protected] | |
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: Remove Strawbery Perl From Path | |
# 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. | |
run: | | |
move /y C:\Strawberry C:\Strawberry_not_in_PATH | |
exit /b 0 | |
- name: Configure | |
env: | |
CFLAGS: /Zi | |
CXXFLAGS: /Zi | |
LDFLAGS: /DEBUG:FULL /OPT:REF /OPT:ICF | |
run: cmake -Bbuild -Smegasource -T v143 -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@v4 | |
with: | |
name: love-windows-${{ steps.vars.outputs.arch }} | |
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@v4 | |
with: | |
name: love-windows-jitmodules | |
path: build/libs/LuaJIT/src/jit/*.lua | |
- name: Artifact PDB | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-windows-${{ steps.vars.outputs.arch }}-dbg | |
path: pdb/Release/*.pdb | |
# install mesa for graphic tests | |
- name: Install Mesa | |
if: steps.vars.outputs.arch != 'ARM64' | |
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 | |
# build love to use for the tests | |
- name: Build Test Exe | |
if: steps.vars.outputs.arch != 'ARM64' | |
run: cmake --build build --config Release --target install | |
# windows opengl tests | |
- name: Run Tests (opengl) | |
if: steps.vars.outputs.arch != 'ARM64' | |
env: | |
LOVE_GRAPHICS_DEBUG: 1 | |
run: | | |
echo 'check dir' | |
ls | |
powershell.exe ./install/lovec.exe ./megasource/libs/love/testing/main.lua --all --isRunner --renderers opengl | |
- name: Love Test Report (opengl) | |
id: report1 | |
if: steps.vars.outputs.arch != 'ARM64' | |
uses: ellraiser/love-test-report@main | |
with: | |
name: Love Testsuite Windows ${{ steps.vars.outputs.arch }} (opengl) | |
title: test-report-windows-${{ steps.vars.outputs.arch }}-opengl | |
path: megasource/libs/love/testing/output/lovetest_all.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Zip Test Output (opengl) | |
if: steps.vars.outputs.arch != 'ARM64' | |
run: | | |
7z a -tzip test-output-windows-${{ steps.vars.outputs.arch }}-opengl.zip megasource/libs/love/testing/output/ | |
- name: Artifact Test Output (opengl) | |
if: steps.vars.outputs.arch != 'ARM64' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-output-windows-${{ steps.vars.outputs.arch }}-opengl-${{ steps.report1.outputs.conclusion }} | |
path: test-output-windows-${{ steps.vars.outputs.arch }}-opengl.zip | |
# windows opengles tests | |
- name: Run Tests (opengles) | |
if: steps.vars.outputs.arch != 'ARM64' | |
env: | |
LOVE_GRAPHICS_DEBUG: 1 | |
LOVE_GRAPHICS_USE_OPENGLES: 1 | |
run: | | |
powershell.exe ./install/lovec.exe ./megasource/libs/love/testing/main.lua --all --isRunner --renderers opengl | |
- name: Love Test Report (opengles) | |
id: report2 | |
if: steps.vars.outputs.arch != 'ARM64' | |
uses: ellraiser/love-test-report@main | |
with: | |
name: Love Testsuite Windows ${{ steps.vars.outputs.arch }} (opengles) | |
title: test-report-windows-${{ steps.vars.outputs.arch }}-opengles | |
path: megasource/libs/love/testing/output/lovetest_all.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Zip Test Output (opengles) | |
if: steps.vars.outputs.arch != 'ARM64' | |
run: | | |
7z a -tzip test-output-windows-${{ steps.vars.outputs.arch }}-opengles.zip megasource/libs/love/testing/output/ | |
- name: Artifact Test Output (opengles) | |
if: steps.vars.outputs.arch != 'ARM64' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-output-windows-${{ steps.vars.outputs.arch }}-opengles-${{ steps.report2.outputs.conclusion }} | |
path: test-output-windows-${{ steps.vars.outputs.arch }}-opengles.zip | |
- name: Check Tests Passing | |
if: steps.report1.outputs.conclusion == 'failure' || steps.report2.outputs.conclusion == 'failure' | |
run: | | |
echo "${{ steps.report1.outputs.failed }} opengl tests failed" | |
echo "${{ steps.report2.outputs.failed }} opengles tests failed" | |
exit 1 | |
# # install vulkan | |
# - 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' | |
# env: | |
# LOVE_GRAPHICS_DEBUG: 1 | |
# run: | | |
# powershell.exe ./install/lovec.exe ./megasource/libs/love/testing/main.lua --all --isRunner --renderers vulkan | |
# - name: Love Test Report (vulkan) | |
# if: steps.vars.outputs.arch != 'ARM64' | |
# uses: ellraiser/love-test-report@main | |
# with: | |
# name: Love Testsuite Windows ${{ steps.vars.outputs.arch }} (vulkan) | |
# title: test-report-windows-${{ steps.vars.outputs.arch }}-vulkan | |
# path: megasource/libs/love/testing/output/lovetest_all.md | |
# - name: Zip Test Output (vulkan) | |
# if: steps.vars.outputs.arch != 'ARM64' | |
# run: | | |
# 7z a -tzip test-output-windows-${{ steps.vars.outputs.arch }}-vulkan.zip megasource/libs/love/testing/output/ | |
# - name: Artifact Test Output (vulkan) | |
# if: steps.vars.outputs.arch != 'ARM64' | |
# uses: actions/upload-artifact@v4 | |
# with: | |
# name: test-output-windows-${{ steps.vars.outputs.arch }}-vulkan | |
# path: test-output-windows-${{ steps.vars.outputs.arch }}-vulkan.zip | |
macOS: | |
runs-on: macos-latest | |
permissions: | |
checks: write | |
pull-requests: write | |
env: | |
ALSOFT_CONF: testing/resources/alsoft.conf | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Clone Dependencies | |
uses: actions/checkout@v4 | |
with: | |
path: apple-dependencies | |
repository: love2d/love-apple-dependencies | |
ref: main | |
- 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 Distribution -destination generic/platform=macOS -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@v4 | |
with: | |
name: love-macos | |
path: love-macos.zip | |
# macos opengl tests | |
- name: Run Test Suite (OpenGL) | |
env: | |
LOVE_GRAPHICS_DEBUG: 1 | |
run: | | |
ls | |
love-macos/love.app/Contents/MacOS/love ./testing/main.lua --all --isRunner --renderers opengl | |
- name: Love Test Report (OpenGL) | |
id: report1 | |
uses: ellraiser/love-test-report@main | |
with: | |
name: Love Testsuite MacOS | |
title: test-report-macos-opengl | |
path: testing/output/lovetest_all.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Zip Test Output (OpenGL) | |
run: | | |
7z a -tzip test-output-macos-opengl.zip ./testing/output/ | |
- name: Artifact Test Output (OpenGL) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-output-macos-opengl-${{ steps.report1.outputs.conclusion }} | |
path: test-output-macos-opengl.zip | |
- name: Check Tests Passing (OpenGL) | |
if: steps.report1.outputs.conclusion == 'failure' | |
run: | | |
echo "${{ steps.report1.outputs.failed }} opengl tests failed" | |
exit 1 | |
# macos metal tests | |
- name: Run Test Suite (Metal) | |
env: | |
LOVE_GRAPHICS_DEBUG: 1 | |
run: | | |
ls | |
love-macos/love.app/Contents/MacOS/love ./testing/main.lua --all --isRunner --renderers metal | |
- name: Love Test Report (Metal) | |
id: report2 | |
uses: ellraiser/love-test-report@main | |
with: | |
name: Love Testsuite MacOS (Metal) | |
title: test-report-macos-metal | |
path: testing/output/lovetest_all.md | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Zip Test Output (Metal) | |
run: | | |
7z a -tzip test-output-macos-metal.zip ./testing/output/ | |
- name: Artifact Test Output (Metal) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-output-macos-metal-${{ steps.report2.outputs.conclusion }} | |
path: test-output-macos-metal.zip | |
- name: Check Tests Passing (Metal) | |
if: steps.report2.outputs.conclusion == 'failure' | |
run: | | |
echo "${{ steps.report2.outputs.failed }} metal tests failed" | |
exit 1 | |
iOS-Simulator: | |
runs-on: macos-14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Clone Dependencies | |
uses: actions/checkout@v4 | |
with: | |
path: apple-dependencies | |
repository: love2d/love-apple-dependencies | |
ref: main | |
- 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 15' | |
Android: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: [Debug, Release] | |
env: | |
GRADLE_OPTS: "-Dorg.gradle.jvmargs='-Xmx4G'" | |
steps: | |
- name: Prepare Environment | |
run: sudo apt-get update && curl -Lfo kitware-archive.sh https://apt.kitware.com/kitware-archive.sh && sudo bash ./kitware-archive.sh | |
- name: Install Dependencies | |
run: sudo apt-get install ninja-build cmake | |
- name: Checkout love-android | |
uses: actions/checkout@v4 | |
with: | |
repository: love2d/love-android | |
submodules: false | |
- name: Setup Java 17 | |
uses: actions/setup-java@v4 | |
with: | |
distribution: adopt-hotspot | |
java-version: 17 | |
cache: gradle | |
- name: Clone Megasource | |
uses: actions/checkout@v4 | |
with: | |
path: app/src/main/cpp/megasource | |
repository: love2d/megasource | |
ref: main | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: app/src/main/cpp/love | |
- name: Build Normal Flavor | |
run: bash ./gradlew assembleNormalRecord${{ matrix.build_type }} | |
- name: Build Release-specific Binaries | |
if: ${{ matrix.build_type == 'Release' }} | |
run: bash ./gradlew bundleNormalNoRecordRelease bundleEmbedRecordRelease bundleEmbedNoRecordRelease | |
- name: Artifact (Normal debug APK) | |
if: ${{ matrix.build_type == 'Debug' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-android-debug.apk | |
path: app/build/outputs/apk/normalRecord/debug/app-normal-record-debug.apk | |
- name: Artifact (Normal unsigned APK) | |
if: ${{ matrix.build_type == 'Release' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-android.apk | |
path: app/build/outputs/apk/normalRecord/release/app-normal-record-release-unsigned.apk | |
- name: Artifact (Normal AAB w/o recording) | |
if: ${{ matrix.build_type == 'Release' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-android-ps.aab | |
path: app/build/outputs/bundle/normalNoRecordRelease/app-normal-noRecord-release.aab | |
- name: Artifact (Embed AAB) | |
if: ${{ matrix.build_type == 'Release' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-android-embed-record.aab | |
path: app/build/outputs/bundle/embedRecordRelease/app-embed-record-release.aab | |
- name: Artifact (Embed AAB w/o recording) | |
if: ${{ matrix.build_type == 'Release' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-android-embed.aab | |
path: app/build/outputs/bundle/embedNoRecordRelease/app-embed-noRecord-release.aab | |
- name: Artifact (Debug symbols) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: love-android-unstripped-debugsyms-${{ matrix.build_type }} | |
path: app/build/intermediates/cxx |