Makefile: Fix "make clean" in "unconfigured" source directory
[qemu/ar7.git] / .travis.yml
blob5d3d6ee1d3287ce518707aabd84dc5e16111f493
1 # The current Travis default is a VM based 16.04 Xenial on GCE
2 # Additional builds with specific requirements for a full VM need to
3 # be added as additional matrix: entries later on
4 dist: xenial
5 language: c
6 compiler:
7   - gcc
8 cache: ccache
11 addons:
12   apt:
13     packages:
14       # Build dependencies
15       - libaio-dev
16       - libattr1-dev
17       - libbrlapi-dev
18       - libcap-ng-dev
19       - libgcc-4.8-dev
20       - libgnutls-dev
21       - libgtk-3-dev
22       - libiscsi-dev
23       - liblttng-ust-dev
24       - libncurses5-dev
25       - libnfs-dev
26       - libnss3-dev
27       - libpixman-1-dev
28       - libpng12-dev
29       - librados-dev
30       - libsdl1.2-dev
31       - libseccomp-dev
32       - libspice-protocol-dev
33       - libspice-server-dev
34       - libssh-dev
35       - liburcu-dev
36       - libusb-1.0-0-dev
37       - libvte-2.91-dev
38       - sparse
39       - uuid-dev
40       - gcovr
41   homebrew:
42     packages:
43       - glib
44       - pixman
45       - gnu-sed
46     update: true
49 # The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
50 # to prevent IRC notifications from forks. This was created using:
51 # $ travis encrypt -r "qemu/qemu" "irc.oftc.net#qemu"
52 notifications:
53   irc:
54     channels:
55       - secure: "F7GDRgjuOo5IUyRLqSkmDL7kvdU4UcH3Lm/W2db2JnDHTGCqgEdaYEYKciyCLZ57vOTsTsOgesN8iUT7hNHBd1KWKjZe9KDTZWppWRYVwAwQMzVeSOsbbU4tRoJ6Pp+3qhH1Z0eGYR9ZgKYAoTumDFgSAYRp4IscKS8jkoedOqM="
56     on_success: change
57     on_failure: always
60 env:
61   global:
62     - SRC_DIR="."
63     - BUILD_DIR="."
64     - BASE_CONFIG="--disable-docs --disable-tools"
65     - TEST_CMD="make check -j3 V=1"
66     # This is broadly a list of "mainline" softmmu targets which have support across the major distros
67     - MAIN_SOFTMMU_TARGETS="aarch64-softmmu,arm-softmmu,i386-softmmu,mips-softmmu,mips64-softmmu,ppc64-softmmu,riscv64-softmmu,s390x-softmmu,x86_64-softmmu"
69 git:
70   # we want to do this ourselves
71   submodules: false
74 before_script:
75   - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR}
76   - ${SRC_DIR}/configure ${BASE_CONFIG} ${CONFIG} || { cat config.log && exit 1; }
77 script:
78   - make -j3 && ${TEST_CMD}
81 matrix:
82   include:
83     - env:
84         - CONFIG="--disable-system --static"
87     # we split the system builds as it takes a while to build them all
88     - env:
89         - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
92     - env:
93         - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
96     # Just build tools and run minimal unit and softfloat checks
97     - env:
98         - BASE_CONFIG="--enable-tools"
99         - CONFIG="--disable-user --disable-system"
100         - TEST_CMD="make check-unit check-softfloat -j3"
102     - env:
103         - CONFIG="--enable-debug --enable-debug-tcg --disable-user"
106     # TCG debug can be run just on it's own and is mostly agnostic to user/softmmu distinctions
107     - env:
108         - CONFIG="--enable-debug-tcg --disable-system"
111     - env:
112         - CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
115     # Module builds are mostly of interest to major distros
116     - env:
117         - CONFIG="--enable-modules --target-list=${MAIN_SOFTMMU_TARGETS}"
120     # Alternate coroutines implementations are only really of interest to KVM users
121     # However we can't test against KVM on Travis so we can only run unit tests
122     - env:
123         - CONFIG="--with-coroutine=ucontext --disable-tcg"
124         - TEST_CMD="make check-unit -j3 V=1"
127     - env:
128         - CONFIG="--with-coroutine=sigaltstack --disable-tcg"
129         - TEST_CMD="make check-unit -j3 V=1"
132     # Check we can build docs and tools (out of tree)
133     - env:
134         - BUILD_DIR="out-of-tree/build/dir" SRC_DIR="../../.."
135         - BASE_CONFIG="--enable-tools --enable-docs"
136         - CONFIG="--target-list=x86_64-softmmu,aarch64-linux-user"
137       addons:
138         apt:
139           packages:
140             - python-sphinx
141             - texinfo
142             - perl
145     # Test with Clang for compile portability (Travis uses clang-5.0)
146     - env:
147         - CONFIG="--disable-system"
148       compiler: clang
151     - env:
152         - CONFIG="--disable-user --target-list=${MAIN_SOFTMMU_TARGETS}"
153       compiler: clang
156     - env:
157         - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS} "
158       compiler: clang
159       before_script:
160         - ./configure ${CONFIG} --extra-cflags="-fsanitize=undefined -Werror" || { cat config.log && exit 1; }
163     - env:
164         - CONFIG="--disable-user --target-list-exclude=${MAIN_SOFTMMU_TARGETS}"
165       compiler: clang
168     # gprof/gcov are GCC features
169     - env:
170         - CONFIG="--enable-gprof --enable-gcov --disable-pie --target-list=${MAIN_SOFTMMU_TARGETS}"
171       after_success:
172         - ${SRC_DIR}/scripts/travis/coverage-summary.sh
175     # We manually include builds which we disable "make check" for
176     - env:
177         - CONFIG="--without-default-devices --disable-user"
178         - TEST_CMD=""
181     # We manually include builds which we disable "make check" for
182     - env:
183         - CONFIG="--enable-debug --enable-tcg-interpreter"
184         - TEST_CMD=""
187     # We don't need to exercise every backend with every front-end
188     - env:
189         - CONFIG="--enable-trace-backends=log,simple,syslog --disable-system"
190         - TEST_CMD=""
193     - env:
194         - CONFIG="--enable-trace-backends=ftrace --target-list=x86_64-softmmu"
195         - TEST_CMD=""
198     - env:
199         - CONFIG="--enable-trace-backends=ust --target-list=x86_64-softmmu"
200         - TEST_CMD=""
203     # MacOSX builds
204     - env:
205         - CONFIG="--target-list=${MAIN_SOFTMMU_TARGETS}"
206       os: osx
207       osx_image: xcode9.4
208       compiler: clang
211     - env:
212         - CONFIG="--target-list=i386-softmmu,ppc-softmmu,ppc64-softmmu,m68k-softmmu,x86_64-softmmu"
213       os: osx
214       osx_image: xcode10.2
215       compiler: clang
218     # Python builds
219     - env:
220         - CONFIG="--target-list=x86_64-softmmu"
221       language: python
222       python:
223         - "3.4"
226     - env:
227         - CONFIG="--target-list=x86_64-softmmu"
228       language: python
229       python:
230         - "3.6"
233     # Acceptance (Functional) tests
234     - env:
235         - CONFIG="--python=/usr/bin/python3 --target-list=x86_64-softmmu,mips-softmmu,mips64el-softmmu,aarch64-softmmu,arm-softmmu,s390x-softmmu,alpha-softmmu"
236         - TEST_CMD="make check-acceptance"
237       after_failure:
238         - cat tests/results/latest/job.log
239       addons:
240         apt:
241           packages:
242             - python3-pip
243             - python3.5-venv
244     # Using newer GCC with sanitizers
245     - addons:
246         apt:
247           update: true
248           sources:
249             # PPAs for newer toolchains
250             - ubuntu-toolchain-r-test
251           packages:
252             # Extra toolchains
253             - gcc-9
254             - g++-9
255             # Build dependencies
256             - libaio-dev
257             - libattr1-dev
258             - libbrlapi-dev
259             - libcap-ng-dev
260             - libgnutls-dev
261             - libgtk-3-dev
262             - libiscsi-dev
263             - liblttng-ust-dev
264             - libnfs-dev
265             - libncurses5-dev
266             - libnss3-dev
267             - libpixman-1-dev
268             - libpng12-dev
269             - librados-dev
270             - libsdl1.2-dev
271             - libseccomp-dev
272             - libspice-protocol-dev
273             - libspice-server-dev
274             - libssh-dev
275             - liburcu-dev
276             - libusb-1.0-0-dev
277             - libvte-2.91-dev
278             - sparse
279             - uuid-dev
280       language: generic
281       compiler: none
282       env:
283         - COMPILER_NAME=gcc CXX=g++-9 CC=gcc-9
284         - CONFIG="--cc=gcc-9 --cxx=g++-9 --disable-pie --disable-linux-user"
285         - TEST_CMD=""
286       before_script:
287         - ./configure ${CONFIG} --extra-cflags="-g3 -O0 -Wno-error=stringop-truncation -fsanitize=thread -fuse-ld=gold" || { cat config.log && exit 1; }
290     # Run check-tcg against linux-user
291     - env:
292         - CONFIG="--disable-system"
293         - TEST_CMD="make -j3 check-tcg V=1"
295     # Run check-tcg against softmmu targets
296     - env:
297         - CONFIG="--target-list=xtensa-softmmu,arm-softmmu,aarch64-softmmu,alpha-softmmu"
298         - TEST_CMD="make -j3 check-tcg V=1"