# Control file for continuous integration testing at http://travis-ci.org/

language: c

matrix:
  include:
  - compiler: gcc
    os: linux
    env: DO_MAINTAINER_CHECKS=yes USE_CONFIG=no

  - compiler: gcc-8
    os: linux
    env: USE_CONFIG=yes CC=gcc-8 AR=gcc-ar-8
    addons:
      apt:
        sources:
          - ubuntu-toolchain-r-test
        packages:
          - gcc-8

  # An optimised build with address and leak checking, also using libdeflate
  - compiler: gcc-8
    os: linux
    dist: xenial
    env: USE_CONFIG=yes USE_LIBDEFLATE=yes CC=gcc-8 AR=gcc-ar-8 CFLAGS="-g -Wall -O3 -fsanitize=address" LDFLAGS="-fsanitize=address"
    addons:
      apt:
        sources:
          - ubuntu-toolchain-r-test
        packages:
          - gcc-8

  - compiler: clang
    os: osx
    env: USE_CONFIG=no

  - compiler: clang
    os: osx
    env: USE_CONFIG=yes

  - compiler: clang
    os: osx
    env: USE_CONFIG=yes USE_LIBDEFLATE=yes

  - compiler: gcc
    os: linux
    env: USE_CONFIG=yes

  - compiler: clang
    os: linux
    env: USE_CONFIG=yes

  - compiler: gcc
    os: linux
    env: CFLAGS="-std=c99 -pedantic" USE_CONFIG=yes

# For MacOSX systems
before_install:
  - |
    if [[ "$TRAVIS_OS_NAME" == "osx" && "$USE_CONFIG" == "no" ]]; then
      HOMEBREW_NO_AUTO_UPDATE=1 brew install xz || ( brew update && brew install xz )
    fi

before_script:
  - |
    if test "x$USE_LIBDEFLATE" == "xyes"; then
      pushd "$HOME" && \
        git clone --depth 1 https://github.com/ebiggers/libdeflate.git && \
        pushd libdeflate && \
        make -j 2 CFLAGS='-fPIC -O3' libdeflate.a && \
        popd && \
        popd
    fi

script:
  - |
    if test "x$USE_LIBDEFLATE" = "xyes"; then
      CONFIG_OPTS='CPPFLAGS="-I$HOME/libdeflate" LDFLAGS="$LDFLAGS -L$HOME/libdeflate" --with-libdeflate'
    else
      CONFIG_OPTS='--without-libdeflate'
    fi
  - |
    if test "$USE_CONFIG" = "yes"; then
      MAKE_OPTS= ;
      autoreconf && \
        eval ./configure --enable-werror $CONFIG_OPTS CFLAGS=\"-g -O3 $CFLAGS\" || \
        ( cat config.log; false )
    else
      MAKE_OPTS=-e
    fi && \
    if test "x$DO_MAINTAINER_CHECKS" = "xyes"; then
      make maintainer-check
    fi && \
    make -j 2 $MAKE_OPTS && \
    make test-shlib-exports && \
    make test
