language: c
sudo: required
cache:
    directories:
        - $HOME/libpsl-0.20.1
        - $HOME/mbedtls-mbedtls-2.8.0
        - $HOME/libidn2-2.0.4
        - $HOME/wolfssl-3.14.0-stable
        - $HOME/mesalink-0.7.1

env:
    global:
        - LD_LIBRARY_PATH=/usr/local/lib

addons:
    apt:
        config:
            retries: true
        sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-trusty-6.0
        packages:
            - cmake
            - gcc-7
            - gcc-8
            - lcov
            - clang-6.0
            - valgrind
            - libev-dev
            - libc-ares-dev
            - g++-8
            - libstdc++-8-dev
            - stunnel4
            - libidn2-0-dev
            - libssh2-1-dev
            - libssh-dev
            - krb5-user
            - autopoint  # for libpsl that needs autoreconf that uses gettext that needs it
            - libunistring-dev # for libidn2 needed by libpsl
            - libnss3-dev
            - gnutls-bin
            - clang-tidy-6.0

matrix:
    include:
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=normal C="--with-gssapi --with-libssh2" CHECKSRC=1
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=normal C=--with-libssh
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=normal C="--disable-http --disable-smtp --disable-imap"
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=normal C="--enable-ares"
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=normal C="--disable-verbose" CPPFLAGS="-Wno-variadic-macros" NOTESTS=1
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=normal BROTLI=yes
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=novalgrind BORINGSSL=yes C="--with-ssl=$HOME/boringssl" LD_LIBRARY_PATH=/home/travis/boringssl/lib:/usr/local/lib
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=debug-wolfssl C="--with-wolfssl --without-ssl"
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=debug-mesalink C="--with-mesalink --without-ssl"
        - os: linux
          compiler: clang
          dist: trusty
          env: T=debug
        - os: linux
          compiler: clang
          dist: trusty
          env: T=debug C="--with-mbedtls --without-ssl"
        - os: linux
          compiler: clang
          dist: trusty
          env: T=debug C="--disable-threaded-resolver"
        - os: linux
          compiler: clang
          dist: trusty
          env: T=debug C="--with-nss --without-ssl" NOTESTS=1 CPPFLAGS="-isystem /usr/include/nss"
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=iconv
        - os: osx
          compiler: gcc
          env: T=debug C=--with-libssh2
        - os: osx
          compiler: gcc
          env: T=debug C=--enable-ares
        - os: osx
          compiler: gcc
          env: T=debug C="--with-ssl=/usr/local/opt/openssl --with-libmetalink"
        - os: osx
          compiler: gcc
          env: T=debug C="--with-ssl=/usr/local/opt/libressl --with-libmetalink"
        - os: osx
          compiler: clang
          osx_image: xcode10
          env: T=debug C="--without-ssl --with-darwinssl --with-libmetalink"
        - os: osx
          compiler: clang
          env: T=normal
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=cmake
        - os: linux
          compiler: clang
          dist: trusty
          env: T=cmake
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=coverage
        - os: linux
          compiler: gcc
          dist: trusty
          env: T=distcheck
        - os: linux
          compiler: clang
          dist: trusty
          env: T=fuzzer
        - os: linux
          compiler: clang
          dist: trusty
          env: T=tidy

install:
  - if [ "$T" = "coverage" ]; then pip2 install --user cpp-coveralls; fi
  - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update > /dev/null; fi
  - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew reinstall libtool > /dev/null; fi
  - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install rtmpdump libssh2 c-ares libmetalink libressl nghttp2 libmetalink; fi
  - if [ $TRAVIS_OS_NAME = linux ]; then
      curl -L https://github.com/nghttp2/nghttp2/releases/download/v1.24.0/nghttp2-1.24.0.tar.gz |
         tar xzf - &&
         (cd nghttp2-1.24.0 && CXX="g++-8" ./configure --prefix=/usr --disable-threads --enable-app && make && sudo make install);
    fi

before_script:
    - ./buildconf
    - |
      # No brotli package available for Trusty. Download & compile from source.
      # Cannot be done in the install script because cmake is needed.
          if [ "$TRAVIS_OS_NAME" = linux -a "$BROTLI" ]; then
          curl -L https://github.com/google/brotli/archive/v1.0.1.tar.gz |
              tar xzf - &&
              (
                  cd brotli-1.0.1 &&
                  cmake . -DCMAKE_INSTALL_PREFIX=/usr \
                          -DCMAKE_INSTALL_LIBDIR=/usr/lib &&
                  make &&
                  sudo make install
              )
          fi
    - |
      if [ "$TRAVIS_OS_NAME" = linux -a "$BORINGSSL" ]; then
        (cd $HOME &&
        git clone --depth=1 https://boringssl.googlesource.com/boringssl &&
        cd boringssl &&
        mkdir build &&
        cd build &&
        cmake -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=1 .. &&
        make &&
        cd .. &&
        mkdir lib &&
        cd lib &&
        ln -s ../build/crypto/libcrypto.so . &&
        ln -s ../build/ssl/libssl.so . &&
        echo "BoringSSL lib dir: "`pwd` &&
        export LIBS=-lpthread )
      fi
    - |
      if [ $TRAVIS_OS_NAME = linux ]; then
        if [ ! -e $HOME/libidn2-2.0.4/Makefile ]; then
          (cd $HOME && \
          curl -LO https://ftp.gnu.org/gnu/libidn/libidn2-2.0.4.tar.gz && \
          tar -xzf libidn2-2.0.4.tar.gz && \
          cd libidn2-2.0.4 && \
          ./configure && \
          make)
        fi
      fi
    - |
      if [ $TRAVIS_OS_NAME = linux ]; then
        if [ ! -e $HOME/libpsl-0.20.1/Makefile ]; then
          (cd $HOME && \
          curl -LO https://github.com/rockdaboot/libpsl/releases/download/libpsl-0.20.1/libpsl-0.20.1.tar.gz && \
          tar -xzf libpsl-0.20.1.tar.gz && \
          cd libpsl-0.20.1 && \
          autoreconf -i && \
          ./configure && \
          make)
        fi
      fi
    - |
      if [ $TRAVIS_OS_NAME = linux ]; then
        if [ ! -e $HOME/mbedtls-mbedtls-2.8.0/library/libmbedtls.a ]; then
          (cd $HOME && \
          curl -LO https://github.com/ARMmbed/mbedtls/archive/mbedtls-2.8.0.tar.gz && \
          tar -xzf mbedtls-2.8.0.tar.gz && \
          cd mbedtls-mbedtls-2.8.0 && \
          cmake . -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_C_FLAGS=-fPIC && \
          make)
        fi
      fi
    - |
      if [ $TRAVIS_OS_NAME = linux ]; then
        if [ ! -e $HOME/wolfssl-3.14.0-stable/Makefile ]; then
          (cd $HOME && \
          curl -LO https://github.com/wolfSSL/wolfssl/archive/v3.14.0-stable.tar.gz && \
          tar -xzf v3.14.0-stable.tar.gz && \
          cd wolfssl-3.14.0-stable && \
          ./autogen.sh && \
          ./configure --enable-tls13 --enable-all && \
          touch wolfssl/wolfcrypt/fips.h && \
          make)
        fi
      fi
    - |
      if [ $TRAVIS_OS_NAME = linux ]; then
        if [ ! -e $HOME/mesalink-0.7.1/Makefile ]; then
          (cd $HOME && \
          curl https://sh.rustup.rs -sSf | sh -s -- -y && \
          source $HOME/.cargo/env && \
          curl -LO https://github.com/mesalock-linux/mesalink/archive/v0.7.1.tar.gz && \
          tar -xzf v0.7.1.tar.gz && \
          cd mesalink-0.7.1 && \
          ./autogen.sh && \
          ./configure --enable-tls13  && \
          make)
        fi
      fi
    - |
      if [ $TRAVIS_OS_NAME = linux ]; then
        (cd $HOME/libidn2-2.0.4 && sudo make install)
        (cd $HOME/libpsl-0.20.1 && sudo make install)
        (cd $HOME/mbedtls-mbedtls-2.8.0 && sudo make install)
        (cd $HOME/wolfssl-3.14.0-stable && sudo make install)
        (cd $HOME/mesalink-0.7.1 && sudo make install)
      fi

script:
    - |
        set -eo pipefail
        if [ "$T" = "coverage" ]; then
             export CC="gcc-7"
             ./configure --enable-debug --disable-shared --enable-code-coverage
             make
             make TFLAGS=-n test-nonflaky
             make "TFLAGS=-n -e" test-nonflaky
             tests="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 200 201 202 300 301 302 500 501 502 503 504 506 507 508 509 510 511 512 513 514 515 516 517 518 519 600 601 700 701 702 800 801 802 803 900 901 902 903 1000 1001 1002 1004 1100 1101 1200 1201 1302 1303 1304 1305 1306 1308 1400 1401 1402 1404 1450 1451 1452 1502 1507 1508 1600 1602 1603 1605 1650 2001 2100 3000"
             make "TFLAGS=-n -t $tests" test-nonflaky
             coveralls --gcov /usr/bin/gcov-7 --gcov-options '\-lp' -i src -e lib -e tests -e docs -b $PWD/src
             coveralls --gcov /usr/bin/gcov-7 --gcov-options '\-lp' -e src -i lib -e tests -e docs -b $PWD/lib
        fi
    - |
        set -eo pipefail
        if [ "$T" = "debug" ]; then
             ./configure --enable-debug --enable-werror $C
             make && make examples
             if [ -z $NOTESTS ]; then
                make TFLAGS=-n test-nonflaky
             fi
        fi
    - |
        set -eo pipefail
        if [ "$T" = "debug-wolfssl" ]; then
             ./configure --enable-debug --enable-werror $C
             make
             make "TFLAGS=-n !311 !313" test-nonflaky
        fi
    - |
        set -eo pipefail
        if [ "$T" = "debug-mesalink" ]; then
             ./configure --enable-debug --enable-werror $C
             make
             make "TFLAGS=-n !313" test-nonflaky
        fi
    - |
        set -eo pipefail
        if [ "$T" = "novalgrind" ]; then
             ./configure $C
             make && make examples
             make TFLAGS=-n test-nonflaky
        fi
    - |
        set -eo pipefail
        if [ "$T" = "normal" ]; then
             ./configure --enable-warnings --enable-werror $C
             make && make examples
             if [ -z $NOTESTS ]; then
                make test-nonflaky
             fi
             if [ -n $CHECKSRC ]; then
                make checksrc
             fi
        fi
    - |
        set -eo pipefail
        if [ "$T" = "tidy" ]; then
             ./configure --enable-warnings --enable-werror $C
             make && make tidy
        fi
    - |
        set -eo pipefail
        if [ "$T" = "iconv" ]; then
             source .travis-iconv-env.sh
             ./configure --enable-debug --enable-werror $C
             make && make examples
             make TFLAGS=-n test-nonflaky
        fi
    - |
        set -eo pipefail
        if [ "$T" = "cmake" ]; then
             mkdir build
             cd build
             cmake .. -DCURL_WERROR=ON
             make
        fi
    - |
        set -eo pipefail
        if [ "$T" = "distcheck" ]; then
            # find BOM markers and exit if we do
            ! git grep `printf '\xef\xbb\xbf'`
            ./configure
            make
            ./maketgz 99.98.97
            # verify in-tree build - and install it
            (tar xf curl-99.98.97.tar.gz && \
             cd curl-99.98.97 && \
             ./configure --prefix=$HOME/temp && \
             make && \
             make TFLAGS=1 test && \
             make install)
            # basic check of the installed files
            bash scripts/installcheck.sh $HOME/temp
            rm -rf curl-99.98.97
            # verify out-of-tree build
            (tar xf curl-99.98.97.tar.gz && \
             touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc && \
             mkdir build && \
             cd build && \
             ../curl-99.98.97/configure && \
             make && \
             make TFLAGS='-p 1 1139' test)
            # verify cmake build
            rm -rf curl-99.98.97
            (tar xf curl-99.98.97.tar.gz && \
             cd curl-99.98.97 && \
             mkdir build && \
             cd build && \
             cmake .. && \
             make)
        fi
    - |
        set -eo pipefail
        if [ "$T" = "fuzzer" ]; then
          # Download the fuzzer to a temporary folder
          ./tests/fuzz/download_fuzzer.sh /tmp/curl_fuzzer

          export CURLSRC=$PWD

          # Run the mainline fuzzer test
          pushd /tmp/curl_fuzzer
          ./mainline.sh ${CURLSRC}
          popd
        fi

# whitelist branches to avoid testing feature branches twice (as branch and as pull request)
branches:
    only:
        - master

notifications:
  email: false
