name: build on: [push, pull_request] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [windows-latest, macos-latest, ubuntu-latest] build_type: [RelWithDebInfo, Debug] enable_ui: [off] include: - os: ubuntu-latest build_type: Debug enable_ui: on steps: - uses: actions/checkout@v4 with: submodules: 'recursive' - name: ccache uses: hendrikmuhs/ccache-action@v1 if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} with: key: ${{ matrix.os }}-${{ matrix.enable_ui }}-${{ matrix.build_type }} - uses: turtlesec-no/get-ninja@main - uses: ilammy/msvc-dev-cmd@v1 if: runner.os == 'Windows' - name: Workaround for windows-2022 and cmake 3.25.0 if: runner.os == 'Windows' shell: bash run: rm -rf C:/Strawberry/ - name: Install Dependencies shell: bash run: | if [[ "${{ runner.os }}" == "Linux" ]] ; then sudo apt-get update -qq sudo apt-get install -y \ libx11-dev libxcursor-dev libxi-dev fi - name: Generating Makefiles shell: bash run: | if [[ "${{ runner.os }}" == "Windows" ]] ; then export enable_ccache=off else export enable_ccache=on fi cmake -S . -B build -G Ninja \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 \ -DENABLE_TESTS=ON \ -DENABLE_UI=${{ matrix.enable_ui }} \ -DENABLE_CCACHE=$enable_ccache - name: Compiling shell: bash run: | cd build && ninja - name: Running C++ Tests shell: bash run: | if [[ "${{ runner.os }}" == "Linux" ]] ; then export XVFB=xvfb-run fi cd build && $XVFB ctest --output-on-failure - name: Running CLI Tests shell: bash run: | if [[ "${{ runner.os }}" == "Linux" ]] ; then export XVFB=xvfb-run fi export ASEPRITE=$PWD/build/bin/aseprite cd tests $XVFB bash run-tests.sh