language: cpp
dist: xenial
sudo: required

matrix:
  include:
    - os: linux
      compiler: gcc
      addons:
        apt:
          packages:
            - expect
            - gettext
            - libncurses5-dev
            - libpcre2-dev
            - python
      env:
          - CXXFLAGS="-g -O2 -Werror=address"
    - os: linux
      compiler: gcc
      addons:
        apt:
          packages: # Don't use libpcre2-dev here, so that one build uses the vendored code
            - expect
            - gettext
            - lib32ncurses5-dev
            - g++-multilib
            - python
      env:
          - CXXFLAGS="-g -O2 -m32 -Werror=address" CFLAGS="-g -m32"
    - os: linux
      compiler: clang
      env:
          - CXXFLAGS="-g -O2 -fno-omit-frame-pointer -fsanitize=undefined -fsanitize=address"
          - ASAN_OPTIONS=check_initialization_order=1:detect_stack_use_after_return=1:detect_leaks=1
          - UBSAN_OPTIONS=print_stacktrace=1:report_error_type=1:suppressions=$TRAVIS_BUILD_DIR/build_tools/ubsan.blacklist
      addons:
        apt:
          packages:
            - expect
            - gettext
            - libncurses5-dev
            - libpcre2-dev
            - python
    - os: osx
      before_install:
        - brew update
        - brew install pcre2 # use system PCRE2
  fast_finish: true

script:
  - cmake -DCMAKE_INSTALL_PREFIX=$HOME/prefix . || cat CMakeFiles/CMakeError.log &&
    make -j2 &&
    make install &&
    make test SHOW_INTERACTIVE_LOG=1

notifications:
  # Some items are encrypted so that notifications from other repositories
  # don't flood the official repositories.
  irc:
    channels:
        #- "irc.oftc.net#fish"
        secure: "eRk9KGZ5+mrlD2SoI8yg2Sp8OYrh7YPyGe3WCDQUwTnNgNDII34rbM9a6UOA/l7AeWSNY8joLq5xVLCU4wpFgUcJ11SYIpMnLosZK29OW4ubDOHmdBDvJ971rLgAVG9cXngZtIxEVVxN/jnS1Qr8GKZx4DjkaTMgz1pemb4WxCc="
    template:
      - "%{repository}#%{build_number} (%{commit} on %{branch} by %{author}): %{message} Details at %{build_url}"
    use_notice: true
    skip_join: true
  webhooks:
    urls:
      #- https://webhooks.gitter.im/e/61821cec3015bf0f8bb1
      secure: fPfOmxnC3MCsfR1oocVFeWLawGcRZkn+8fNHlSOeZ+SqqoZfcCHgQTvQ22TqmVl1yvkXbNlaXjo6dbVzTOAh7r7H0bRMEKBVh3dQS7wqjB1sKivpXd8PAS3BTj5MQpGeJzdHnDuwVlwDktGtfHfhGeq1Go/4IosOq8u+6RTe28g=