sudo: false
language: c
os:
  # osx starts faster because homebrew installs beat building from source
  - osx
  - linux
compiler:
  # nothing in ARMCI-MPI should be compiler-dependent...
  - clang
  - gcc
addons:
  apt:
    packages:
      - hwloc
matrix:
  allow_failures:
  exclude:
     - os: osx
       compiler: gcc
       env: MPI_IMPL=mpich
            ARMCI_STRIDED_METHOD=DIRECT
            ARMCI_IOV_METHOD=DIRECT
            ARMCI_USE_WIN_ALLOCATE=-100
            ARMCI_SHM_LIMIT=$((32*1024*1024))
            ARMCI_MEMKIND_POOL_PATH=/tmp
     - os: osx
       compiler: clang
       env: MPI_IMPL=mpich
            ARMCI_STRIDED_METHOD=DIRECT
            ARMCI_IOV_METHOD=DIRECT
            ARMCI_USE_WIN_ALLOCATE=-100
            ARMCI_SHM_LIMIT=$((32*1024*1024))
            ARMCI_MEMKIND_POOL_PATH=/tmp
     - os: osx
       compiler: gcc
       env: MPI_IMPL=openmpi
            ARMCI_STRIDED_METHOD=IOV
            ARMCI_IOV_METHOD=BATCHED
            ARMCI_USE_WIN_ALLOCATE=-100
            ARMCI_SHM_LIMIT=$((32*1024*1024))
            ARMCI_MEMKIND_POOL_PATH=/tmp
     - os: osx
       compiler: clang
       env: MPI_IMPL=openmpi
            ARMCI_STRIDED_METHOD=IOV
            ARMCI_IOV_METHOD=BATCHED
            ARMCI_USE_WIN_ALLOCATE=-100
            ARMCI_SHM_LIMIT=$((32*1024*1024))
            ARMCI_MEMKIND_POOL_PATH=/tmp
env:
  #
  # Test the default config since that is what Debian users will get.
  #
  - MPI_IMPL=mpich
  - MPI_IMPL=openmpi
  #
  # MPICH
  #
  # with datatypes
  - MPI_IMPL=mpich
    ARMCI_STRIDED_METHOD=DIRECT
    ARMCI_IOV_METHOD=DIRECT
    ARMCI_USE_WIN_ALLOCATE=0
  - MPI_IMPL=mpich
    ARMCI_STRIDED_METHOD=DIRECT
    ARMCI_IOV_METHOD=DIRECT
    ARMCI_USE_WIN_ALLOCATE=1
  # without datatypes
  - MPI_IMPL=mpich
    ARMCI_STRIDED_METHOD=IOV
    ARMCI_IOV_METHOD=BATCHED
    ARMCI_USE_WIN_ALLOCATE=0
  - MPI_IMPL=mpich
    ARMCI_STRIDED_METHOD=IOV
    ARMCI_IOV_METHOD=BATCHED
    ARMCI_USE_WIN_ALLOCATE=1
  #
  # Open-MPI
  #
  # with datatypes
  - MPI_IMPL=openmpi
    ARMCI_STRIDED_METHOD=DIRECT
    ARMCI_IOV_METHOD=DIRECT
    ARMCI_USE_WIN_ALLOCATE=0
  - MPI_IMPL=openmpi
    ARMCI_STRIDED_METHOD=DIRECT
    ARMCI_IOV_METHOD=DIRECT
    ARMCI_USE_WIN_ALLOCATE=1
  # without datatypes
  - MPI_IMPL=openmpi
    ARMCI_STRIDED_METHOD=IOV
    ARMCI_IOV_METHOD=BATCHED
    ARMCI_USE_WIN_ALLOCATE=0
  - MPI_IMPL=openmpi
    ARMCI_STRIDED_METHOD=IOV
    ARMCI_IOV_METHOD=BATCHED
    ARMCI_USE_WIN_ALLOCATE=1
  # deal with ordering issue
  #- MPI_IMPL=openmpi
  #  ARMCI_STRIDED_METHOD=DIRECT
  #  ARMCI_IOV_METHOD=DIRECT
  #  ARMCI_NO_FLUSH_LOCAL=1
  #  ARMCI_USE_WIN_ALLOCATE=0
  #- MPI_IMPL=openmpi
  #  ARMCI_STRIDED_METHOD=DIRECT
  #  ARMCI_IOV_METHOD=DIRECT
  #  ARMCI_NO_FLUSH_LOCAL=1
  #  ARMCI_USE_WIN_ALLOCATE=1
  #
  #  MEMKIND testing
  #
  #- MPI_IMPL=mpich
  #  ARMCI_STRIDED_METHOD=DIRECT
  #  ARMCI_IOV_METHOD=DIRECT
  #  ARMCI_USE_WIN_ALLOCATE=-100
  #  ARMCI_SHM_LIMIT=$((32*1024*1024))
  #  ARMCI_MEMKIND_POOL_PATH=/tmp
  #- MPI_IMPL=openmpi
  #  ARMCI_STRIDED_METHOD=IOV
  #  ARMCI_IOV_METHOD=BATCHED
  #  ARMCI_USE_WIN_ALLOCATE=-100
  #  ARMCI_SHM_LIMIT=$((32*1024*1024))
  #  ARMCI_MEMKIND_POOL_PATH=/tmp
before_install:
  - export TRAVIS_ROOT=$HOME/travis
  - mkdir $TRAVIS_ROOT
  - sh ./travis/install-autotools.sh $TRAVIS_ROOT
install:
  - sh ./travis/install-mpi.sh $TRAVIS_ROOT $MPI_IMPL
script:
  - sh ./travis/build-run.sh $TRAVIS_ROOT $MPI_IMPL
after_failure:
  - cat ./test-suite.log
  - cat ./config.log
  - find . -name "*.log" -exec head -n 100 {} ";"
