MegaGlest/.github/workflows/cmake.yml

172 lines
5.6 KiB
YAML

name: CMake
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
jobs:
build-linux:
strategy:
fail-fast: false
matrix:
arch: [x64]
os: [ubuntu-20.04, ubuntu-22.04]
compiler: [gcc, clang]
runs-on: ${{ matrix.os }}
env:
MATRIX_COMPILER: ${{matrix.compiler}}
MATRIX_OS: ${{matrix.os}}
steps:
- uses: actions/checkout@v3
- name: Get dependencies
run: |
sudo apt-get update && sudo apt-get upgrade
sudo mk/linux/setupBuildDeps.sh
- name: Build
run: |
if [ "${MATRIX_COMPILER}" = "clang" ]; then
EXTRA_OPTS="-f"
fi
mk/linux/build-mg.sh -m -d ${EXTRA_OPTS}
make -C mk/linux/build -j$(nproc) VERBOSE=1
build-linux-other:
strategy:
fail-fast: false
matrix:
compiler: [10, 12] # 11 is on 22.04 by default, tested above
runs-on: ubuntu-22.04
env:
CC: gcc-${{matrix.compiler}}
CXX: g++-${{matrix.compiler}}
steps:
- uses: actions/checkout@v3
- name: Get dependencies
run: |
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install -y $CXX
sudo mk/linux/setupBuildDeps.sh
- name: Build
run: |
mk/linux/build-mg.sh -d -m
make -C mk/linux/build -j$(nproc) VERBOSE=1
build-win64:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
strategy:
fail-fast: false
matrix:
arch: [x64]
build_type: [Release]
include:
- build_type: Release
release: 'ON'
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Cache Vcpkg Libs
uses: actions/cache@v2
env:
cache-name: cache-vcpkg-deps
with:
path: c:/vcpkg/installed
key: vcpkg-deps
- name: Install Dependencies
run: |
vcpkg integrate install
vcpkg install brotli:x64-windows-static
vcpkg install bzip2:x64-windows-static
vcpkg install curl:x64-windows-static
vcpkg install expat:x64-windows-static
vcpkg install freetype:x64-windows-static
vcpkg install fribidi:x64-windows-static
vcpkg install ftgl:x64-windows-static
vcpkg install glew:x64-windows-static
vcpkg install libiconv:x64-windows-static
vcpkg install libjpeg-turbo:x64-windows-static
vcpkg install liblzma:x64-windows-static
vcpkg install libogg:x64-windows-static
vcpkg install libpng:x64-windows-static
vcpkg install libvorbis:x64-windows-static
vcpkg install libxml2:x64-windows-static
vcpkg install lua:x64-windows-static
vcpkg install openal-soft:x64-windows-static
vcpkg install opengl:x64-windows-static
vcpkg install miniupnpc:x64-windows-static
vcpkg install sdl2:x64-windows-static
vcpkg install sqlite3:x64-windows-static
vcpkg install tiff:x64-windows-static
vcpkg install tool-meson:x64-windows-static
vcpkg install wxwidgets:x64-windows-static
vcpkg install xerces-c:x64-windows-static
vcpkg install zlib:x64-windows-static
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
# Kinda guessing this using supertux + my own build scripts as guides.
run: cmake --no-warn-unused-cli -B ${{github.workspace}}/build -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -G "Visual Studio 17 2022" -T host=x64 -A x64 -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE
- name: Build Mega Glest
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config Release --target ALL_BUILD
- name: Prepare Snapshot
run: |
cd mk/windoze
cp ..\shared\*.ini .
$7zPath = $(Get-Command 7z).Source
cp $7zPath .
cd ../..
- name: Create Mega Glest Snapshot
uses: actions/upload-artifact@v2
with:
name: megaglest-x64-windows
path: |
mk/windoze/*.exe
mk/windoze/*.ini
!mk/windoze/glest-dev.ini
# build-macos:
# strategy:
# fail-fast: false
# matrix:
# arch: [x64]
# os: [macos-latest]
# compiler: [clang]
# runs-on: ${{ matrix.os }}
# steps:
# - uses: actions/checkout@v2
# - name: Get dependencies
# run: |
# brew install pkg-config cmake sdl2 lua jpeg libpng freetype ftgl libogg glew libvorbis cppunit fribidi miniupnpc curl wxmac xquartz zstd xml2 openldap
# - name: Bulid MegaGlest With Clang Compiler
# if: ${{ matrix.compiler == 'clang' }}
# env:
# CC: clang
# CXX: clang++
# run: |
# # Path hack to get curl working.
# export PATH=/usr/local/Cellar/curl/7.77.0/bin:$PATH
# mk/macos/build-mg.sh
# - name: Test
# working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
# run: ctest -C ${{env.BUILD_TYPE}}