Files @ r24425:4e31788e3af3
Branch filter:

Location: cpp/openttd-patchpack/source/.github/workflows/ci-build.yml

Michael Lutz
Fix: [CMake, MSVC] Don't copy regression exe's into a subfolder as they need have their lang files next to them.
name: CI

on:
  pull_request:
  push:
    branches:
    - master

env:
  CTEST_OUTPUT_ON_FAILURE: 1

jobs:
  linux:
    name: Linux

    strategy:
      fail-fast: false
      matrix:
        include:
          - compiler: clang
            cxxcompiler: clang++
          - compiler: gcc
            cxxcompiler: g++

    runs-on: ubuntu-20.04
    env:
      CC: ${{ matrix.compiler }}
      CXX: ${{ matrix.cxxcompiler }}

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Install dependencies
      run: |
        echo "::group::Update apt"
        sudo apt-get update
        echo "::endgroup::"

        echo "::group::Install dependencies"
        sudo apt-get install -y --no-install-recommends \
          libfontconfig-dev \
          libicu-dev \
          liblzma-dev \
          liblzo2-dev \
          libsdl1.2-dev \
          libsdl2-dev \
          libxdg-basedir-dev \
          zlib1g-dev \
          # EOF
        echo "::endgroup::"
      env:
        DEBIAN_FRONTEND: noninteractive

    - name: Get OpenGFX
      run: |
        mkdir -p ~/.local/share/openttd/baseset
        cd ~/.local/share/openttd/baseset

        echo "::group::Download OpenGFX"
        curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
        echo "::endgroup::"

        echo "::group::Unpack OpenGFX"
        unzip opengfx-all.zip
        echo "::endgroup::"

        rm -f opengfx-all.zip

    - name: Install GCC problem matcher
      uses: ammaraskar/gcc-problem-matcher@master

    - name: Build
      run: |
        mkdir build
        cd build

        echo "::group::CMake"
        cmake ..
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(nproc) cores"
        make -j$(nproc)
        echo "::endgroup::"

    - name: Test
      run: |
        cd build
        make -j$(nproc) test

  macos:
    name: Mac OS

    strategy:
      fail-fast: false
      matrix:
        include:
        - arch: x64
          full_arch: x86_64

    runs-on: macos-latest
    env:
      MACOSX_DEPLOYMENT_TARGET: 10.9

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Prepare vcpkg (with cache)
      uses: lukka/run-vcpkg@v6
      with:
        vcpkgDirectory: '/usr/local/share/vcpkg'
        doNotUpdateVcpkg: true
        vcpkgArguments: 'freetype liblzma lzo'
        vcpkgTriplet: '${{ matrix.arch }}-osx'

    - name: Install OpenGFX
      run: |
        mkdir -p ~/Documents/OpenTTD/baseset
        cd ~/Documents//OpenTTD/baseset

        echo "::group::Download OpenGFX"
        curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
        echo "::endgroup::"

        echo "::group::Unpack OpenGFX"
        unzip opengfx-all.zip
        echo "::endgroup::"

        rm -f opengfx-all.zip

    - name: Install GCC problem matcher
      uses: ammaraskar/gcc-problem-matcher@master

    - name: Build
      run: |
        mkdir build
        cd build

        echo "::group::CMake"
        cmake ${GITHUB_WORKSPACE} \
          -DCMAKE_OSX_ARCHITECTURES=${{ matrix.full_arch }} \
          -DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-osx \
          -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/vcpkg/scripts/buildsystems/vcpkg.cmake \
          # EOF
        echo "::endgroup::"

        echo "::group::Build"
        echo "Running on $(sysctl -n hw.logicalcpu) cores"
        make -j$(sysctl -n hw.logicalcpu)
        echo "::endgroup::"

    - name: Test
      run: |
        cd build
        make -j$(sysctl -n hw.logicalcpu) test

  windows:
    name: Windows

    strategy:
      fail-fast: false
      matrix:
        include:
        - arch: x86
        - arch: x64

    runs-on: windows-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Prepare vcpkg (with cache)
      uses: lukka/run-vcpkg@v6
      with:
        vcpkgDirectory: 'c:/vcpkg'
        doNotUpdateVcpkg: true
        vcpkgArguments: 'liblzma libpng lzo zlib'
        vcpkgTriplet: '${{ matrix.arch }}-windows-static'

    - name: Install OpenGFX
      shell: bash
      run: |
        mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset"
        cd "C:/Users/Public/Documents/OpenTTD/baseset"

        echo "::group::Download OpenGFX"
        curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
        echo "::endgroup::"

        echo "::group::Unpack OpenGFX"
        unzip opengfx-all.zip
        echo "::endgroup::"

        rm -f opengfx-all.zip

    - name: Install MSVC problem matcher
      uses: ammaraskar/msvc-problem-matcher@master

    - name: Build
      uses: lukka/run-cmake@v3
      with:
        cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
        useVcpkgToolchainFile: true
        buildDirectory: '${{ github.workspace }}/build'
        cmakeAppendedArgs: ' -GNinja'

    - name: Test
      shell: bash
      run: |
        cd ${GITHUB_WORKSPACE}/build
        ctest -C Debug