Skip to content

fix: Fix CMake issues with MacOS #23

fix: Fix CMake issues with MacOS

fix: Fix CMake issues with MacOS #23

Workflow file for this run

# Build Github Action, to run a test build on all targets
# (Linux, Blit, MacOS, Visual Studio) when the project is checked in.
#
# Thanks in large part to the phenomenal examples of DaftFreak.
name: Build
on:
push:
pull_request:
release:
types: [created]
env:
BUILD_TYPE: Release
EM_VERSION: 2.0.18 # Emscripten version
EM_CACHE_FOLDER: 'emsdk-cache' # Cache for Emscripten libs
jobs:
build:
name: ${{matrix.name}}
strategy:
matrix:
include:
- os: ubuntu-20.04
name: Linux
release-suffix: LIN64
cmake-args: #-DSDL2_IMAGE_DIR=$GITHUB_WORKSPACE/main/SDL2
apt-packages: libsdl2-dev libsdl2-image-dev python3-setuptools
can-fail: false
- os: ubuntu-20.04
name: Emscripten
release-suffix: WEB
cmake-args: #-DSDL2_IMAGE_DIR=$GITHUB_WORKSPACE/main/SDL2
cmake-prefix: emcmake
apt-packages: python3-setuptools
can-fail: true
- os: macos-latest
name: macOS
release-suffix: MACOS
cmake-args: #-DSDL2_IMAGE_DIR=$GITHUB_WORKSPACE/main/SDL2
brew-packages: sdl2 sdl2_image
can-fail: true
- os: windows-latest
name: Visual Studio
release-suffix: WIN64
cmake-args: #-DSDL2_DIR=$GITHUB_WORKSPACE/main/SDL2 -DSDL2_image_DIR=$GITHUB_WORKSPACE/main/SDL2
can-fail: false
runs-on: ${{matrix.os}}
continue-on-error: ${{ matrix.can-fail }}
env:
RELEASE_FILE: ${{github.event.repository.name}}-${{github.event.release.tag_name}}-${{matrix.release-suffix}}
steps:
# Check out the main repo
- name: Checkout
uses: actions/checkout@v2
with:
path: main
# Linux dependencies
#- name: Install Linux deps
# if: runner.os == 'Linux'
# run: |
# sudo apt update && sudo apt install ${{matrix.apt-packages}}
# pip3 install 32blit
# MacOS dependencies
#- name: Install macOS deps
# if: runner.os == 'macOS'
# run: |
# brew install ${{matrix.brew-packages}}
# python3 -m pip install 32blit
# Windows dependencies
#- name: Install Windows deps
# if: runner.os == 'Windows'
# shell: bash
# run: |
# python -m pip install 32blit
# Emscripten SDK setup
- name: Setup Emscripten cache
if: matrix.name == 'Emscripten'
id: cache-system-libraries
uses: actions/cache@v2
with:
path: ${{env.EM_CACHE_FOLDER}}
key: ${{env.EM_VERSION}}-${{runner.os}}
- name: Setup Emscripten
if: matrix.name == 'Emscripten'
uses: mymindstorm/setup-emsdk@v7
with:
version: ${{env.EM_VERSION}}
actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
- name: Pre-build Emscripten ports
if: matrix.name == 'Emscripten'
run: embuilder.py build sdl2 sdl2-image-jpg
# Set up the cmake build environment
- name: Create Build Environment
run: cmake -E make_directory ${{runner.workspace}}/main/build
# Ask cmake to build the makefiles
- name: Configure CMake
shell: bash
working-directory: ${{runner.workspace}}/main/build
run: ${{matrix.cmake-prefix}} cmake $GITHUB_WORKSPACE/main -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCPACK_PACKAGE_FILE_NAME=${{env.RELEASE_FILE}} ${{matrix.cmake-args}}
# And then run the build itself
- name: Build
working-directory: ${{runner.workspace}}/main/build
shell: bash
run: |
cmake --build . --config $BUILD_TYPE -j 2
# When it's a release, generate tar/zip files of the build
- name: Package Release
if: github.event_name == 'release' && matrix.release-suffix != ''
shell: bash
working-directory: ${{runner.workspace}}/main/build
run: |
cmake --build . --config $BUILD_TYPE --target package
# Push the tar file to the release
- name: Upload tar
if: github.event_name == 'release' && matrix.release-suffix != ''
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
asset_path: ${{runner.workspace}}/main/build/${{env.RELEASE_FILE}}.tar.gz
upload_url: ${{github.event.release.upload_url}}
asset_name: ${{env.RELEASE_FILE}}.tar.gz
asset_content_type: application/octet-stream
# Push the zip file to the release
- name: Upload zip
if: github.event_name == 'release' && matrix.release-suffix != ''
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
with:
asset_path: ${{runner.workspace}}/main/build/${{env.RELEASE_FILE}}.zip
upload_url: ${{github.event.release.upload_url}}
asset_name: ${{env.RELEASE_FILE}}.zip
asset_content_type: application/zip