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
        - $HOME/nghttp2-1.34.0

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: osx
          compiler: clang
          env: T=cmake
        - 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
        - os: linux
          compiler: clang
          dist: trusty
          env: T=debug CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" LIBS="-ldl -lubsan"

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

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
        if [ ! -e $HOME/nghttp2-1.34.0/Makefile ]; then
          (cd $HOME && \
          curl -L https://github.com/nghttp2/nghttp2/releases/download/v1.34.0/nghttp2-1.34.0.tar.gz |
          tar xzf - && \
          cd nghttp2-1.34.0 && \
          CXX="g++-8" CC="gcc-8" CFLAGS="" LDFLAGS="" LIBS="" ./configure --disable-threads --enable-app && \
          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)
        (cd $HOME/nghttp2-1.34.0 && 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
             if [ $TRAVIS_OS_NAME = linux ]; then
               # Remove system curl to make sure we don't rely on it.
               # Only done on Linux since we're not permitted to on mac.
               sudo rm -f /usr/bin/curl
             fi
             ./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
             if [ $TRAVIS_OS_NAME = linux ]; then
                cmake -H. -Bbuild -DCURL_WERROR=ON && cmake --build build
             else
                cmake -H. -Bbuild -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON && cmake --build build
             fi
        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
