| 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 |