matrix:
  include:

    # ICU4C Docs Build
    #    TODO: publish the latest built docs from master on GitHub pages.
    #          See https://gist.github.com/vidavidorra/548ffbcdae99d752da02 for ideas.
    - name:     "c: docs"
      dist:     xenial
      language: cpp
      addons:
         apt:
           update: true
           packages:
             - doxygen
      before_script:
        - cd icu4c/source
        - ./runConfigureICU Linux --disable-renaming
      script:
        # fail if 'warning:' appears in doxygen's output, but ignore warnings from file Doxyfile.
        # The Doxygen version from Travis is down-rev, and doesn't recognize some options
        # in the Doxyfile config file.
        # Regex note: (?! ... ) is a negative lookahead. Succeed if the pattern is not present.
        - set +o pipefail && make doc 2>&1 | tee doxygen.log && ( ! grep -P 'warning:(?! .* file Doxyfile)' doxygen.log )


    - name: "j"
      language: java
      addons:
        apt:
          packages:
            - ant
            - ant-optional
      env:      BUILD=ICU4J
      before_script:
        - cd icu4j
        - ant init
      script:
        - ant check
      after_failure:
          -  cat `find out/junit-results -name "*.txt" -exec grep -l FAILED {} \;`

    - name: "c: linux gcc 8 Wextra"
      dist:     bionic
      language: cpp
      addons:
         apt:
           packages:
             - g++-8
      env: PREFIX=/tmp/icu-prefix CC=gcc-8 CXX=g++-8 CXXFLAGS="-Wextra"
      before_script:
        - mkdir build
        - cd build
        - ../icu4c/source/runConfigureICU Linux --disable-debug --enable-release --disable-layoutex --prefix="${PREFIX}" || (tail -100 config.log ; false)
        - make -j2
      script:
        - make -j2 check
        - make install
        - PATH="${PREFIX}/bin:$PATH" make -C test/hdrtst check

    # gcc debug build.
    # Includes dependency checker.
    # Note - the dependency checker needs to be run on both a debug and an optimized build.
    # This one (gcc) for debug, and linux clang (below) for optimized.
    #
    # Test both out-of-source and in-source builds. This one (gcc) for out-of-source,
    # and linux clang (below) for in-source.
    #
    # Invokes test/hdrtst to check public headers compliance.

    - name: "c: linux gcc"
      dist:     xenial
      language: cpp
      compiler: gcc
      env:      PREFIX=/tmp/icu-prefix
      before_script:
        - mkdir build
        - cd build
        - ../icu4c/source/runConfigureICU --enable-debug --disable-release Linux --prefix="${PREFIX}" --enable-tracing
        - make -j2
      script:
        - make -j2 check
        - ( cd ../icu4c/source/test/depstest && ./depstest.py ../../../../build/ )
        - make install
        - PATH="${PREFIX}/bin:$PATH" make -C test/hdrtst check

    # clang release build with some options to enforce useful constraints.
    # Includes dependency checker on an in-source, optimized build.
    # Includes checking @draft etc. API tags vs. ifndef guards like
    # U_HIDE_DRAFT_API and U_FORCE_HIDE_DRAFT_API.
    # (FORCE guards make this tool pass but won't compile to working code.
    # See the testtagsguards.sh script for details.)
    - name: "c: linux clang"
      dist:     xenial
      language: cpp
      env:
        - CPPFLAGS="-DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
        - CFLAGS="-Wimplicit-fallthrough"
        - CXXFLAGS="-Wimplicit-fallthrough"
      compiler: clang
      before_install:
        - sudo apt-get -y install doxygen  # for make dist
      before_script:
        - cd icu4c/source
        - ./runConfigureICU Linux
        - make -j2
      script:
        - make -j2 check
        - ( cd test/depstest && python3 depstest.py ../../../source/ )
        - ( cd .. && source/test/hdrtst/testtagsguards.sh )
        - make dist # not sure if this is -j safe everywhere.

    - name: "c: osx clang"
      language: cpp
      env:      BUILD=MACINTOSH
      os:       osx
      compiler: clang
      # Use the macOS target to test Python 2 in data build script.
      # TODO(ICU-20301): Change this back to the default Python version 3.
      script:   cd icu4c/source && PYTHON=python2 ./runConfigureICU MacOSX && make -j2 check

    # Clang Linux with address sanitizer.
    # Note - the 'sudo: true' option forces Travis to use a Virtual machine on GCE instead of
    #        a Container on EC2 or Packet. Asan builds of ICU fail otherwise.
    - name: "c: linux asan"
      language: cpp
      env:
        - CPPFLAGS="-fsanitize=address"
        - LDFLAGS="-fsanitize=address"
      os:       linux
      dist:     xenial
      sudo:     true
      compiler: clang
      before_script:
        - cd icu4c/source
        - ./runConfigureICU --enable-debug --disable-release Linux --disable-renaming --enable-tracing
        - make -j2
      script:
        - make -j2 check


    # Clang Linux with thread sanitizer.
    #
    - name: "c: linux tsan"
      language: cpp
      env:
          - INTLTEST_OPTS="utility/MultithreadTest"
          - CPPFLAGS="-fsanitize=thread"
          - LDFLAGS=-fsanitize=thread
      os:       linux
      dist:     xenial
      sudo:     true
      compiler: clang
      script:
          - cd icu4c/source
          - ./runConfigureICU --enable-debug --disable-release Linux --disable-renaming
          - make -j2
          - make -j2 -C test
          - make -j2 -C test/intltest check

    # copyright scan / future linter
    - name: "lint"
      script:
          - perl tools/scripts/cpysearch/cpyscan.pl

    - name: "j: icu4c release tools"
      language: "java"
      script:
        - mvn -f tools/release/java/pom.xml package dependency:analyze
      cache:
        directories:
        - $HOME/.m2
