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: 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
                echo "enable COPYRIGHTYEAR" > "lib/.checksrc"
                echo "enable COPYRIGHTYEAR" > "src/.checksrc"
                echo "enable COPYRIGHTYEAR" > "include/curl/.checksrc"
                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
