dist: trusty
sudo: required

osx_image: xcode9.3

language: c
cache: ccache
git:
    submodules: false
    quiet: true

before_install:
    - if [ -n "$COVERALLS" ]; then
          pip install --user cpp-coveralls;
      fi;
    - if expr "$CONFIG_OPTS" ":" ".*enable-external-tests" > /dev/null; then
          git submodule update --init --recursive;
      fi;

os:
    - linux
    - osx

compiler:
    - clang
    - gcc

env:
    - CONFIG_OPTS="" DESTDIR="_install"
    - CONFIG_OPTS="no-asm -Werror --debug no-afalgeng no-shared enable-crypto-mdebug enable-rc5 enable-md2"
    - CONFIG_OPTS="no-asm no-makedepend --strict-warnings -std=c89 -D_DEFAULT_SOURCE" BUILDONLY="yes" CHECKDOCS="yes" GENERATE="yes"

matrix:
    include:
        - os: linux-ppc64le
          sudo: false
          compiler: clang
          env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES"
        - os: linux
          addons:
              apt:
                  packages:
                      - gcc-5
                      - g++-5
                  sources:
                      - ubuntu-toolchain-r-test
          compiler: gcc-5
          env: CONFIG_OPTS="--strict-warnings" COMMENT="Move to the BORINGTEST build when interoperable"
        - os: linux
          compiler: clang
          env: CONFIG_OPTS="--strict-warnings -D__NO_STRING_INLINES no-deprecated" BUILDONLY="yes"
        - os: linux
          addons:
              apt:
                  packages:
                      - binutils-mingw-w64
                      - gcc-mingw-w64
          compiler: i686-w64-mingw32-gcc
          env: CONFIG_OPTS="no-stdio" BUILDONLY="yes"
        # Uncomment if there is reason to believe that PPC-specific problem
        # can be diagnosed with this possibly >30 mins sanitizer build...
        #- os: linux-ppc64le
        #  sudo: false
        #  compiler: gcc
        #  env: EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-asan enable-ubsan no-shared -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES"
        - os: linux
          addons:
              apt:
                  packages:
                      - gcc-5
                      - g++-5
                      - golang-1.6
                  sources:
                      - ubuntu-toolchain-r-test
          compiler: gcc-5
          env:  EXTENDED_TEST="yes" CONFIG_OPTS="--debug --coverage no-asm enable-rc5 enable-md2 enable-ec_nistp_64_gcc_128 enable-ssl3 enable-ssl3-method enable-nextprotoneg enable-weak-ssl-ciphers no-shared -DPEDANTIC -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" COVERALLS="yes" BORINGSSL_TESTS="yes" CXX="g++-5"
        - os: linux
          addons:
              apt:
                  packages:
                      - gcc-5
                      - g++-5
                      - golang-1.6
                  sources:
                      - ubuntu-toolchain-r-test
          compiler: gcc-5
          env:  EXTENDED_TEST="yes" CONFIG_OPTS="--debug enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers enable-external-tests" BORINGSSL_TESTS="yes" CXX="g++-5" TESTS=95
        - os: linux
          compiler: clang
          env: EXTENDED_TEST="yes" CONFIG_OPTS="enable-msan -D__NO_STRING_INLINES -Wno-unused-command-line-argument"
        - os: linux
          compiler: clang
          env:  EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-ubsan enable-rc5 enable-md2 enable-ssl3 enable-ssl3-method enable-nextprotoneg no-shared -fno-sanitize=alignment -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES -Wno-unused-command-line-argument"
        - os: linux
          compiler: clang
          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-asm enable-asan enable-rc5 enable-md2 no-shared -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -D__NO_STRING_INLINES -Wno-unused-command-line-argument"
        - os: linux
          addons:
              apt:
                  packages:
                      - gcc-5
                      - g++-5
                  sources:
                      - ubuntu-toolchain-r-test
          compiler: gcc-5
          env: UBUNTU_GCC_HACK="yes" EXTENDED_TEST="yes" CONFIG_OPTS="--debug no-asm enable-ubsan enable-rc5 enable-md2 -DPEDANTIC" OPENSSL_TEST_RAND_ORDER=0
        - os: linux
          addons:
              apt:
                  packages:
                      - binutils-mingw-w64
                      - gcc-mingw-w64
          compiler: i686-w64-mingw32-gcc
          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-pic"
        - os: linux
          addons:
              apt:
                  packages:
                      - binutils-mingw-w64
                      - gcc-mingw-w64
          compiler: x86_64-w64-mingw32-gcc
          env: EXTENDED_TEST="yes" CONFIG_OPTS="no-pic"
        - os: linux
          language: python
          python: 3.7
          dist: xenial    # required for Python 3.7 (travis-ci/travis-ci#9069)
          sudo: required  # required for Python 3.7 (travis-ci/travis-ci#9069)
          install: pip install flake8
          before_script:
            # stop the build if there are Python syntax errors or undefined names
            - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
            # exit-zero treats all errors as warnings.  The GitHub editor is 127 chars wide
            - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
          script: true
    exclude:
        - os: linux
          compiler: clang
        - os: osx
          compiler: gcc

before_script:
    - env
    - if [ "$TRAVIS_PULL_REQUEST" != "false" -a -n "$EXTENDED_TEST" ]; then
          (git log -1 $TRAVIS_COMMIT_RANGE | grep '\[extended tests\]' > /dev/null) || exit 0;
      fi
    - if [ -n "$DESTDIR" ]; then
          sh .travis-create-release.sh $TRAVIS_OS_NAME;
          tar -xzf _srcdist.tar.gz;
          mkdir _build;
          cd _build;
          srcdir=../_srcdist;
          top=..;
      else
          srcdir=.;
          top=.;
      fi
    - if [ -n "$UBUNTU_GCC_HACK" ]; then
          $CC -dumpspecs | sed "s/--push-state//g; s/--pop-state/--as-needed/g" > gcc-specs.txt;
          CC="$CC -specs=gcc-specs.txt";
      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 [ "$CC" = clang-3.9 ]; then
              sudo cp .travis-apt-pin.preferences /etc/apt/preferences.d/no-ubuntu-clang;
              curl -sSL "http://apt.llvm.org/llvm-snapshot.gpg.key" | sudo -E apt-key add -;
              echo "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-3.9 main" | sudo tee -a /etc/apt/sources.list > /dev/null;
              sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test";
              sudo -E apt-get -yq update;
              sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install clang-3.9;
          elif which ccache >/dev/null; then
              CC="ccache $CC";
          fi;
          $srcdir/config -v $CONFIG_OPTS;
      fi
    - ./configdata.pm --dump
    - cd $top

script:
    - if [ -z "$BUILDONLY" ]; then
          make="make -s";
      else
          make="make";
      fi
    - if [ -n "$GENERATE" ]; then
          make2="$make PERL=no-perl";
      else
          make2="$make";
      fi
    - top=${PWD}
    - if [ -n "$DESTDIR" ]; then
          cd _build;
      fi
    - if $make update; then
          echo -e '+\057 MAKE UPDATE OK';
      else
          echo -e '+\057 MAKE UPDATE FAILED'; false;
      fi
    - git diff --exit-code
    - if [ -n "$CHECKDOCS" ]; then
          if $make doc-nits; then
              echo -e '+\057\057 MAKE DOC-NITS OK';
          else
              echo -e '+\057\057 MAKE DOC-NITS FAILED'; false;
          fi;
      fi
    - if [ -n "$GENERATE" ]; then
          if $make build_all_generated; then
              echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED OK';
          else
              echo -e '+\057\057\057 MAKE BUILD_ALL_GENERATED FAILED'; false;
          fi;
      fi
    - if $make2; then
          echo -e '+\057\057\057\057 MAKE OK';
      else
          echo -e '+\057\057\057\057 MAKE FAILED'; false;
      fi;
    - if [ -z "$BUILDONLY" ]; then
          if [ -n "$CROSS_COMPILE" ]; then
              sudo dpkg --add-architecture i386;
              sudo apt-get update;
              sudo apt-get -yq --no-install-suggests --no-install-recommends --force-yes install wine;
              export EXE_SHELL="wine" WINEPREFIX=`pwd`;
          fi;
          if [ -e krb5/src ]; then
              sudo apt-get -yq install bison dejagnu gettext keyutils ldap-utils libldap2-dev libkeyutils-dev python-cjson python-paste python-pyrad slapd tcl-dev tcsh;
          fi;
          if HARNESS_VERBOSE=yes BORING_RUNNER_DIR=$top/boringssl/ssl/test/runner make test; then
              echo -e '+\057\057\057\057\057 MAKE TEST OK';
          else
              echo -e '+\057\057\057\057\057 MAKE TEST FAILED'; false;
          fi;
      else
          if $make build_tests >~/build.log 2>&1; then
              echo -e '+\057\057\057\057\057\057 MAKE BUILD_TESTS OK';
          else
              echo -e '+\057\057\057\057\057\057 MAKE BUILD_TESTS FAILED';
              cat ~/build.log
              false;
          fi;
      fi
    - if [ -n "$DESTDIR" ]; then
          mkdir "$top/$DESTDIR";
          if $make install DESTDIR="$top/$DESTDIR" >~/install.log 2>&1 ; then
              echo -e '+\057\057\057\057\057\057\057 MAKE INSTALL OK';
          else
              echo -e '+\057\057\057\057\057\057\057 MAKE INSTALL FAILED';
              cat ~/install.log;
              false;
          fi;
      fi
    - cd $top

after_success:
    - if [ -n "$COVERALLS" ]; then
          coveralls -b . --gcov gcov-5 --gcov-options '\-lpbc';
      fi;

notifications:
    email:
        secure: "xeGNgWO7aoaDgRvcZubposqMsj36aU8c6F0oHfw+rUqltCQ14IgYCUwzocmR2O+Pa7B3Cx5VjMfBFHbQaajZsfod8vu7g+aGq/zkjwbhsr/SR4dljJjFJXLGZjIalm9KgP6KInmVDuINfCqP+MHIY5lZkNI7DMcyHDhVc5nSKvCXV7xTDNgmstvh8rB/z51WfHDqGqfBtiuK5FDNxmvYK8OFJ5W94Lu9LDlizcxwK3GAj7arOui7Z5w8bQ6p4seUE3IvJL1Zbj0pZHxvNb6Zeb2Pn8QF1qLlN8YmBktD4aiw0ce4wYRiL87uLgcOxZY7SVXtv2XYFIYWapU/FKjCqa6vK93V/H9eZWEIYNMKnN3wXm2beqVdnKek3OeGJ8v0y7MbSfuLfRtBqbTSNYnpU1Zuo4MQAvHvEPuwCAYkYQajOSRplMH5sULFKptuVqNtOMfjL8jHb8AEoL1acYIk43ydxeYrzzas4fqgCDJ52573/u0RNdF1lkQBLkuM365OB8VRqtpnoxcdEIY/qBc/8TzZ24fxyrs5qdHFcxGSgpN2EP6cJMqpvkemnCNSdhxUqfzm22N7a3O8+4LFSBGOnHto/PwdsvF/01yGYL0LoZTnoO1i6x7AMJPBh+eyDU0ZjGhj/msjmqeb9C8vRqQ+1WjHrIS1iqCD0Czib8tUPD4="
