Workaround 'value of AO_CLEAR unknown' cppcheck info message
[platform/upstream/libatomic_ops.git] / .travis.yml
1 language: c
2
3 matrix:
4   include:
5     - os: linux
6       compiler: clang
7     - os: linux
8       compiler: gcc
9     - os: osx
10     - os: linux
11       env: [ COVERITY_SCAN_BRANCH=1 ]
12       addons:
13         coverity_scan:
14           project:
15             name: ivmai/libatomic_ops
16             version: 7.5.0
17             description: The atomic_ops library
18           branch_pattern: master
19           build_command_prepend: ./configure
20           build_command: make -j check CFLAGS_EXTRA="-D LINT2 -march=native"
21     - os: linux
22       compiler: clang
23       env:
24         - CFLAGS_EXTRA="-O3 -march=native"
25         - CONF_OPTIONS="--enable-assertions"
26     - os: linux
27       compiler: gcc
28       env:
29         - CFLAGS_EXTRA="-O3 -march=native"
30         - CONF_OPTIONS="--enable-assertions"
31     - os: osx
32       env:
33         - CFLAGS_EXTRA="-O3 -march=native"
34         - CONF_OPTIONS="--enable-assertions"
35     - os: linux
36       compiler: clang
37       dist: trusty
38       env: [ CFLAGS_EXTRA="-march=native -std=c11" ]
39     - os: linux
40       compiler: gcc
41       env: [ CFLAGS_EXTRA="-march=native -D _FORTIFY_SOURCE=2 -std=c89" ]
42     - os: linux
43       addons: { apt: { packages: [ gcc-multilib ] } }
44       compiler: clang
45       env:
46         - CFLAGS_EXTRA="-m32 -march=native"
47         - CONF_OPTIONS="--enable-assertions"
48     - os: linux
49       addons: { apt: { packages: [ gcc-multilib ] } }
50       compiler: gcc
51       env:
52         - CFLAGS_EXTRA="-m32 -march=native"
53         - CONF_OPTIONS="--enable-assertions"
54     - os: osx
55       env:
56         - CFLAGS_EXTRA="-m32 -march=native -D _FORTIFY_SOURCE=2"
57         - CONF_OPTIONS="--enable-assertions"
58     - os: linux
59       addons:
60         apt:
61           packages: [ clang-4.0 ]
62           sources: [ llvm-toolchain-trusty-4.0 ]
63       compiler: clang-4.0
64       dist: trusty
65       env: [ CFLAGS_EXTRA="-O3 -march=native -std=c11" ]
66     - os: linux
67       addons:
68         apt:
69           packages: [ clang-4.0, gcc-multilib ]
70           sources: [ llvm-toolchain-trusty-4.0 ]
71       compiler: clang-4.0
72       dist: trusty
73       env: [ CFLAGS_EXTRA="-m32 -O3 -march=native" ]
74     - os: linux
75       addons:
76         apt:
77           packages: [ gcc-5 ]
78           sources: [ ubuntu-toolchain-r-test ]
79       compiler: gcc-5
80       dist: trusty
81       env: [ CFLAGS_EXTRA="-O3 -march=native" ]
82     - os: linux
83       addons:
84         apt:
85           packages: [ gcc-5, gcc-5-multilib ]
86           sources: [ ubuntu-toolchain-r-test ]
87       compiler: gcc-5
88       dist: trusty
89       env: [ CFLAGS_EXTRA="-m32 -O3 -march=native" ]
90     - os: linux
91       addons:
92         apt:
93           packages: [ gcc-5, gcc-5-multilib ]
94           sources: [ ubuntu-toolchain-r-test ]
95       compiler: gcc-5
96       dist: trusty
97       env:
98         - CFLAGS_EXTRA="-mx32 -march=native -D _FORTIFY_SOURCE=2"
99         - CONF_OPTIONS="--enable-assertions --enable-shared"
100     - os: linux
101       addons:
102         apt:
103           packages: [ gcc-5, gcc-5-multilib ]
104           sources: [ ubuntu-toolchain-r-test ]
105       compiler: gcc-5
106       dist: trusty
107       env:
108         - CFLAGS_EXTRA="-mx32 -march=native"
109         - CONF_OPTIONS="--disable-atomic-intrinsics"
110     - os: linux
111       compiler: clang
112       env:
113         - CFLAGS_EXTRA="-fsanitize=address -fno-common -fno-omit-frame-pointer"
114     - os: linux
115       compiler: clang
116       env:
117         - CFLAGS_EXTRA="-fsanitize=memory,undefined -march=native -fno-omit-frame-pointer"
118         - MSAN_OR_UBSAN=true
119       sudo: required
120     - os: linux
121       compiler: clang
122       env:
123         - CONF_OPTIONS="--disable-atomic-intrinsics"
124         - CFLAGS_EXTRA="-march=native"
125     - os: linux
126       addons: { apt: { packages: [ lcov ] } }
127       compiler: gcc
128       env:
129         - CONF_OPTIONS="--enable-gcov --enable-shared"
130         - REPORT_COVERAGE=true
131         - CFLAGS_EXTRA="-march=native -D DEBUG_RUN_ONE_TEST -D VERBOSE"
132     - os: linux
133       env:
134         - CPPCHECK_ENABLE="-j16 -q --enable=information,performance,portability,style,warning"
135         - MAKEFILE_TARGET=all
136       sudo: required
137     - os: linux
138       env:
139         - CPPCHECK_ENABLE="-q --enable=unusedFunction -D AO_TEST_EMULATION"
140         - MAKEFILE_TARGET=all
141       sudo: required
142     - os: linux
143       addons:
144         apt:
145           packages: [ clang-4.0 ]
146           sources: [ llvm-toolchain-trusty-4.0 ]
147       compiler: clang-4.0
148       dist: trusty
149       env:
150         - CSA_CHECK=true
151         - MAKEFILE_TARGET=all
152         - CFLAGS_EXTRA="-D AO_TRACE_MALLOC -D VERBOSE"
153     - os: linux
154       addons: { apt: { packages: [ musl-tools ] } }
155       compiler: musl-gcc
156       dist: trusty
157       env:
158         - CFLAGS_EXTRA="-march=native"
159         - CONF_OPTIONS="--enable-assertions"
160     - os: linux
161       addons: { apt: { packages: [ gcc-mingw-w64 ] } }
162       compiler: x86_64-w64-mingw32-gcc
163       dist: trusty
164       env:
165         - CONF_OPTIONS="--host=x86_64-w64-mingw32 --enable-shared"
166         - MAKEFILE_TARGET=all
167     - os: linux
168       addons: { apt: { packages: [ gcc-multilib ] } }
169       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=aarch64-linux ]
170     - os: linux
171       addons: { apt: { packages: [ gcc-multilib ] } }
172       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=alpha-linux ]
173     - os: linux
174       addons: { apt: { packages: [ gcc-multilib ] } }
175       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=arm-unknown-linux-gnueabi ]
176     - os: linux
177       addons: { apt: { packages: [ gcc-multilib ] } }
178       env: [ CROSS_GCC_VER=4.2.4, NOLIBC_ARCH_ABI=avr32-linux,
179              CFLAGS_EXTRA="-fno-strict-aliasing" ]
180     - os: linux
181       addons: { apt: { packages: [ gcc-multilib ] } }
182       env: [ CROSS_GCC_VER=4.6.3, NOLIBC_ARCH_ABI=cris-linux ]
183     - os: linux
184       addons: { apt: { packages: [ gcc-multilib ] } }
185       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=hppa-linux ]
186     - os: linux
187       addons: { apt: { packages: [ gcc-multilib ] } }
188       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=ia64-linux ]
189     - os: linux
190       addons: { apt: { packages: [ gcc-multilib ] } }
191       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=m68k-linux ]
192     - os: linux
193       addons: { apt: { packages: [ gcc-multilib ] } }
194       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=mips-linux ]
195     - os: linux
196       addons: { apt: { packages: [ gcc-multilib ] } }
197       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=mips64-linux ]
198     - os: linux
199       addons: { apt: { packages: [ gcc-multilib ] } }
200       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=powerpc-linux ]
201     - os: linux
202       addons: { apt: { packages: [ gcc-multilib ] } }
203       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=powerpc64-linux ]
204     - os: linux
205       addons: { apt: { packages: [ gcc-multilib ] } }
206       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=ppc64le-linux ]
207     - os: linux
208       addons: { apt: { packages: [ gcc-multilib ] } }
209       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=s390x-linux ]
210     - os: linux
211       addons: { apt: { packages: [ gcc-multilib ] } }
212       env: [ CROSS_GCC_VER=4.6.3, NOLIBC_ARCH_ABI=sh4-linux ]
213     - os: linux
214       addons: { apt: { packages: [ gcc-multilib ] } }
215       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=sparc-linux,
216              CFLAGS_EXTRA="-D AO_NO_SPARC_V9" ]
217     - os: linux
218       addons: { apt: { packages: [ gcc-multilib ] } }
219       env: [ CROSS_GCC_VER=4.9.0, NOLIBC_ARCH_ABI=sparc64-linux ]
220     - os: linux
221       addons: { apt: { packages: [ gcc-multilib ] } }
222       env: [ CROSS_GCC_VER=4.6.2, NOLIBC_ARCH_ABI=tilegx-linux ]
223
224 before_install:
225   - if [[ "$CPPCHECK_ENABLE" != "" ]]; then
226       git clone --depth=3 https://github.com/danmar/cppcheck.git
227             ~/cppcheck -b master;
228       make --directory ~/cppcheck -j CXXFLAGS="-O3 -march=native -D NDEBUG";
229     elif [[ "$CROSS_GCC_VER" != "" ]]; then
230       BUILD_ARCH=x86_64;
231       TAR_FOLDER_URL=https://www.kernel.org/pub/tools/crosstool/files/bin/$BUILD_ARCH/$CROSS_GCC_VER;
232       TARFILE=$BUILD_ARCH-gcc-$CROSS_GCC_VER-nolibc_$NOLIBC_ARCH_ABI.tar.xz;
233       wget -O - $TAR_FOLDER_URL/$TARFILE | tar xf - --xz --directory ~;
234       CROSS_CC=~/gcc-$CROSS_GCC_VER-nolibc/$NOLIBC_ARCH_ABI/bin/$NOLIBC_ARCH_ABI-gcc;
235       export C_INCLUDE_PATH=/usr/include;
236       MAKEFILE_TARGET=check-nolink;
237     fi
238   - if [[ "$MAKEFILE_TARGET" == "" ]]; then
239       MAKEFILE_TARGET=check;
240     fi
241
242 install:
243   - ./autogen.sh
244   - if [[ "$REPORT_COVERAGE" == true ]]; then
245       gem install coveralls-lcov;
246     fi
247
248 script:
249   - if [[ "$COVERITY_SCAN_BRANCH" != 1 ]]; then
250       ./configure $CONF_OPTIONS --enable-werror;
251     fi
252   - if [[ "$CSA_CHECK" != true && "$CPPCHECK_ENABLE" == ""
253           && "$COVERITY_SCAN_BRANCH" != 1 ]]; then
254       cat src/config.h;
255     fi
256   - if [[ "$CROSS_GCC_VER" != "" ]]; then
257       CC=$CROSS_CC;
258     fi
259   - if [[ "$COVERITY_SCAN_BRANCH" != 1 ]]; then
260       make -j $MAKEFILE_TARGET CC=$CC CFLAGS_EXTRA="$CFLAGS_EXTRA";
261     fi
262   - if [ -f tests/test_atomic.log ]; then cat tests/test_atomic*.log; fi
263   - if [[ "$CSA_CHECK" == true ]]; then
264       ${CC} --analyze -Xanalyzer -analyzer-output=text -Werror -I src
265             $CFLAGS_EXTRA tests/*.c src/*.c;
266     fi
267   - if [[ "$CPPCHECK_ENABLE" != "" ]]; then
268       ~/cppcheck/cppcheck -f --error-exitcode=2 -U long -D CPPCHECK -I src
269                 $CPPCHECK_ENABLE tests/*.c src/*.c;
270     fi
271   - if [[ "$MSAN_OR_UBSAN" == true ]]; then
272       UBSAN_OPTIONS="halt_on_error=1" make -C tests check-without-test-driver;
273     fi
274
275 after_success:
276   - if [[ "$REPORT_COVERAGE" == true ]]; then
277       lcov --capture --directory src --directory tests --output-file coverage.info;
278       lcov --remove coverage.info '/usr/*' 'tests/*' --output-file coverage.info;
279       lcov --list coverage.info;
280       coveralls-lcov --repo-token ${COVERALLS_TOKEN} coverage.info;
281     fi