diff --git a/.travis.yml b/.travis.yml index 91ee289..acad3fd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,87 @@ -language: cpp +language: c +cache: ccache +matrix: +# gcc + include: + - os: linux + dist: xenial + compiler: gcc + addons: + apt: + packages: + - valgrind + - cppcheck + env: CHECK="true" + - os: linux + dist: xenial + compiler: gcc + - os: linux + dist: xenial + compiler: gcc + env: MATRIX_EVAL="CC=gcc-6 && CXX=g++-6" + - os: linux + dist: xenial + compiler: gcc + env: MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + - os: linux + dist: xenial + compiler: gcc + env: MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" -compiler: - - gcc - - clang +# clang + - os: linux + dist: xenial + compiler: clang + addons: + apt: + sources: + - llvm-toolchain-xenial-5.0 + packages: + - clang-5.0 + env: MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0" + - os: linux + dist: xenial + compiler: clang + addons: + apt: + sources: + - llvm-toolchain-xenial-6.0 + packages: + - clang-6.0 + - cppcheck + env: MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0" + # The default clang on xenial is clang 7.0 + - os: linux + dist: xenial + compiler: clang +# osx + - os: osx + osx_image: xcode9.4 + env: XCODE="true" + - os: osx + osx_image: xcode10.1 + env: XCODE="true" CHECK="true" -addons: - apt: - packages: - - cppcheck - - valgrind +# allow_failures: +# - os: osx -os: - - linux - - osx +install: + - sh autogen.sh before_install: + - echo $CC - echo $LANG - echo $LC_ALL - set -e - -install: - - sh autogen.sh + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then + eval "${MATRIX_EVAL}"; + if [ -n "$MATRIX_EVAL" ] && [ "$TRAVIS_COMPILER" != "clang" ]; then + sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6B05F25D762E3157; + sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; + sudo apt-get update -qq; + sudo apt-get install -y $CC; + fi; + fi before_script: - ./configure @@ -29,9 +90,13 @@ script: - make after_success: - - make check ; result=$? - - if [ $result != 0 ]; then - cat tests/*.log; + - if [ -n "$CHECK" ]; then + make distcheck; + result=$?; + if [ $result != 0 ]; then + cat tests/*.log; + exit $result; + fi; + if type cppcheck &> /dev/null ; then cppcheck --error-exitcode=1 --quiet *.h *.c tests/ ; fi; fi - - if type cppcheck &> /dev/null ; then cppcheck --error-exitcode=1 --quiet *.h *.c tests/ ; fi - - exit $result +