Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add GitHub Actions CI #2941

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
163 changes: 163 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: CI

on:
push:
paths-ignore:
- 'CHANGES'
- '.github/*'
- '.gitignore'
- '*.yml'
- 'docs/**'
# pull_request:

jobs:
build-windows-docker:
runs-on: ubuntu-latest
#container: mgba/windows:w64
steps:
- uses: actions/checkout@v3
#- run: mkdir -p build-win64
- name: Docker
run: docker run --rm -v ${PWD}:/home/mgba/src mgba/windows:w64
- run: ls

build-windows-msys2:
runs-on: windows-latest
env:
POWERSHELL_TELEMETRY_OPTOUT: 1
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v3
- uses: msys2/setup-msys2@v2
- name: Setup
env:
MINGW_PACKAGE_PREFIX: mingw64
run: |
pacman -Sy --noconfirm --needed base-devel git ${MINGW_PACKAGE_PREFIX}-{cmake,ffmpeg,gcc,gdb,libelf,libepoxy,libzip,lua,pkgconf,qt5,SDL2,ntldd-git,7zip}
mkdir build
- name: CMake
working-directory: build
run: cmake .. -G"MSYS Makefiles"
- name: Build
working-directory: build
run: cmake --build . -j$NUMBER_OF_PROCESSORS
- name: Create artifact
id: artifact
working-directory: build
run: |
cpack -G ZIP
zip=$(ls *.zip)
7z x "$zip"
echo "name=${zip//.zip}" >> "$GITHUB_OUTPUT"
- uses: actions/upload-artifact@v3
with:
name: ${{ steps.artifact.outputs.name }}
path: build\${{ steps.artifact.outputs.name }}
if-no-files-found: error

build-windows-vcpkg:
runs-on: windows-2019 #latest
strategy:
#fail-fast: false
matrix:
configuration: [Release] #, Debug
env:
POWERSHELL_TELEMETRY_OPTOUT: 1
VCPKG_BUILD_TYPE: ${{ matrix.configuration }}
VCPKG_DEFAULT_TRIPLET: x64-windows-release
VCPKG_DISABLE_METRICS: 1
#VCPKG_TARGET_ARCHITECTURE: x64
steps:
- uses: actions/checkout@v3
- name: Setup
run: |
cd $env:VCPKG_INSTALLATION_ROOT
.\bootstrap-vcpkg
vcpkg integrate install
vcpkg install ffmpeg[vpx,x264] libepoxy libpng libzip lua sdl2 sqlite3
vcpkg --no-dry-run upgrade
vcpkg integrate install
echo "${env:VCPKG_INSTALLATION_ROOT}\installed\x64-windows-release\bin" >> "$GITHUB_PATH"
cd -
mkdir build
- uses: jurplel/[email protected]
with:
cache: true
#setup-python: false
- name: CMake
working-directory: build
run: cmake .. -DCMAKE_CONFIGURATION_TYPES=$env:VCPKG_BUILD_TYPE -DZLIB_LIBRARY=zlib -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake"
- name: Build
working-directory: build
run: cmake --build . -j$env:NUMBER_OF_PROCESSORS

build-windows-cross:
runs-on: ubuntu-latest
#env:
# CC: x86_64-w64-mingw32-gcc
# CXX: x86_64-w64-mingw32-g++
steps:
- uses: actions/checkout@v3
- name: Setup
run: |
sudo apt-get -y update
sudo apt-get -y install libepoxy-dev libsdl2-dev libglu1-mesa-dev mesa-common-dev mingw-w64
mkdir -p build
- uses: jurplel/[email protected]
with:
cache: true
setup-python: false
- name: CMake
working-directory: build
run: cmake .. -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++
- name: Build
working-directory: build
#env:
# CC: x86_64-w64-mingw32-gcc
# CXX: x86_64-w64-mingw32-g++
#run: make -j$(nproc)
run: cmake --build . -j$(nproc)
- name: Create artifacts
working-directory: build
run: cpack -G ZIP
- uses: actions/upload-artifact@v3
with:
name: mgba-windows-cross
path: build/*.zip
if-no-files-found: error

build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup
run: |
sudo apt-get -y update
sudo apt-get -y install libsdl2-dev
- uses: jurplel/[email protected]
with:
cache: true
setup-python: false
- name: CMake
run: cmake -Bbuild
- name: Build
run: cmake --build build -j$(nproc)

build-macos:
runs-on: macos-latest
env:
HOMEBREW_NO_ANALYTICS: 1
steps:
- uses: actions/checkout@v3
- name: Setup
run: brew install cmake ffmpeg libzip qt5 sdl2 libedit lua pkg-config
#- uses: jurplel/[email protected]
# with:
# cache: true
# #setup-python: false
- name: CMake
run: cmake -Bbuild #-DCMAKE_PREFIX_PATH=$(brew --prefix qt5) # prefix might not be needed
- name: Build
run: cmake --build build -j$(getconf _NPROCESSORS_ONLN)