summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 08772c15b55a41b02db8371515c31d6083bd9b3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
language: cpp
matrix:
  include:
# gcc
#   xenial
#   gcc 5 is the default on xenial
    - os: linux
      dist: xenial
      compiler: gcc
      addons:
        apt:
          packages:
            - valgrind
            - cppcheck
            - doxygen
            - cmake
      env: CHECK="true"
#   bionic
    - os: linux
      dist: bionic
      compiler: gcc
      env: MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"

    # gcc 7 is the default on bionic
    - os: linux
      dist: bionic
      compiler: gcc
      env: CHECK="true"
    - os: linux
      dist: bionic
      compiler: gcc
      env: MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"

# clang
#   xenial
    - os: linux
      dist: xenial
      compiler: clang
      addons:
        apt:
          sources:
            - llvm-toolchain-xenial-5.0
          packages:
            - clang-5.0
            - cmake
      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
            - cmake
      env: MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0"

    # clang-7 is the default on xenial and bionic
    - os: linux
      dist: xenial
      compiler: clang
      addons:
        apt:
          packages:
            - valgrind
            - cppcheck
            - doxygen
            - cmake
      env: CHECK="true"

# bionic
    - os: linux
      dist: bionic
      compiler: clang
      env: CHECK="true"
# osx
    - os: osx
      osx_image: xcode9.4
      env: XCODE="true"
    - os: osx
      osx_image: xcode10.1
      env: XCODE="true" CHECK="true"

# run coveralls
    - os: linux
      dist: xenial
      compiler: gcc
      addons:
        apt:
          packages:
            - lcov
      env: CHECK="true"
      before_install:
        - sudo gem install coveralls-lcov
        - echo $CC
        - echo $LANG
        - echo $LC_ALL
        - set -e
        - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
            eval "${MATRIX_EVAL}";
            if [ -n "$MATRIX_EVAL" ] && [ "$TRAVIS_COMPILER" != "clang" ]; then
              sudo apt-get install -y $CC;
            fi;
          fi
      before_script:
        - export CFLAGS="-fprofile-arcs -ftest-coverage"
        - mkdir build && cd build && cmake ..
      script:
        - make
        - make test
      after_success:
        - cd ..
        - lcov -d build/ -b . -c -o build/all_coverage.info
        - lcov -r build/all_coverage.info '/usr/*' '*CMakeFiles*' '*fuzz*' '*test*' -o build/coverage.info
        - coveralls-lcov --verbose build/coverage.info

#  allow_failures:
#    - os: osx

before_install:
  - echo $CC
  - echo $LANG
  - echo $LC_ALL
  - set -e
  - if [ "$TRAVIS_OS_NAME" = "linux" ]; then
      eval "${MATRIX_EVAL}";
      if [ -n "$MATRIX_EVAL" ] && [ "$TRAVIS_COMPILER" != "clang" ]; then
        sudo apt-get install -y $CC;
      fi;
    fi

before_script:
  # XXX osx on travis doesn't work w/ set -e, so turn it off :(
  - set +e
  - mkdir -p build || echo "Failed to mkdir build"
  - cd build || echo "Failed to cd build"
  - cmake .. || echo "Failed to run cmake"

script:
  - make
  # when using bionic, Travis seems to ignore the "addons" section, so installing the packages with apt-get...
  - if [ -n "$CHECK" ]; then
      if [ "$TRAVIS_OS_NAME" = "osx" ]; then
        brew install doxygen;
      else
        if [ "$TRAVIS_DIST" = "bionic" ]; then
          sudo apt-get install -y valgrind cppcheck doxygen;
        fi;
      fi;
      make distcheck;
      if type cppcheck &> /dev/null ; then cppcheck --error-exitcode=1 --quiet *.h *.c tests/ ; fi;
    fi