---
os:
  - linux
  - osx
sudo: false
dist: trusty
osx_image: xcode10.1

branches:
  except:
    - /.*appveyor.*/
    - /.*win.*/
    - /.*mingw.*/
    - /.*freebsd.*/
    - /.*bitrise.*/

git:
  quiet: true

env:
  matrix:
    - EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS=""
    - EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_OPENSSL=ON"
    - EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_THREAD_SUPPORT=ON"
    - EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_DEBUG_MODE=ON"
    - EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__DISABLE_MM_REPLACEMENT=ON"
    - EVENT_BUILD_METHOD=autotools EVENT_CONFIGURE_OPTIONS=""
    - EVENT_BUILD_METHOD=autotools EVENT_CONFIGURE_OPTIONS="--disable-openssl"
    - EVENT_BUILD_METHOD=autotools EVENT_CONFIGURE_OPTIONS="--disable-thread-support"
    - EVENT_BUILD_METHOD=autotools EVENT_CONFIGURE_OPTIONS="--disable-debug-mode"
    - EVENT_BUILD_METHOD=autotools EVENT_CONFIGURE_OPTIONS="--disable-malloc-replacement"

matrix:
  include:
    # clang
    - os: linux
      env: EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS=""
      compiler: clang
    - os: linux
      env: EVENT_BUILD_METHOD=autotools EVENT_CONFIGURE_OPTIONS=""
      compiler: clang
    ## coveralls
    #- os: linux
    #  env: EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__COVERAGE=ON -DCMAKE_BUILD_TYPE=debug" COVERALLS=yes
    # test-export
    - os: linux
      env: EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=STATIC -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" TEST_EXPORT=STATIC
    - os: linux
      env: EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="-DEVENT__LIBRARY_TYPE=SHARED -DEVENT__DISABLE_TESTS=ON -DEVENT__DISABLE_SAMPLES=ON" TEST_EXPORT=SHARED
    # for openssl1.1
    - os: linux
      dist: bionic
      env: EVENT_BUILD_METHOD=cmake EVENT_CMAKE_OPTIONS="" OPENSSL_1_1=yes
    ## deploy documentation to github pages
    #- os: linux
    #  env: TOOL=doxygen
    #  addons:
    #    apt:
    #      packages:
    #        - doxygen
    #        - doxygen-doc
    #        - doxygen-latex
    #        - doxygen-gui
    #        - graphviz
    #        - cmake
    #  branches:
    #    only:
    #      - master
    #  if: repo = libevent/libevent AND branch = master AND type != pull_request
  fast_finish: true

language: c
# osx will use Apple LLVM clang, but we are fine with this,
# since we just use default compiler.
compiler: gcc

before_install:
  - if [ -n "$COVERALLS" ]; then
      pip install --user cpp-coveralls;
    fi
  - export JOBS=20
  - export TIMEOUT=50
  - if [ "$TRAVIS_OS_NAME" == "osx" ]; then
      export OPENSSL_ROOT=$(echo /usr/local/Cellar/openssl/*);
      export
        CMAKE_INCLUDE_PATH=$OPENSSL_ROOT/include
        CMAKE_LIBRARY_PATH=$OPENSSL_ROOT/lib;
      export
        CFLAGS=-I$CMAKE_INCLUDE_PATH
        LDFLAGS=-L$CMAKE_LIBRARY_PATH;

      export JOBS=1;
    fi

addons:
  apt:
    sources:
      - xenial
      - sourceline: 'deb http://archive.ubuntu.com/ubuntu xenial main'
    packages:
      - zlib1g-dev
      - libssl-dev
      - build-essential
      - automake
      - autoconf
      - cmake
      - lcov
  homebrew:
    packages:
      - openssl
      - lcov
      - libtool
      - gcc


script:
  - if [ "$EVENT_BUILD_METHOD" = "autotools" ]; then
      ./autogen.sh;
      ./configure $EVENT_CONFIGURE_OPTIONS;
      time make -j $JOBS;
      time make -j $JOBS verify;
    fi
  - if [ "$EVENT_BUILD_METHOD" = "cmake" ]; then
      export
        CTEST_PARALLEL_LEVEL=$JOBS
        CTEST_OUTPUT_ON_FAILURE=1;

      mkdir build &&
      cd build &&
      cmake .. $EVENT_CMAKE_OPTIONS;
      if [ "$TEST_EXPORT" == "STATIC" ]; then
        cmake --build .;
        sudo python3 ../test-export/test-export.py static;
      elif [ "$TEST_EXPORT" == "SHARED" ]; then
        cmake --build .;
        sudo python3 ../test-export/test-export.py shared;
      else
        time cmake --build .;
        time cmake --build . --target verify;
      fi
    fi
  - if [ "$TOOL" == "doxygen" ]; then
      eval "$(ssh-agent -s)";
      openssl aes-256-cbc
        -K $encrypted_82aa789583ed_key
        -iv $encrypted_82aa789583ed_iv
        -in .github/travis-ci-key.enc
        -out .github/travis-ci-key -d;
      chmod 600 .github/travis-ci-key;
      ssh-add .github/travis-ci-key;

      mkdir build &&
      cd build &&
      cmake -DEVENT__DOXYGEN=ON .. &&
      cmake --build . --target doxygen;

      cd doxygen/html;

      git init;
      git add -f .;
      git commit -am "Update documentation ($TRAVIS_REPO_SLUG@$TRAVIS_COMMIT)";
      git push -f git@github.com:libevent/doc.git master;
    fi

after_script:
  - if [ -n "$COVERALLS" ]; then
      coveralls
        --build-root .
        --root ..
        --exclude test
        --exclude sample
        --exclude cmake
        --exclude build/CMakeFiles/CheckTypeSize
        --exclude build/CMakeFiles/CompilerIdC
        --gcov-options '\-lp';
    fi
