language: c

os:
  - linux
  - osx

addons:
  apt:
    packages:
    # packages list: https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
    - iptables-dev
    - libevent-dev
    - libnfnetlink-dev
    - libmnl-dev
    - libnftnl-dev
    - uuid-dev
    - cmake

# container-based builds
sudo: false

# https://docs.travis-ci.com/user/reference/xenial/
dist: xenial

env:
  - 'PROJECT=minissdpd'
  - 'PROJECT=miniupnpc'
  - 'PROJECT=miniupnpc-async'
  - 'PROJECT=miniupnpc-libevent'
  - 'PROJECT=miniupnpd'

matrix:
  exclude:
    - os: osx
      env: PROJECT=miniupnpd
    - os: osx
      compiler: gcc

compiler:
  - gcc
  - clang

before_install:
  - 'if [ "$TRAVIS_OS_NAME" = "osx" ] && [ "$CC" == "gcc" ] ; then CC=gcc-4.9; fi'

script:
  - 'cd $TRAVIS_BUILD_DIR && cd $PROJECT'
  - MAKEFILE=Makefile && if [ -f Makefile.linux -a "$TRAVIS_OS_NAME" = "linux" ]; then
      MAKEFILE=Makefile.linux ;
    elif [ -f Makefile.macosx -a "$TRAVIS_OS_NAME" = "osx" ]; then
      MAKEFILE=Makefile.macosx;
    fi
  - if [ "$MAKEFILE" = "Makefile.macosx" ]; then
      make -f $MAKEFILE depend;
    fi
  - 'CONFIG_OPTIONS="--ipv6 --igd2" make -f $MAKEFILE -j3'
  - 'if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$PROJECT" = "miniupnpd" ]; then make -f Makefile.linux_nft ; fi'
  - make -f $MAKEFILE check
  - if [ "$PROJECT" = "miniupnpc" ]; then
      INSTALLPREFIX="$HOME/_pythonmodule" make -f $MAKEFILE pythonmodule;
    fi
  - if [ -f "CMakeLists.txt" ] ; then
      mkdir cmake-build && cd cmake-build &&
      cmake .. && make ;
    fi

after_success:
  - 'INSTALLPREFIX="$HOME/$PROJECT" make -f $MAKEFILE install'
