Files
love/.github/workflows/main.yml
T
2022-10-17 00:30:01 +08:00

184 lines
6.3 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 \
libvulkan-dev
- name: Checkout love-appimage-source
uses: actions/checkout@v2
with:
repository: MikuAuahDark/love-appimage-source
ref: 12.x
- name: Checkout LÖVE
uses: actions/checkout@v2
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@v2
with:
name: love-linux-x86_64.AppImage
path: love-${{ github.sha }}.AppImage
windows-os:
runs-on: windows-latest
shell: cmd
strategy:
matrix:
platform: [Win32, x64, ARM64]
install: [compat, modern]
exclude:
- platform: ARM64
install: compat
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
exit /b 0
- name: Clone Megasource
uses: actions/checkout@v2
with:
path: megasource
repository: love2d/megasource
ref: 12.x
- name: Checkout
uses: actions/checkout@v2
with:
path: megasource/libs/love
- name: Prepare Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.0
with:
vulkan-query-version: 1.3.204.0
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: true
- 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: 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@v2
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@v2
with:
name: love-windows-jitmodules
path: build/libs/LuaJIT/src/jit/*.lua
macOS:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Clone Dependencies
uses: actions/checkout@v2
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@v2
with:
name: love-macos
path: love-macos.zip
iOS-Simulator:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Clone Dependencies
uses: actions/checkout@v2
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'