name: CI

on:
  push:
    branches: master
  pull_request:
    branches: master

jobs:
  build:

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        #SWIGJOBS: ["-j2"]
        # other variables to optionally set
        # CC, GCC (used as suffix)
        # CPP11, CPP14, CPP17
        # CONFIGOPTS
        # SWIGLANG
        # PY3,VER
        # SWIG_FEATURES
        include:
        - os: ubuntu-latest
          CPP11: 1
          SWIGLANG: ""
        - os: ubuntu-latest
          CPP11: 1
          SWIGLANG: python
        - os: ubuntu-latest
          CPP11: 1
          SWIGLANG: python
          PY3: 3
        - os: ubuntu-latest
          CPP11: 1
          SWIGLANG: tcl
        # let's run all of them, as opposed to aborting when one fails
      fail-fast: false

    steps:
    - uses: actions/checkout@v2
      with:
        submodules: recursive
    - name: ccache
      uses: hendrikmuhs/ccache-action@v1
      with:
        key: ${{ matrix.os }}-${{ matrix.SWIGLANG }}
    - name: configure
      shell: bash
      env:
          SWIGLANG: ${{ matrix.SWIGLANG }}
          CONFIGOPTS: ${{ matrix.CONFIGOPTS }}
          CC: ${{ matrix.CC }}
      run: |
          set -ex
          export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
          source Tools/GHA-linux-install.sh
          if test -n "$CPP11"; then CONFIGOPTS+=(--enable-cpp11-testing "CXXFLAGS=-std=c++11 $CXXFLAGS" "CFLAGS=-std=c11 $CFLAGS") && export CSTD=c11 && export CPPSTD=c++11; fi
          if test -n "$CPP14"; then CONFIGOPTS+=(--enable-cpp11-testing "CXXFLAGS=-std=c++14 $CXXFLAGS" "CFLAGS=-std=c11 $CFLAGS") && export CSTD=c11 && export CPPSTD=c++14; fi
          if test -n "$CPP17"; then CONFIGOPTS+=(--enable-cpp11-testing "CXXFLAGS=-std=c++17 $CXXFLAGS" "CFLAGS=-std=c17 $CFLAGS") && export CSTD=c17 && export CPPSTD=c++17; fi
          if test -n "$SWIGLANG"; then CONFIGOPTS+=(--without-alllang --with-$WITHLANG); fi
          echo "${CONFIGOPTS[@]}"
          ./autogen.sh && mkdir -p build/build && cd build/build && ../../configure "${CONFIGOPTS[@]}"

    - name: build
      shell: bash
      env:
          SWIGLANG: ${{ matrix.SWIGLANG }}
          SWIGJOBS: ${{ matrix.SWIGJOBS }}
      run: |
          set -ex
          cd ${GITHUB_WORKSPACE}/build/build;
          make -s $SWIGJOBS
          ./swig -version && ./swig -pcreversion
          if test -z "$SWIGLANG"; then make -s $SWIGJOBS check-ccache; fi
          if test -z "$SWIGLANG"; then make -s $SWIGJOBS check-errors-test-suite; fi
          echo 'Installing...'
          if test -z "$SWIGLANG"; then sudo make -s install && swig -version && ccache-swig -V; fi
    - name: tests
      shell: bash
      env:
          SWIGLANG: ${{ matrix.SWIGLANG }}
          SWIGJOBS: ${{ matrix.SWIGJOBS }}
          SWIG_FEATURES: ${{ matrix.SWIG_FEATURES }}
          CC: ${{ matrix.CC }}
          CSTD: ${{ matrix.CSTD }}
          CPP11: ${{ matrix.CPP11 }}
          CPP14: ${{ matrix.CPP14 }}
          CPP17: ${{ matrix.CPP17 }}
      run: |
          set -ex
          cd ${GITHUB_WORKSPACE}/build/build;
          if test -n "$CPP11"; then export CPPSTD=c++11; fi
          if test -n "$CPP14"; then export CPPSTD=c++14; fi
          if test -n "$CPP17"; then export CPPSTD=c++17; fi
          # Stricter compile flags for examples. Various headers and SWIG generated code prevents full use of -pedantic.
          if test -n "$SWIGLANG"; then cflags=$($GITHUB_WORKSPACE/Tools/testflags.py --language $SWIGLANG --cflags --std=$CSTD --compiler=$CC) && echo $cflags; fi
          if test -n "$SWIGLANG"; then cxxflags=$($GITHUB_WORKSPACE/Tools/testflags.py --language $SWIGLANG --cxxflags --std=$CPPSTD --compiler=$CC) && echo $cxxflags; fi
          if test -n "$SWIGLANG"; then make -s check-$SWIGLANG-version; fi
          if test -n "$SWIGLANG"; then make check-$SWIGLANG-enabled; fi
          if test -n "$SWIGLANG"; then make $SWIGJOBS check-$SWIGLANG-examples CFLAGS="$cflags" CXXFLAGS="$cxxflags"; fi
          if test -n "$SWIGLANG"; then make $SWIGJOBS check-$SWIGLANG-test-suite CFLAGS="$cflags" CXXFLAGS="$cxxflags"; fi
          #echo 'Cleaning...'
          # Skip on osx as often fails with: rm: Resource temporarily unavailable
          #if test "$TRAVIS_OS_NAME" != "osx"; then make check-maintainer-clean && ../../configure $CONFIGOPTS; fi
