mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
186 lines
6.4 KiB
YAML
186 lines
6.4 KiB
YAML
name: continuous-integration
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
linux-os:
|
|
runs-on: ubuntu-20.04
|
|
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
|
|
- name: Checkout love-appimage-source
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: MikuAuahDark/love-appimage-source
|
|
ref: 12.x
|
|
- name: Checkout LÖVE
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: love2d-${{ github.sha }}
|
|
- 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
|
|
windows-os:
|
|
runs-on: windows-latest
|
|
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: Clone Megasource
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: megasource
|
|
repository: love2d/megasource
|
|
ref: 12.x
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
path: megasource/libs/love
|
|
- name: Download ANGLE
|
|
uses: robinraju/release-downloader@v1.5
|
|
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
|
|
run: cmake -Bbuild -Hmegasource -T v142 -A ${{ matrix.platform }} -DCMAKE_INSTALL_PREFIX=%CD%\install ${{ steps.vars.outputs.moredef }}
|
|
- name: Install
|
|
run: cmake --build build --target PACKAGE --config Release -j2
|
|
- 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
|
|
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: 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 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
|
|
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: 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 11'
|