| 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 (debug)" | |
| 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 | |
| # out of source gcc 8 build with c++14, runs icuinfo | |
| - name: "c: linux gcc 8 c++14" | |
| dist: bionic | |
| language: cpp | |
| addons: | |
| apt: | |
| packages: | |
| - g++-8 | |
| env: PREFIX=/tmp/icu-prefix CC=gcc-8 CXX=g++-8 CXXFLAGS="-std=c++14" | |
| before_script: | |
| - mkdir build && cd build | |
| - ../icu4c/source/runConfigureICU Linux --disable-layout --disable-layoutex --prefix="${PREFIX}" | |
| - make -j2 | |
| script: | |
| - make -j2 check && make install | |
| - cd "${PREFIX}/bin" && LD_LIBRARY_PATH=../lib ./icuinfo | |
| # 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 (debug)" | |
| 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 (debug)" | |
| 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 |