language: c
cache: ccache

addons:
    apt:
        packages:
            - ccache
            - clang-3.6
            - gcc-5
            - binutils-mingw-w64
            - gcc-mingw-w64
            - wine
        sources:
            - llvm-toolchain-precise-3.6
            - ubuntu-toolchain-r-test

os:
    - linux
    - osx

compiler:
    - clang
    - gcc

env:
    - CONFIG_OPTS="shared"
    - CONFIG_OPTS="--debug --strict-warnings enable-crypto-mdebug enable-rc5 enable-md2"
    - CONFIG_OPTS="" BUILDONLY="yes"
    - CONFIG_OPTS="--classic" BUILDONLY="yes"
    - CONFIG_OPTS="--classic shared" BUILDONLY="yes"
    - CONFIG_OPTS="no-pic" BUILDONLY="yes"
    - CONFIG_OPTS="no-engine" BUILDONLY="yes"

matrix:
    include:
        - os: linux
          compiler: clang-3.6
          env: CONFIG_OPTS="-fsanitize=address"
        - os: linux
          compiler: clang-3.6
          env: CONFIG_OPTS="no-asm --strict-warnings -fno-sanitize-recover -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2"
        - os: linux
          compiler: gcc-5
          env: CONFIG_OPTS="-fsanitize=address"
        - os: linux
          compiler: gcc-5
          env: CONFIG_OPTS="no-asm --strict-warnings -fno-sanitize-recover -fsanitize=address -fsanitize=undefined enable-rc5 enable-md2"
        - os: linux
          compiler: i686-w64-mingw32-gcc
          env: CONFIG_OPTS="no-pic"
        - os: linux
          compiler: x86_64-w64-mingw32-gcc
          env: CONFIG_OPTS="no-pic"
    exclude:
        - os: linux
          compiler: clang
        - os: osx
          compiler: gcc

before_script:
    - sh .travis-create-release.sh $TRAVIS_OS_NAME
    - tar -xvzf _srcdist.tar.gz
    - if echo "$CONFIG_OPTS" | grep -e "--classic" >/dev/null; then
          srcdir=.;
          cd _srcdist;
      else
          srcdir=../_srcdist;
          mkdir _build;
          cd _build;
      fi
    - if [ "$CC" == i686-w64-mingw32-gcc ]; then
          export CROSS_COMPILE=${CC%%gcc}; unset CC;
          $srcdir/Configure mingw $CONFIG_OPTS -Wno-pedantic-ms-format;
      elif [ "$CC" == x86_64-w64-mingw32-gcc ]; then
          export CROSS_COMPILE=${CC%%gcc}; unset CC;
          $srcdir/Configure mingw64 $CONFIG_OPTS -Wno-pedantic-ms-format;
      else
          if which ccache >/dev/null && [ "$CC" != clang-3.6 ]; then
              CC="ccache $CC";
          fi;
          $srcdir/config $CONFIG_OPTS;
      fi
    - cd ..

script:
    - if echo "$CONFIG_OPTS" | grep -e "--classic" >/dev/null; then
          cd _srcdist;
      else
          cd _build;
      fi
    - make
    - if [ -z "$BUILDONLY" ]; then
          if [ -n "$CROSS_COMPILE" ]; then
              export EXE_SHELL="wine" WINEPREFIX=`pwd`;
          fi;
          HARNESS_VERBOSE=yes make test;
      else
          make build_tests;
      fi
    - cd ..

notifications:
    email:
        - openssl-commits@openssl.org

