blob: 60cbd84fffbb3a2b1e840ca487c787e50b09ddeb [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
John Snow5e4dfd32015-10-28 13:56:40 -040011# Don't allow CCACHE, if present, to use cached results of compile tests!
12export CCACHE_RECACHE=yes
13
Peter Maydell8cd05ab2014-05-23 17:07:24 +010014# Temporary directory used for files created while
15# configure runs. Since it is in the build directory
16# we can safely blow away any previous version of it
17# (and we need not jump through hoops to try to delete
18# it when configure exits.)
19TMPDIR1="config-temp"
20rm -rf "${TMPDIR1}"
21mkdir -p "${TMPDIR1}"
22if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
bellard7d132992003-03-06 23:23:54 +000025fi
26
Peter Maydell8cd05ab2014-05-23 17:07:24 +010027TMPB="qemu-conf"
28TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050029TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000030TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Don Slutz66518bf2014-01-02 21:12:46 -050031TMPL="${TMPDIR1}/${TMPB}.lo"
32TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010033TMPE="${TMPDIR1}/${TMPB}.exe"
bellard7d132992003-03-06 23:23:54 +000034
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020035rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000036
Peter Maydellb48e3612011-11-23 17:26:44 +000037# Print a helpful header at the top of config.log
38echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000039printf "# Configured with:" >> config.log
40printf " '%s'" "$0" "$@" >> config.log
41echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000042echo "#" >> config.log
43
Peter Maydell76ad07a2013-04-08 12:11:26 +010044error_exit() {
45 echo
46 echo "ERROR: $1"
47 while test -n "$2"; do
48 echo " $2"
49 shift
50 done
51 echo
52 exit 1
53}
54
Peter Maydell9c83ffd2014-02-25 18:27:49 +000055do_compiler() {
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
58 local compiler="$1"
59 shift
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010062 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
67 return 0
68 fi
69 # Don't bother rerunning the compile if we were already using -Werror
70 case "$*" in
71 *-Werror*)
72 return 0
73 ;;
74 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000075 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010077 error_exit "configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010081}
82
Peter Maydell9c83ffd2014-02-25 18:27:49 +000083do_cc() {
84 do_compiler "$cc" "$@"
85}
86
87do_cxx() {
88 do_compiler "$cxx" "$@"
89}
90
91update_cxxflags() {
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
95 QEMU_CXXFLAGS=
96 for arg in $QEMU_CFLAGS; do
97 case $arg in
98 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
99 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
100 ;;
101 *)
102 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
103 ;;
104 esac
105 done
106}
107
Juan Quintela52166aa2009-08-03 14:46:03 +0200108compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400109 local_cflags="$1"
110 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200111}
112
113compile_prog() {
114 local_cflags="$1"
115 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100116 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200117}
118
Don Slutz66518bf2014-01-02 21:12:46 -0500119do_libtool() {
120 local mode=$1
121 shift
122 # Run the compiler, capturing its output to the log.
123 echo $libtool $mode --tag=CC $cc "$@" >> config.log
124 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
125 # Test passed. If this is an --enable-werror build, rerun
126 # the test with -Werror and bail out if it fails. This
127 # makes warning-generating-errors in configure test code
128 # obvious to developers.
129 if test "$werror" != "yes"; then
130 return 0
131 fi
132 # Don't bother rerunning the compile if we were already using -Werror
133 case "$*" in
134 *-Werror*)
135 return 0
136 ;;
137 esac
138 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
139 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
140 error_exit "configure test passed without -Werror but failed with -Werror." \
141 "This is probably a bug in the configure script. The failing command" \
142 "will be at the bottom of config.log." \
143 "You can run configure with --disable-werror to bypass this check."
144}
145
146libtool_prog() {
147 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
148 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
149}
150
Paolo Bonzini11568d62010-12-23 11:43:58 +0100151# symbolically link $1 to $2. Portable version of "ln -sf".
152symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100153 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800154 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100155 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100156}
157
Loïc Minier0dba6192010-01-28 21:26:51 +0000158# check whether a command is available to this shell (may be either an
159# executable or a builtin)
160has() {
161 type "$1" >/dev/null 2>&1
162}
163
164# search for an executable in PATH
165path_of() {
166 local_command="$1"
167 local_ifs="$IFS"
168 local_dir=""
169
170 # pathname has a dir component?
171 if [ "${local_command#*/}" != "$local_command" ]; then
172 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
173 echo "$local_command"
174 return 0
175 fi
176 fi
177 if [ -z "$local_command" ]; then
178 return 1
179 fi
180
181 IFS=:
182 for local_dir in $PATH; do
183 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
184 echo "$local_dir/$local_command"
185 IFS="${local_ifs:-$(printf ' \t\n')}"
186 return 0
187 fi
188 done
189 # not found
190 IFS="${local_ifs:-$(printf ' \t\n')}"
191 return 1
192}
193
Lluís Vilanova5b808272014-05-27 15:02:14 +0200194have_backend () {
195 echo "$trace_backends" | grep "$1" >/dev/null
196}
197
bellard7d132992003-03-06 23:23:54 +0000198# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100199source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200200cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300201iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000202interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000203static="no"
bellard7d132992003-03-06 23:23:54 +0000204cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000205audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800206block_drv_rw_whitelist=""
207block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000208host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200209libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200210libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200211audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400212audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200213cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500214libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100215debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100216stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000217
Stefan Weilafb63eb2012-09-26 22:04:38 +0200218# Don't accept a target_list environment variable.
219unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100220
221# Default value for a variable defining feature "foo".
222# * foo="no" feature will only be used if --enable-foo arg is given
223# * foo="" feature will be searched for, and if found, will be used
224# unless --disable-foo is given
225# * foo="yes" this value will only be set by --enable-foo flag.
226# feature will searched for,
227# if not found, configure exits with error
228#
229# Always add --enable-foo and --disable-foo command line args.
230# Distributions want to ensure that several features are compiled in, and it
231# is impossible without a --enable-foo that exits if a feature is not found.
232
233bluez=""
234brlapi=""
235curl=""
236curses=""
237docs=""
238fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100239netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200240pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100241sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000242sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530243virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100244vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100245sparse="no"
246uuid=""
247vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100248vnc_sasl=""
249vnc_jpeg=""
250vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100251xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000252xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000253xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100254linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500255cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100256attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200257libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100258xfs=""
259
Bradd41a75a2011-07-26 23:11:26 -0400260vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000261vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400262kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400263rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100264gprof="no"
265debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100266debug="no"
John Snowb553a042015-11-03 15:43:42 -0500267fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100268strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200269tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100270bigendian="no"
271mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000272gcov="no"
273gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100274EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800275DSOSUF=".so"
276LDFLAGS_SHARED="-shared"
277modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100278prefix="/usr/local"
279mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300280datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300281qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100282bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300283libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400284libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200285includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100286sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300287local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100288confsuffix="/qemu"
289slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100290oss_lib=""
291bsd="no"
292linux="no"
293solaris="no"
294profiler="no"
295cocoa="no"
296softmmu="yes"
297linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100298bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100299aix="no"
300blobs="yes"
301pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200302pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100303zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200304qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200305trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100306trace_file="trace"
307spice=""
308rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200309smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100310libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200311usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100312opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300313zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200314lzo=""
315snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100316bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400317guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400318guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500319guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300320guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400321vss_win32_sdk=""
322win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100323want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100324libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100325libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100326coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200327coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300328seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530329glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530330glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530331glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100332archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600333gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200334gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200335gtk_gl="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100336gnutls=""
337gnutls_hash=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100338nettle=""
339gcrypt=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100340vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200341virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400342tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100343libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400344vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800345numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800346tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200347jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100348
aliguoriac0df512008-12-29 17:14:15 +0000349# parse CC options first
350for opt do
351 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
352 case "$opt" in
353 --cross-prefix=*) cross_prefix="$optarg"
354 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100355 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000356 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400357 --cxx=*) CXX="$optarg"
358 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100359 --source-path=*) source_path="$optarg"
360 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200361 --cpu=*) cpu="$optarg"
362 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100363 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100364 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200365 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100366 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100367 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200368 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100369 --enable-debug-info) debug_info="yes"
370 ;;
371 --disable-debug-info) debug_info="no"
372 ;;
aliguoriac0df512008-12-29 17:14:15 +0000373 esac
374done
aliguoriac0df512008-12-29 17:14:15 +0000375# OS specific
376# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100377# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000378
Peter Maydelle49d0212012-12-07 15:39:13 +0000379# Preferred compiler:
380# ${CC} (if set)
381# ${cross_prefix}gcc (if cross-prefix specified)
382# system compiler
383if test -z "${CC}${cross_prefix}"; then
384 cc="$host_cc"
385else
386 cc="${CC-${cross_prefix}gcc}"
387fi
388
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400389if test -z "${CXX}${cross_prefix}"; then
390 cxx="c++"
391else
392 cxx="${CXX-${cross_prefix}g++}"
393fi
394
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500395ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000396as="${AS-${cross_prefix}as}"
397cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500398objcopy="${OBJCOPY-${cross_prefix}objcopy}"
399ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400400libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200401nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500402strip="${STRIP-${cross_prefix}strip}"
403windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300404pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
405query_pkg_config() {
406 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
407}
408pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500409sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000410sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000411
Peter Maydell45d285a2013-10-21 21:03:06 +0100412# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
413ARFLAGS="${ARFLAGS-rv}"
414
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200415# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000416QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400417QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100418QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200419QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200420QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100421if test "$debug_info" = "yes"; then
422 CFLAGS="-g $CFLAGS"
423 LDFLAGS="-g $LDFLAGS"
424fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200425
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100426# make source path absolute
427source_path=`cd "$source_path"; pwd`
428
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300429# running configure in the source tree?
430# we know that's the case if configure is there.
431if test -f "./configure"; then
432 pwd_is_source_path="y"
433else
434 pwd_is_source_path="n"
435fi
436
aliguoriac0df512008-12-29 17:14:15 +0000437check_define() {
438cat > $TMPC <<EOF
439#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000440#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000441#endif
442int main(void) { return 0; }
443EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200444 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000445}
446
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200447check_include() {
448cat > $TMPC <<EOF
449#include <$1>
450int main(void) { return 0; }
451EOF
452 compile_object
453}
454
John Snow93b25862015-03-25 18:57:37 -0400455write_c_skeleton() {
456 cat > $TMPC <<EOF
457int main(void) { return 0; }
458EOF
459}
460
Peter Maydellbbea4052012-08-14 15:35:34 +0100461if check_define __linux__ ; then
462 targetos="Linux"
463elif check_define _WIN32 ; then
464 targetos='MINGW32'
465elif check_define __OpenBSD__ ; then
466 targetos='OpenBSD'
467elif check_define __sun__ ; then
468 targetos='SunOS'
469elif check_define __HAIKU__ ; then
470 targetos='Haiku'
471else
472 targetos=`uname -s`
473fi
474
475# Some host OSes need non-standard checks for which CPU to use.
476# Note that these checks are broken for cross-compilation: if you're
477# cross-compiling to one of these OSes then you'll need to specify
478# the correct CPU with the --cpu option.
479case $targetos in
480Darwin)
481 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
482 # run 64-bit userspace code.
483 # If the user didn't specify a CPU explicitly and the kernel says this is
484 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
485 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
486 cpu="x86_64"
487 fi
488 ;;
489SunOS)
490 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
491 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
492 cpu="x86_64"
493 fi
494esac
495
Juan Quintela2ff6b912009-08-03 14:45:55 +0200496if test ! -z "$cpu" ; then
497 # command line argument
498 :
499elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000500 cpu="i386"
501elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700502 if check_define __ILP32__ ; then
503 cpu="x32"
504 else
505 cpu="x86_64"
506 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000507elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000508 if check_define __arch64__ ; then
509 cpu="sparc64"
510 else
511 cpu="sparc"
512 fi
malcfdf7ed92009-01-14 18:39:52 +0000513elif check_define _ARCH_PPC ; then
514 if check_define _ARCH_PPC64 ; then
515 cpu="ppc64"
516 else
517 cpu="ppc"
518 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200519elif check_define __mips__ ; then
520 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200521elif check_define __ia64__ ; then
522 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200523elif check_define __s390__ ; then
524 if check_define __s390x__ ; then
525 cpu="s390x"
526 else
527 cpu="s390"
528 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100529elif check_define __arm__ ; then
530 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100531elif check_define __aarch64__ ; then
532 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400533elif check_define __hppa__ ; then
534 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000535else
malcfdf7ed92009-01-14 18:39:52 +0000536 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000537fi
538
Peter Maydell359bc952011-12-24 13:07:25 +0000539ARCH=
540# Normalise host CPU name and set ARCH.
541# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000542case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700543 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200544 cpu="$cpu"
545 ;;
bellard7d132992003-03-06 23:23:54 +0000546 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000547 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000548 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000549 x86_64|amd64)
550 cpu="x86_64"
551 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100552 armv*b|armv*l|arm)
553 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000554 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100555 aarch64)
556 cpu="aarch64"
557 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200558 mips*)
559 cpu="mips"
560 ;;
blueswir131422552007-04-16 18:27:06 +0000561 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000562 cpu="sparc"
563 ;;
bellard7d132992003-03-06 23:23:54 +0000564 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000565 # This will result in either an error or falling back to TCI later
566 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000567 ;;
568esac
Peter Maydell359bc952011-12-24 13:07:25 +0000569if test -z "$ARCH"; then
570 ARCH="$cpu"
571fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200572
bellard7d132992003-03-06 23:23:54 +0000573# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200574
Stacey Sonadfc3e92014-06-08 09:57:22 -0700575# host *BSD for user mode
576HOST_VARIANT_DIR=""
577
bellard7d132992003-03-06 23:23:54 +0000578case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000579CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200580 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200581 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200582 audio_possible_drivers="sdl"
583 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000584;;
bellard67b915a2004-03-31 23:37:16 +0000585MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200586 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200587 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200588 if check_include dsound.h; then
589 audio_drv_list="dsound"
590 else
591 audio_drv_list=""
592 fi
bellard67b915a2004-03-31 23:37:16 +0000593;;
ths5c40d2b2007-06-23 16:03:36 +0000594GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100595 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200596 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200597 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000598;;
bellard7d3505c2004-05-12 19:32:15 +0000599FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200600 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100601 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200603 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100604 # needed for kinfo_getvmmap(3) in libutil.h
605 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100606 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700607 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000608;;
blueswir1c5e97232009-03-07 20:06:23 +0000609DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200610 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100611 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200613 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700614 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000615;;
bellard7d3505c2004-05-12 19:32:15 +0000616NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200617 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100618 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200619 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200620 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200621 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700622 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000623;;
624OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200625 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100626 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400627 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200628 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700629 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000630;;
bellard83fb7ad2004-07-05 21:25:26 +0000631Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200632 bsd="yes"
633 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800634 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200635 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200636 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200637 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200638 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200639 cocoa="yes"
640 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200641 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200643 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100644 # Disable attempts to use ObjectiveC features in os/object.h since they
645 # won't work when we're compiling with gcc as a C compiler.
646 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700647 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000648;;
bellardec530c82006-04-25 22:36:06 +0000649SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200650 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100651 make="${MAKE-gmake}"
652 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000653 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400654 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200655 needs_libsunmath="no"
656 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200657 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
658 if test "$solarisrev" -le 9 ; then
659 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
660 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200661 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
662 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
663 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200664 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100665 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
666 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
667 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
668 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200669 fi
thsef18c882007-09-16 22:12:39 +0000670 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200671 fi
672 if test -f /usr/include/sys/soundcard.h ; then
673 audio_drv_list="oss"
674 fi
675 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000676# needed for CMSG_ macros in sys/socket.h
677 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
678# needed for TIOCWIN* defines in termios.h
679 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200680 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200681 solarisnetlibs="-lsocket -lnsl -lresolv"
682 LIBS="$solarisnetlibs $LIBS"
683 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000684;;
malcb29fe3e2008-11-18 01:42:22 +0000685AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200686 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100687 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000688;;
Andreas Färber179cf402010-09-20 00:50:43 +0200689Haiku)
690 haiku="yes"
691 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
692 LIBS="-lposix_error_mapper -lnetwork $LIBS"
693;;
bellard1d14ffa2005-10-30 18:58:22 +0000694*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200695 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200696 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200697 linux="yes"
698 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200699 kvm="yes"
700 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000701 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000702 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000703;;
bellard7d132992003-03-06 23:23:54 +0000704esac
705
bellard7d3505c2004-05-12 19:32:15 +0000706if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000707 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200708 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000709 fi
bellard7d3505c2004-05-12 19:32:15 +0000710fi
711
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100712: ${make=${MAKE-make}}
713: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100714: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400715: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100716
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100717# Default objcc to clang if available, otherwise use CC
718if has clang; then
719 objcc=clang
720else
721 objcc="$cc"
722fi
723
Juan Quintela3457a3f2009-08-03 14:46:07 +0200724if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200725 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800726 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200727 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100728 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
729 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100730 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400731 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100732 if compile_prog "" "-liberty" ; then
733 LIBS="-liberty $LIBS"
734 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200735 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200736 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300737 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300738 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200739 bindir="\${prefix}"
740 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200741 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200742 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200743 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200744fi
745
Anthony Liguori487fefd2009-06-11 13:28:25 -0500746werror=""
bellard85aa5182007-11-11 20:17:03 +0000747
bellard7d132992003-03-06 23:23:54 +0000748for opt do
pbrooka46e4032006-04-29 23:05:22 +0000749 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000750 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000751 --help|-h) show_help=yes
752 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400753 --version|-V) exec cat $source_path/VERSION
754 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000755 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000756 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000757 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000758 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100759 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000760 ;;
aliguoriac0df512008-12-29 17:14:15 +0000761 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000762 ;;
aliguoriac0df512008-12-29 17:14:15 +0000763 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000764 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000765 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000766 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400767 --cxx=*)
768 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200769 --iasl=*) iasl="$optarg"
770 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100771 --objcc=*) objcc="$optarg"
772 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000773 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000774 ;;
pbrook6a882642006-04-17 13:57:12 +0000775 --install=*) install="$optarg"
776 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000777 --python=*) python="$optarg"
778 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000779 --gcov=*) gcov_tool="$optarg"
780 ;;
Brade2d88302011-09-02 16:53:28 -0400781 --smbd=*) smbd="$optarg"
782 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200783 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000784 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200785 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000786 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100787 --enable-debug-info)
788 ;;
789 --disable-debug-info)
790 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800791 --enable-modules)
792 modules="yes"
793 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000794 --disable-modules)
795 modules="no"
796 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200797 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000798 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000799 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000800 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200801 --enable-trace-backends=*) trace_backends="$optarg"
802 ;;
803 # XXX: backwards compatibility
804 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100805 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100806 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100807 ;;
bellard7d132992003-03-06 23:23:54 +0000808 --enable-gprof) gprof="yes"
809 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000810 --enable-gcov) gcov="yes"
811 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100812 --static)
813 static="yes"
814 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300815 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000816 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200817 --mandir=*) mandir="$optarg"
818 ;;
819 --bindir=*) bindir="$optarg"
820 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300821 --libdir=*) libdir="$optarg"
822 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400823 --libexecdir=*) libexecdir="$optarg"
824 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200825 --includedir=*) includedir="$optarg"
826 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300827 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200828 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300829 --with-confsuffix=*) confsuffix="$optarg"
830 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300831 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200832 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100833 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600834 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300835 --localstatedir=*) local_statedir="$optarg"
836 ;;
837 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400838 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
839 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
840 # These switches are silently ignored, for compatibility with
841 # autoconf-generated configure scripts. This allows QEMU's
842 # configure to be used by RPM and similar macros that set
843 # lots of directory switches by default.
844 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200845 --with-system-pixman) pixman="system"
846 ;;
847 --without-system-pixman) pixman="internal"
848 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100849 --without-pixman) pixman="none"
850 ;;
bellard97a847b2003-08-10 21:36:04 +0000851 --disable-sdl) sdl="no"
852 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200853 --enable-sdl) sdl="yes"
854 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000855 --with-sdlabi=*) sdlabi="$optarg"
856 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200857 --disable-qom-cast-debug) qom_cast_debug="no"
858 ;;
859 --enable-qom-cast-debug) qom_cast_debug="yes"
860 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530861 --disable-virtfs) virtfs="no"
862 ;;
863 --enable-virtfs) virtfs="yes"
864 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100865 --disable-vnc) vnc="no"
866 ;;
867 --enable-vnc) vnc="yes"
868 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000869 --oss-lib=*) oss_lib="$optarg"
870 ;;
malc0c58ac12008-06-25 21:04:05 +0000871 --audio-drv-list=*) audio_drv_list="$optarg"
872 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800873 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
874 ;;
875 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100876 ;;
aurel32f8393942009-04-13 18:45:38 +0000877 --enable-debug-tcg) debug_tcg="yes"
878 ;;
879 --disable-debug-tcg) debug_tcg="no"
880 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100881 --enable-debug)
882 # Enable debugging options that aren't excessively noisy
883 debug_tcg="yes"
884 debug="yes"
885 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500886 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100887 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000888 --enable-sparse) sparse="yes"
889 ;;
890 --disable-sparse) sparse="no"
891 ;;
aliguori1625af82009-04-05 17:41:02 +0000892 --disable-strip) strip_opt="no"
893 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000894 --disable-vnc-sasl) vnc_sasl="no"
895 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200896 --enable-vnc-sasl) vnc_sasl="yes"
897 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200898 --disable-vnc-jpeg) vnc_jpeg="no"
899 ;;
900 --enable-vnc-jpeg) vnc_jpeg="yes"
901 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200902 --disable-vnc-png) vnc_png="no"
903 ;;
904 --enable-vnc-png) vnc_png="yes"
905 ;;
bellard443f1372004-06-04 11:13:20 +0000906 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000907 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200908 --disable-uuid) uuid="no"
909 ;;
910 --enable-uuid) uuid="yes"
911 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000912 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000913 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200914 --enable-vde) vde="yes"
915 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100916 --disable-netmap) netmap="no"
917 ;;
918 --enable-netmap) netmap="yes"
919 ;;
aliguorie37630c2009-04-22 15:19:10 +0000920 --disable-xen) xen="no"
921 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200922 --enable-xen) xen="yes"
923 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000924 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
925 ;;
926 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
927 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000928 --disable-brlapi) brlapi="no"
929 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200930 --enable-brlapi) brlapi="yes"
931 ;;
balrogfb599c92008-09-28 23:49:55 +0000932 --disable-bluez) bluez="no"
933 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200934 --enable-bluez) bluez="yes"
935 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000936 --disable-kvm) kvm="no"
937 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200938 --enable-kvm) kvm="yes"
939 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200940 --disable-tcg-interpreter) tcg_interpreter="no"
941 ;;
942 --enable-tcg-interpreter) tcg_interpreter="yes"
943 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500944 --disable-cap-ng) cap_ng="no"
945 ;;
946 --enable-cap-ng) cap_ng="yes"
947 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100948 --disable-spice) spice="no"
949 ;;
950 --enable-spice) spice="yes"
951 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100952 --disable-libiscsi) libiscsi="no"
953 ;;
954 --enable-libiscsi) libiscsi="yes"
955 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100956 --disable-libnfs) libnfs="no"
957 ;;
958 --enable-libnfs) libnfs="yes"
959 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000960 --enable-profiler) profiler="yes"
961 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400962 --disable-cocoa) cocoa="no"
963 ;;
malcc2de5c92008-06-28 19:13:06 +0000964 --enable-cocoa)
965 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000966 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000967 ;;
pbrookcad25d62006-03-19 16:31:11 +0000968 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000969 ;;
pbrookcad25d62006-03-19 16:31:11 +0000970 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000971 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000972 --disable-user)
973 linux_user="no" ;
974 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000975 ;;
976 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000977 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000978 ;;
ths831b7822007-01-18 20:06:33 +0000979 --enable-linux-user) linux_user="yes"
980 ;;
blueswir184778502008-10-26 20:33:16 +0000981 --disable-bsd-user) bsd_user="no"
982 ;;
983 --enable-bsd-user) bsd_user="yes"
984 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200985 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300986 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200987 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300988 ;;
bellard85aa5182007-11-11 20:17:03 +0000989 --enable-werror) werror="yes"
990 ;;
991 --disable-werror) werror="no"
992 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100993 --enable-stack-protector) stack_protector="yes"
994 ;;
995 --disable-stack-protector) stack_protector="no"
996 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000997 --disable-curses) curses="no"
998 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200999 --enable-curses) curses="yes"
1000 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001001 --disable-curl) curl="no"
1002 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001003 --enable-curl) curl="yes"
1004 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001005 --disable-fdt) fdt="no"
1006 ;;
1007 --enable-fdt) fdt="yes"
1008 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001009 --disable-linux-aio) linux_aio="no"
1010 ;;
1011 --enable-linux-aio) linux_aio="yes"
1012 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001013 --disable-attr) attr="no"
1014 ;;
1015 --enable-attr) attr="yes"
1016 ;;
ths77755342008-11-27 15:45:16 +00001017 --disable-blobs) blobs="no"
1018 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001019 --with-pkgversion=*) pkgversion=" ($optarg)"
1020 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001021 --with-coroutine=*) coroutine="$optarg"
1022 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001023 --disable-coroutine-pool) coroutine_pool="no"
1024 ;;
1025 --enable-coroutine-pool) coroutine_pool="yes"
1026 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001027 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001028 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001029 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001030 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001031 --disable-vhost-net) vhost_net="no"
1032 ;;
1033 --enable-vhost-net) vhost_net="yes"
1034 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001035 --disable-vhost-scsi) vhost_scsi="no"
1036 ;;
1037 --enable-vhost-scsi) vhost_scsi="yes"
1038 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001039 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001040 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001041 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001042 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001043 --disable-rbd) rbd="no"
1044 ;;
1045 --enable-rbd) rbd="yes"
1046 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001047 --disable-xfsctl) xfs="no"
1048 ;;
1049 --enable-xfsctl) xfs="yes"
1050 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001051 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001052 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001053 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001054 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001055 --disable-libusb) libusb="no"
1056 ;;
1057 --enable-libusb) libusb="yes"
1058 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001059 --disable-usb-redir) usb_redir="no"
1060 ;;
1061 --enable-usb-redir) usb_redir="yes"
1062 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001063 --disable-zlib-test) zlib="no"
1064 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001065 --disable-lzo) lzo="no"
1066 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001067 --enable-lzo) lzo="yes"
1068 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001069 --disable-snappy) snappy="no"
1070 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001071 --enable-snappy) snappy="yes"
1072 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001073 --disable-bzip2) bzip2="no"
1074 ;;
1075 --enable-bzip2) bzip2="yes"
1076 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001077 --enable-guest-agent) guest_agent="yes"
1078 ;;
1079 --disable-guest-agent) guest_agent="no"
1080 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001081 --enable-guest-agent-msi) guest_agent_msi="yes"
1082 ;;
1083 --disable-guest-agent-msi) guest_agent_msi="no"
1084 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001085 --with-vss-sdk) vss_win32_sdk=""
1086 ;;
1087 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1088 ;;
1089 --without-vss-sdk) vss_win32_sdk="no"
1090 ;;
1091 --with-win-sdk) win_sdk=""
1092 ;;
1093 --with-win-sdk=*) win_sdk="$optarg"
1094 ;;
1095 --without-win-sdk) win_sdk="no"
1096 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001097 --enable-tools) want_tools="yes"
1098 ;;
1099 --disable-tools) want_tools="no"
1100 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001101 --enable-seccomp) seccomp="yes"
1102 ;;
1103 --disable-seccomp) seccomp="no"
1104 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301105 --disable-glusterfs) glusterfs="no"
1106 ;;
1107 --enable-glusterfs) glusterfs="yes"
1108 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001109 --disable-archipelago) archipelago="no"
1110 ;;
1111 --enable-archipelago) archipelago="yes"
1112 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001113 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1114 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001115 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001116 --disable-gtk) gtk="no"
1117 ;;
1118 --enable-gtk) gtk="yes"
1119 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001120 --disable-gnutls) gnutls="no"
1121 ;;
1122 --enable-gnutls) gnutls="yes"
1123 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001124 --disable-nettle) nettle="no"
1125 ;;
1126 --enable-nettle) nettle="yes"
1127 ;;
1128 --disable-gcrypt) gcrypt="no"
1129 ;;
1130 --enable-gcrypt) gcrypt="yes"
1131 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001132 --enable-rdma) rdma="yes"
1133 ;;
1134 --disable-rdma) rdma="no"
1135 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001136 --with-gtkabi=*) gtkabi="$optarg"
1137 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001138 --disable-vte) vte="no"
1139 ;;
1140 --enable-vte) vte="yes"
1141 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001142 --disable-virglrenderer) virglrenderer="no"
1143 ;;
1144 --enable-virglrenderer) virglrenderer="yes"
1145 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001146 --disable-tpm) tpm="no"
1147 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001148 --enable-tpm) tpm="yes"
1149 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001150 --disable-libssh2) libssh2="no"
1151 ;;
1152 --enable-libssh2) libssh2="yes"
1153 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001154 --enable-vhdx) vhdx="yes"
1155 ;;
1156 --disable-vhdx) vhdx="no"
1157 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001158 --disable-numa) numa="no"
1159 ;;
1160 --enable-numa) numa="yes"
1161 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001162 --disable-tcmalloc) tcmalloc="no"
1163 ;;
1164 --enable-tcmalloc) tcmalloc="yes"
1165 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001166 --disable-jemalloc) jemalloc="no"
1167 ;;
1168 --enable-jemalloc) jemalloc="yes"
1169 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001170 *)
1171 echo "ERROR: unknown option $opt"
1172 echo "Try '$0 --help' for more information"
1173 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001174 ;;
bellard7d132992003-03-06 23:23:54 +00001175 esac
1176done
1177
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001178if ! has $python; then
1179 error_exit "Python not found. Use --python=/path/to/python"
1180fi
1181
1182# Note that if the Python conditional here evaluates True we will exit
1183# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001184if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1185 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001186 "Note that Python 3 or later is not yet supported." \
1187 "Use --python=/path/to/python to specify a supported Python."
1188fi
1189
Markus Armbrusterfec21032015-09-04 21:53:03 +02001190# Suppress writing compiled files
1191python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001192
bellard40293e52008-01-31 11:32:10 +00001193case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001194 ppc)
1195 CPU_CFLAGS="-m32"
1196 LDFLAGS="-m32 $LDFLAGS"
1197 ;;
1198 ppc64)
1199 CPU_CFLAGS="-m64"
1200 LDFLAGS="-m64 $LDFLAGS"
1201 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001202 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001203 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001204 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001205 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001206 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001207 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001208 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001209 ;;
ths76d83bd2007-11-18 21:22:10 +00001210 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001211 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001212 LDFLAGS="-m31 $LDFLAGS"
1213 ;;
1214 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001215 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001216 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001217 ;;
bellard40293e52008-01-31 11:32:10 +00001218 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001219 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001220 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001221 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001222 ;;
1223 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001224 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001225 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001226 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001227 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001228 x32)
1229 CPU_CFLAGS="-mx32"
1230 LDFLAGS="-mx32 $LDFLAGS"
1231 cc_i386='$(CC) -m32'
1232 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001233 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001234esac
1235
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001236QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1237EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1238
Peter Maydell60e0df22011-05-03 14:50:13 +01001239default_target_list=""
1240
Peter Maydell6e92f822013-05-20 16:16:15 +01001241mak_wilds=""
1242
1243if [ "$softmmu" = "yes" ]; then
1244 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001245fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001246if [ "$linux_user" = "yes" ]; then
1247 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001248fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001249if [ "$bsd_user" = "yes" ]; then
1250 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001251fi
1252
Peter Maydell6e92f822013-05-20 16:16:15 +01001253for config in $mak_wilds; do
1254 default_target_list="${default_target_list} $(basename "$config" .mak)"
1255done
1256
pbrookaf5db582006-04-08 14:26:41 +00001257if test x"$show_help" = x"yes" ; then
1258cat << EOF
1259
1260Usage: configure [options]
1261Options: [defaults in brackets after descriptions]
1262
Stefan Weil08fb77e2013-12-18 22:09:39 +01001263Standard options:
1264 --help print this message
1265 --prefix=PREFIX install in PREFIX [$prefix]
1266 --interp-prefix=PREFIX where to find shared libraries, etc.
1267 use %M for cpu name [$interp_prefix]
1268 --target-list=LIST set target list (default: build everything)
1269$(echo Available targets: $default_target_list | \
1270 fold -s -w 53 | sed -e 's/^/ /')
1271
1272Advanced options (experts only):
1273 --source-path=PATH path of source code [$source_path]
1274 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1275 --cc=CC use C compiler CC [$cc]
1276 --iasl=IASL use ACPI compiler IASL [$iasl]
1277 --host-cc=CC use C compiler CC [$host_cc] for code run at
1278 build time
1279 --cxx=CXX use C++ compiler CXX [$cxx]
1280 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1281 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1282 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1283 --make=MAKE use specified make [$make]
1284 --install=INSTALL use specified install [$install]
1285 --python=PYTHON use specified python [$python]
1286 --smbd=SMBD use specified smbd [$smbd]
1287 --static enable static build [$static]
1288 --mandir=PATH install man pages in PATH
1289 --datadir=PATH install firmware in PATH$confsuffix
1290 --docdir=PATH install documentation in PATH$confsuffix
1291 --bindir=PATH install binaries in PATH
1292 --libdir=PATH install libraries in PATH
1293 --sysconfdir=PATH install config in PATH$confsuffix
1294 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001295 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001296 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001297 --disable-strip disable stripping binaries
1298 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001299 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001300 --audio-drv-list=LIST set audio drivers list:
1301 Available drivers: $audio_possible_drivers
1302 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1303 --block-drv-rw-whitelist=L
1304 set block driver read-write whitelist
1305 (affects only QEMU, not qemu-img)
1306 --block-drv-ro-whitelist=L
1307 set block driver read-only whitelist
1308 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001309 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001310 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1311 --with-trace-file=NAME Full PATH,NAME of file to store traces
1312 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001313 --disable-slirp disable SLIRP userspace network connectivity
1314 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1315 --oss-lib path to OSS library
1316 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001317 --with-coroutine=BACKEND coroutine backend. Supported options:
1318 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001319 --enable-gcov enable test coverage analysis with gcov
1320 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001321 --disable-blobs disable installing provided firmware blobs
1322 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1323 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1324
1325Optional features, enabled with --enable-FEATURE and
1326disabled with --disable-FEATURE, default is enabled if available:
1327
1328 system all system emulation targets
1329 user supported user emulation targets
1330 linux-user all linux usermode emulation targets
1331 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001332 docs build documentation
1333 guest-agent build the QEMU Guest Agent
1334 guest-agent-msi build guest agent Windows MSI installation package
1335 pie Position Independent Executables
1336 modules modules support
1337 debug-tcg TCG debugging (default is disabled)
1338 debug-info debugging information
1339 sparse sparse checker
1340
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001341 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001342 nettle nettle cryptography support
1343 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001344 sdl SDL UI
1345 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1346 gtk gtk UI
1347 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1348 vte vte support for the gtk UI
1349 curses curses UI
1350 vnc VNC UI support
1351 vnc-tls TLS encryption for VNC server
1352 vnc-sasl SASL encryption for VNC server
1353 vnc-jpeg JPEG lossy compression for VNC server
1354 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001355 cocoa Cocoa UI (Mac OS X only)
1356 virtfs VirtFS
1357 xen xen backend driver support
1358 xen-pci-passthrough
1359 brlapi BrlAPI (Braile)
1360 curl curl connectivity
1361 fdt fdt device tree
1362 bluez bluez stack connectivity
1363 kvm KVM acceleration support
1364 rdma RDMA-based migration support
1365 uuid uuid support
1366 vde support for vde network
1367 netmap support for netmap network
1368 linux-aio Linux AIO support
1369 cap-ng libcap-ng support
1370 attr attr and xattr support
1371 vhost-net vhost-net acceleration support
1372 spice spice
1373 rbd rados block device (rbd)
1374 libiscsi iscsi support
1375 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001376 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001377 libusb libusb (for usb passthrough)
1378 usb-redir usb network redirection support
1379 lzo support of lzo compression library
1380 snappy support of snappy compression library
1381 bzip2 support of bzip2 compression library
1382 (for reading bzip2-compressed dmg images)
1383 seccomp seccomp support
1384 coroutine-pool coroutine freelist (better performance)
1385 glusterfs GlusterFS backend
1386 archipelago Archipelago backend
1387 tpm TPM support
1388 libssh2 ssh block device support
1389 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001390 numa libnuma support
1391 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001392 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001393
1394NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001395EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001396exit 0
pbrookaf5db582006-04-08 14:26:41 +00001397fi
1398
Peter Maydell359bc952011-12-24 13:07:25 +00001399# Now we have handled --enable-tcg-interpreter and know we're not just
1400# printing the help message, bail out if the host CPU isn't supported.
1401if test "$ARCH" = "unknown"; then
1402 if test "$tcg_interpreter" = "yes" ; then
1403 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1404 ARCH=tci
1405 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001406 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001407 fi
1408fi
1409
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001410# Consult white-list to determine whether to enable werror
1411# by default. Only enable by default for git builds
1412z_version=`cut -f3 -d. $source_path/VERSION`
1413
1414if test -z "$werror" ; then
1415 if test -d "$source_path/.git" -a \
1416 "$linux" = "yes" ; then
1417 werror="yes"
1418 else
1419 werror="no"
1420 fi
1421fi
1422
Paolo Bonzini8d050952010-12-23 11:43:52 +01001423# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001424write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001425if compile_object ; then
1426 : C compiler works ok
1427else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001428 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001429fi
1430
Peter Maydell98b21dc2014-02-20 15:10:16 +00001431# Check that the C++ compiler exists and works with the C compiler
1432if has $cxx; then
1433 cat > $TMPC <<EOF
1434int c_function(void);
1435int main(void) { return c_function(); }
1436EOF
1437
1438 compile_object
1439
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001440 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001441extern "C" {
1442 int c_function(void);
1443}
1444int c_function(void) { return 42; }
1445EOF
1446
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001447 update_cxxflags
1448
1449 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001450 # C++ compiler $cxx works ok with C compiler $cc
1451 :
1452 else
1453 echo "C++ compiler $cxx does not work with C compiler $cc"
1454 echo "Disabling C++ specific optional code"
1455 cxx=
1456 fi
1457else
1458 echo "No C++ compiler available; disabling C++ specific optional code"
1459 cxx=
1460fi
1461
Paolo Bonzini8d050952010-12-23 11:43:52 +01001462gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1463gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1464gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001465gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001466gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001467gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001468# Note that we do not add -Werror to gcc_flags here, because that would
1469# enable it for all configure tests. If a configure test failed due
1470# to -Werror this would just silently disable some features,
1471# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001472
1473cc_has_warning_flag() {
1474 write_c_skeleton;
1475
Peter Maydella1d29d62012-10-27 22:19:07 +01001476 # Use the positive sense of the flag when testing for -Wno-wombat
1477 # support (gcc will happily accept the -Wno- form of unknown
1478 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001479 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1480 compile_prog "-Werror $optflag" ""
1481}
1482
1483for flag in $gcc_flags; do
1484 if cc_has_warning_flag $flag ; then
1485 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001486 fi
1487done
1488
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001489if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001490 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001491 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001492 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001493 # We need to check both a compile and a link, since some compiler
1494 # setups fail only on a .c->.o compile and some only at link time
1495 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1496 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001497 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1498 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001499 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001500 break
1501 fi
1502 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001503 if test "$stack_protector" = yes; then
1504 if test $sp_on = 0; then
1505 error_exit "Stack protector not supported"
1506 fi
1507 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001508fi
1509
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001510# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1511# large functions that use global variables. The bug is in all releases of
1512# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1513# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1514cat > $TMPC << EOF
1515#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1516int main(void) { return 0; }
1517#else
1518#error No bug in this compiler.
1519#endif
1520EOF
1521if compile_prog "-Werror -fno-gcse" "" ; then
1522 TRANSLATE_OPT_CFLAGS=-fno-gcse
1523fi
1524
Avi Kivity40d64442011-11-15 20:12:17 +02001525if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001526 if test "$modules" = "yes" ; then
1527 error_exit "static and modules are mutually incompatible"
1528 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001529 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001530 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001531 else
1532 pie="no"
1533 fi
1534fi
1535
Emilio G. Cota768b7852015-04-29 13:09:02 +02001536# Unconditional check for compiler __thread support
1537 cat > $TMPC << EOF
1538static __thread int tls_var;
1539int main(void) { return tls_var; }
1540EOF
1541
1542if ! compile_prog "-Werror" "" ; then
1543 error_exit "Your compiler does not support the __thread specifier for " \
1544 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1545fi
1546
Avi Kivity40d64442011-11-15 20:12:17 +02001547if test "$pie" = ""; then
1548 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001549 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001550 ;;
1551 *)
1552 pie="no"
1553 ;;
1554 esac
1555fi
1556
1557if test "$pie" != "no" ; then
1558 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001559
1560#ifdef __linux__
1561# define THREAD __thread
1562#else
1563# define THREAD
1564#endif
1565
1566static THREAD int tls_var;
1567
1568int main(void) { return tls_var; }
1569
Avi Kivity40d64442011-11-15 20:12:17 +02001570EOF
1571 if compile_prog "-fPIE -DPIE" "-pie"; then
1572 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1573 LDFLAGS="-pie $LDFLAGS"
1574 pie="yes"
1575 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1576 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1577 fi
1578 else
1579 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001580 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001581 else
1582 echo "Disabling PIE due to missing toolchain support"
1583 pie="no"
1584 fi
1585 fi
Brad46eef332013-12-10 19:49:08 -05001586
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001587 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001588 CFLAGS_NOPIE="-fno-pie"
1589 LDFLAGS_NOPIE="-nopie"
1590 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001591fi
1592
Don Slutz66518bf2014-01-02 21:12:46 -05001593# check for broken gcc and libtool in RHEL5
1594if test -n "$libtool" -a "$pie" != "no" ; then
1595 cat > $TMPC <<EOF
1596
1597void *f(unsigned char *buf, int len);
1598void *g(unsigned char *buf, int len);
1599
1600void *
1601f(unsigned char *buf, int len)
1602{
1603 return (void*)0L;
1604}
1605
1606void *
1607g(unsigned char *buf, int len)
1608{
1609 return f(buf, len);
1610}
1611
1612EOF
1613 if ! libtool_prog; then
1614 echo "Disabling libtool due to broken toolchain support"
1615 libtool=
1616 fi
1617fi
1618
Paolo Bonzini09dada42013-04-17 16:26:47 +02001619##########################################
1620# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1621# use i686 as default anyway, but for those that don't, an explicit
1622# specification is necessary
1623
1624if test "$cpu" = "i386"; then
1625 cat > $TMPC << EOF
1626static int sfaa(int *ptr)
1627{
1628 return __sync_fetch_and_and(ptr, 0);
1629}
1630
1631int main(void)
1632{
1633 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001634 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001635 sfaa(&val);
1636 return val;
1637}
1638EOF
1639 if ! compile_prog "" "" ; then
1640 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1641 fi
1642fi
1643
1644#########################################
bellardec530c82006-04-25 22:36:06 +00001645# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001646
bellardec530c82006-04-25 22:36:06 +00001647if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001648 if has $install; then
1649 :
1650 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001651 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1652 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1653 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001654 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001655 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001656 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1657 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1658 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001659 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001660 if has ar; then
1661 :
1662 else
bellardec530c82006-04-25 22:36:06 +00001663 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001664 error_exit "No path includes ar" \
1665 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001666 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001667 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001668 fi
ths5fafdf22007-09-16 21:08:06 +00001669fi
bellardec530c82006-04-25 22:36:06 +00001670
Stefan Weilafb63eb2012-09-26 22:04:38 +02001671if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001672 target_list="$default_target_list"
1673else
1674 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001675fi
Peter Maydell25b48332013-05-20 16:16:16 +01001676
1677# Check that we recognised the target name; this allows a more
1678# friendly error message than if we let it fall through.
1679for target in $target_list; do
1680 case " $default_target_list " in
1681 *" $target "*)
1682 ;;
1683 *)
1684 error_exit "Unknown target name '$target'"
1685 ;;
1686 esac
1687done
1688
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001689# see if system emulation was really requested
1690case " $target_list " in
1691 *"-softmmu "*) softmmu=yes
1692 ;;
1693 *) softmmu=no
1694 ;;
1695esac
bellard5327cf42005-01-10 23:18:50 +00001696
Juan Quintela249247c2009-08-12 18:20:25 +02001697feature_not_found() {
1698 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001699 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001700
Peter Maydell76ad07a2013-04-08 12:11:26 +01001701 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001702 "configure was not able to find it." \
1703 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001704}
1705
bellard7d132992003-03-06 23:23:54 +00001706# ---
1707# big/little endian test
1708cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001709short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1710short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1711extern int foo(short *, short *);
1712int main(int argc, char *argv[]) {
1713 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001714}
1715EOF
1716
Mike Frysinger61cc9192013-06-30 23:30:18 -04001717if compile_object ; then
1718 if grep -q BiGeNdIaN $TMPO ; then
1719 bigendian="yes"
1720 elif grep -q LiTtLeEnDiAn $TMPO ; then
1721 bigendian="no"
1722 else
1723 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001724 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001725else
1726 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001727fi
1728
Juan Quintelab0a47e72009-08-12 18:29:49 +02001729##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001730# cocoa implies not SDL or GTK
1731# (the cocoa UI code currently assumes it is always the active UI
1732# and doesn't interact well with other UI frontend code)
1733if test "$cocoa" = "yes"; then
1734 if test "$sdl" = "yes"; then
1735 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1736 fi
1737 if test "$gtk" = "yes"; then
1738 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1739 fi
1740 gtk=no
1741 sdl=no
1742fi
1743
1744##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001745# L2TPV3 probe
1746
1747cat > $TMPC <<EOF
1748#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001749#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001750int main(void) { return sizeof(struct mmsghdr); }
1751EOF
1752if compile_prog "" "" ; then
1753 l2tpv3=yes
1754else
1755 l2tpv3=no
1756fi
1757
1758##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001759# MinGW / Mingw-w64 localtime_r/gmtime_r check
1760
1761if test "$mingw32" = "yes"; then
1762 # Some versions of MinGW / Mingw-w64 lack localtime_r
1763 # and gmtime_r entirely.
1764 #
1765 # Some versions of Mingw-w64 define a macro for
1766 # localtime_r/gmtime_r.
1767 #
1768 # Some versions of Mingw-w64 will define functions
1769 # for localtime_r/gmtime_r, but only if you have
1770 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1771 # though, unistd.h and pthread.h both define
1772 # that for you.
1773 #
1774 # So this #undef localtime_r and #include <unistd.h>
1775 # are not in fact redundant.
1776cat > $TMPC << EOF
1777#include <unistd.h>
1778#include <time.h>
1779#undef localtime_r
1780int main(void) { localtime_r(NULL, NULL); return 0; }
1781EOF
1782 if compile_prog "" "" ; then
1783 localtime_r="yes"
1784 else
1785 localtime_r="no"
1786 fi
1787fi
1788
1789##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001790# pkg-config probe
1791
1792if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001793 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001794fi
1795
1796##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001797# NPTL probe
1798
Peter Maydell24cb36a2013-07-16 18:45:00 +01001799if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001800 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001801#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001802#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001803int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001804#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1805#error bork
1806#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001807 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001808}
1809EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001810 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001811 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001812 fi
pbrookbd0c5662008-05-29 14:34:11 +00001813fi
1814
bellard11d9f692004-04-02 20:55:59 +00001815##########################################
balrogac629222008-10-11 09:56:04 +00001816# zlib check
1817
Alon Levy1ece9902011-07-26 12:30:40 +03001818if test "$zlib" != "no" ; then
1819 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001820#include <zlib.h>
1821int main(void) { zlibVersion(); return 0; }
1822EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001823 if compile_prog "" "-lz" ; then
1824 :
1825 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001826 error_exit "zlib check failed" \
1827 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001828 fi
balrogac629222008-10-11 09:56:04 +00001829fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001830LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001831
1832##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001833# lzo check
1834
1835if test "$lzo" != "no" ; then
1836 cat > $TMPC << EOF
1837#include <lzo/lzo1x.h>
1838int main(void) { lzo_version(); return 0; }
1839EOF
1840 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001841 libs_softmmu="$libs_softmmu -llzo2"
1842 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001843 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001844 if test "$lzo" = "yes"; then
1845 feature_not_found "liblzo2" "Install liblzo2 devel"
1846 fi
1847 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001848 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001849fi
1850
1851##########################################
1852# snappy check
1853
1854if test "$snappy" != "no" ; then
1855 cat > $TMPC << EOF
1856#include <snappy-c.h>
1857int main(void) { snappy_max_compressed_length(4096); return 0; }
1858EOF
1859 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001860 libs_softmmu="$libs_softmmu -lsnappy"
1861 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001862 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001863 if test "$snappy" = "yes"; then
1864 feature_not_found "libsnappy" "Install libsnappy devel"
1865 fi
1866 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001867 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001868fi
1869
1870##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001871# bzip2 check
1872
1873if test "$bzip2" != "no" ; then
1874 cat > $TMPC << EOF
1875#include <bzlib.h>
1876int main(void) { BZ2_bzlibVersion(); return 0; }
1877EOF
1878 if compile_prog "" "-lbz2" ; then
1879 bzip2="yes"
1880 else
1881 if test "$bzip2" = "yes"; then
1882 feature_not_found "libbzip2" "Install libbzip2 devel"
1883 fi
1884 bzip2="no"
1885 fi
1886fi
1887
1888##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001889# libseccomp check
1890
1891if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001892 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1893 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001894 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001895 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001896 seccomp="yes"
1897 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001898 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001899 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001900 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001901 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001902 fi
1903fi
1904##########################################
aliguorie37630c2009-04-22 15:19:10 +00001905# xen probe
1906
Juan Quintelafc321b42009-08-12 18:29:55 +02001907if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001908 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001909
Stefan Weil50ced5b2011-12-17 09:27:39 +01001910 # First we test whether Xen headers and libraries are available.
1911 # If no, we are done and there is no Xen support.
1912 # If yes, more tests are run to detect the Xen version.
1913
1914 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001915 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001916#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001917int main(void) {
1918 return 0;
1919}
1920EOF
1921 if ! compile_prog "" "$xen_libs" ; then
1922 # Xen not found
1923 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001924 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001925 fi
1926 xen=no
1927
1928 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001929 elif
1930 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001931#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001932#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001933#include <stdint.h>
1934#include <xen/hvm/hvm_info_table.h>
1935#if !defined(HVM_MAX_VCPUS)
1936# error HVM_MAX_VCPUS not defined
1937#endif
1938int main(void) {
1939 xc_interface *xc;
1940 xs_daemon_open();
1941 xc = xc_interface_open(0, 0, 0);
1942 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1943 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001944 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001945 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001946 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04001947 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001948 return 0;
1949}
1950EOF
1951 compile_prog "" "$xen_libs"
1952 then
1953 xen_ctrl_version=460
1954 xen=yes
1955
1956 # Xen 4.5
1957 elif
1958 cat > $TMPC <<EOF &&
1959#include <xenctrl.h>
1960#include <xenstore.h>
1961#include <stdint.h>
1962#include <xen/hvm/hvm_info_table.h>
1963#if !defined(HVM_MAX_VCPUS)
1964# error HVM_MAX_VCPUS not defined
1965#endif
1966int main(void) {
1967 xc_interface *xc;
1968 xs_daemon_open();
1969 xc = xc_interface_open(0, 0, 0);
1970 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1971 xc_gnttab_open(NULL, 0);
1972 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1973 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001974 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1975 return 0;
1976}
1977EOF
1978 compile_prog "" "$xen_libs"
1979 then
1980 xen_ctrl_version=450
1981 xen=yes
1982
1983 elif
1984 cat > $TMPC <<EOF &&
1985#include <xenctrl.h>
1986#include <xenstore.h>
1987#include <stdint.h>
1988#include <xen/hvm/hvm_info_table.h>
1989#if !defined(HVM_MAX_VCPUS)
1990# error HVM_MAX_VCPUS not defined
1991#endif
1992int main(void) {
1993 xc_interface *xc;
1994 xs_daemon_open();
1995 xc = xc_interface_open(0, 0, 0);
1996 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1997 xc_gnttab_open(NULL, 0);
1998 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1999 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002000 return 0;
2001}
2002EOF
2003 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002004 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002005 xen_ctrl_version=420
2006 xen=yes
2007
Peter Maydell69deef02012-08-02 18:30:26 +01002008 elif
2009 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00002010#include <xenctrl.h>
2011#include <xs.h>
2012#include <stdint.h>
2013#include <xen/hvm/hvm_info_table.h>
2014#if !defined(HVM_MAX_VCPUS)
2015# error HVM_MAX_VCPUS not defined
2016#endif
2017int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00002018 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01002019 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002020 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2021 xc_gnttab_open(NULL, 0);
2022 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002023 return 0;
2024}
aliguorie37630c2009-04-22 15:19:10 +00002025EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01002026 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002027 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002028 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02002029 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002030
2031 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01002032 elif
2033 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002034#include <xenctrl.h>
2035#include <xs.h>
2036#include <stdint.h>
2037#include <xen/hvm/hvm_info_table.h>
2038#if !defined(HVM_MAX_VCPUS)
2039# error HVM_MAX_VCPUS not defined
2040#endif
2041int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01002042 struct xen_add_to_physmap xatp = {
2043 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2044 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002045 xs_daemon_open();
2046 xc_interface_open();
2047 xc_gnttab_open();
2048 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002049 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002050 return 0;
2051}
2052EOF
2053 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002054 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002055 xen_ctrl_version=400
2056 xen=yes
2057
Anthony PERARDb87de242011-05-24 14:34:20 +01002058 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002059 elif
2060 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002061#include <xenctrl.h>
2062#include <xs.h>
2063int main(void) {
2064 struct xen_add_to_physmap xatp = {
2065 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2066 };
2067 xs_daemon_open();
2068 xc_interface_open();
2069 xc_gnttab_open();
2070 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2071 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2072 return 0;
2073}
2074EOF
2075 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002076 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002077 xen_ctrl_version=340
2078 xen=yes
2079
2080 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002081 elif
2082 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002083#include <xenctrl.h>
2084#include <xs.h>
2085int main(void) {
2086 xs_daemon_open();
2087 xc_interface_open();
2088 xc_gnttab_open();
2089 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2090 return 0;
2091}
2092EOF
2093 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002094 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002095 xen_ctrl_version=330
2096 xen=yes
2097
Stefan Weil50ced5b2011-12-17 09:27:39 +01002098 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002099 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002100 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002101 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002102 fi
2103 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002104 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002105
2106 if test "$xen" = yes; then
2107 libs_softmmu="$xen_libs $libs_softmmu"
2108 fi
aliguorie37630c2009-04-22 15:19:10 +00002109fi
2110
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002111if test "$xen_pci_passthrough" != "no"; then
2112 if test "$xen" = "yes" && test "$linux" = "yes" &&
2113 test "$xen_ctrl_version" -ge 340; then
2114 xen_pci_passthrough=yes
2115 else
2116 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002117 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002118 error_exit "User requested feature Xen PCI Passthrough" \
2119 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002120 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002121 error_exit "User requested feature Xen PCI Passthrough" \
2122 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002123 fi
2124 xen_pci_passthrough=no
2125 fi
2126fi
2127
aliguorie37630c2009-04-22 15:19:10 +00002128##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002129# libtool probe
2130
Brad3f534582011-08-13 20:30:14 -04002131if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002132 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002133fi
2134
Peter Maydell8e515b12013-05-04 21:57:51 +01002135# MacOSX ships with a libtool which isn't the GNU one; weed this
2136# out by checking whether libtool supports the --version switch
2137if test -n "$libtool"; then
2138 if ! "$libtool" --version >/dev/null 2>&1; then
2139 libtool=
2140 fi
2141fi
2142
Alon Levy44dc0ca2011-05-15 11:51:28 +03002143##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002144# Sparse probe
2145if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002146 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002147 sparse=yes
2148 else
2149 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002150 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002151 fi
2152 sparse=no
2153 fi
2154fi
2155
2156##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002157# X11 probe
2158x11_cflags=
2159x11_libs=-lX11
2160if $pkg_config --exists "x11"; then
2161 x11_cflags=`$pkg_config --cflags x11`
2162 x11_libs=`$pkg_config --libs x11`
2163fi
2164
2165##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002166# GTK probe
2167
Stefan Weil9e04c682014-05-17 16:29:18 +02002168if test "$gtkabi" = ""; then
2169 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2170 # Use 3.0 as a fallback if that is available.
2171 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2172 gtkabi=2.0
2173 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2174 gtkabi=3.0
2175 else
2176 gtkabi=2.0
2177 fi
2178fi
2179
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002180if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002181 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002182 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002183 if test "$gtkabi" = "3.0" ; then
2184 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002185 else
2186 gtkversion="2.18.0"
2187 fi
2188 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2189 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2190 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002191 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002192 gtk_cflags="$gtk_cflags $x11_cflags"
2193 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002194 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002195 libs_softmmu="$gtk_libs $libs_softmmu"
2196 gtk="yes"
2197 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002198 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002199 else
2200 gtk="no"
2201 fi
2202fi
2203
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002204
2205##########################################
2206# GNUTLS probe
2207
Peter Maydell37371292015-07-24 18:28:08 +01002208gnutls_works() {
2209 # Unfortunately some distros have bad pkg-config information for gnutls
2210 # such that it claims to exist but you get a compiler error if you try
2211 # to use the options returned by --libs. Specifically, Ubuntu for --static
2212 # builds doesn't work:
2213 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2214 #
2215 # So sanity check the cflags/libs before assuming gnutls can be used.
2216 if ! $pkg_config --exists "gnutls"; then
2217 return 1
2218 fi
2219
2220 write_c_skeleton
2221 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2222}
2223
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002224gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002225gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002226if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002227 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002228 gnutls_cflags=`$pkg_config --cflags gnutls`
2229 gnutls_libs=`$pkg_config --libs gnutls`
2230 libs_softmmu="$gnutls_libs $libs_softmmu"
2231 libs_tools="$gnutls_libs $libs_tools"
2232 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2233 gnutls="yes"
2234
2235 # gnutls_hash_init requires >= 2.9.10
2236 if $pkg_config --exists "gnutls >= 2.9.10"; then
2237 gnutls_hash="yes"
2238 else
2239 gnutls_hash="no"
2240 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002241
2242 if $pkg_config --exists 'gnutls >= 3.0'; then
2243 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002244 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002245 elif $pkg_config --exists 'gnutls >= 2.12'; then
2246 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002247 *gcrypt*)
2248 gnutls_gcrypt=yes
2249 gnutls_nettle=no
2250 ;;
2251 *nettle*)
2252 gnutls_gcrypt=no
2253 gnutls_nettle=yes
2254 ;;
2255 *)
2256 gnutls_gcrypt=yes
2257 gnutls_nettle=no
2258 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002259 esac
2260 else
2261 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002262 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002263 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002264 elif test "$gnutls" = "yes"; then
2265 feature_not_found "gnutls" "Install gnutls devel"
2266 else
2267 gnutls="no"
2268 gnutls_hash="no"
2269 fi
2270else
2271 gnutls_hash="no"
2272fi
2273
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002274
2275# If user didn't give a --disable/enable-gcrypt flag,
2276# then mark as disabled if user requested nettle
2277# explicitly, or if gnutls links to nettle
2278if test -z "$gcrypt"
2279then
2280 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2281 then
2282 gcrypt="no"
2283 fi
2284fi
2285
2286# If user didn't give a --disable/enable-nettle flag,
2287# then mark as disabled if user requested gcrypt
2288# explicitly, or if gnutls links to gcrypt
2289if test -z "$nettle"
2290then
2291 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2292 then
2293 nettle="no"
2294 fi
2295fi
2296
2297has_libgcrypt_config() {
2298 if ! has "libgcrypt-config"
2299 then
2300 return 1
2301 fi
2302
2303 if test -n "$cross_prefix"
2304 then
2305 host=`libgcrypt-config --host`
2306 if test "$host-" != $cross_prefix
2307 then
2308 return 1
2309 fi
2310 fi
2311
2312 return 0
2313}
2314
2315if test "$gcrypt" != "no"; then
2316 if has_libgcrypt_config; then
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002317 gcrypt_cflags=`libgcrypt-config --cflags`
2318 gcrypt_libs=`libgcrypt-config --libs`
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002319 # Debian has remove -lgpg-error from libgcrypt-config
2320 # as it "spreads unnecessary dependencies" which in
2321 # turn breaks static builds...
2322 if test "$static" = "yes"
2323 then
2324 gcrypt_libs="$gcrypt_libs -lgpg-error"
2325 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002326 libs_softmmu="$gcrypt_libs $libs_softmmu"
2327 libs_tools="$gcrypt_libs $libs_tools"
2328 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002329 gcrypt="yes"
2330 if test -z "$nettle"; then
2331 nettle="no"
2332 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002333 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002334 if test "$gcrypt" = "yes"; then
2335 feature_not_found "gcrypt" "Install gcrypt devel"
2336 else
2337 gcrypt="no"
2338 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002339 fi
2340fi
2341
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002342
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002343if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002344 if $pkg_config --exists "nettle"; then
2345 nettle_cflags=`$pkg_config --cflags nettle`
2346 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002347 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002348 libs_softmmu="$nettle_libs $libs_softmmu"
2349 libs_tools="$nettle_libs $libs_tools"
2350 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002351 nettle="yes"
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002352 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002353 if test "$nettle" = "yes"; then
2354 feature_not_found "nettle" "Install nettle devel"
2355 else
2356 nettle="no"
2357 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002358 fi
2359fi
2360
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002361if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2362then
2363 error_exit "Only one of gcrypt & nettle can be enabled"
2364fi
2365
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002366##########################################
2367# libtasn1 - only for the TLS creds/session test suite
2368
2369tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002370tasn1_cflags=""
2371tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002372if $pkg_config --exists "libtasn1"; then
2373 tasn1_cflags=`$pkg_config --cflags libtasn1`
2374 tasn1_libs=`$pkg_config --libs libtasn1`
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002375else
2376 tasn1=no
2377fi
2378
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002379
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002380##########################################
2381# VTE probe
2382
2383if test "$vte" != "no"; then
2384 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002385 vtepackage="vte-2.90"
2386 vteversion="0.32.0"
2387 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002388 vtepackage="vte"
2389 vteversion="0.24.0"
2390 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002391 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2392 vte_cflags=`$pkg_config --cflags $vtepackage`
2393 vte_libs=`$pkg_config --libs $vtepackage`
2394 libs_softmmu="$vte_libs $libs_softmmu"
2395 vte="yes"
2396 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002397 if test "$gtkabi" = "3.0"; then
2398 feature_not_found "vte" "Install libvte-2.90 devel"
2399 else
2400 feature_not_found "vte" "Install libvte devel"
2401 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002402 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002403 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002404 fi
2405fi
2406
2407##########################################
bellard11d9f692004-04-02 20:55:59 +00002408# SDL probe
2409
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002410# Look for sdl configuration program (pkg-config or sdl-config). Try
2411# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002412
2413if test $sdlabi = "2.0"; then
2414 sdl_config=$sdl2_config
2415 sdlname=sdl2
2416 sdlconfigname=sdl2_config
2417else
2418 sdlname=sdl
2419 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002420fi
2421
Dave Airlie47c03742013-12-10 14:05:51 +10002422if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2423 sdl_config=$sdlconfigname
2424fi
2425
2426if $pkg_config $sdlname --exists; then
2427 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002428 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002429elif has ${sdl_config}; then
2430 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002431 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002432else
2433 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002434 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002435 fi
2436 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002437fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002438if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002439 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2440fi
bellard11d9f692004-04-02 20:55:59 +00002441
Paolo Bonzini9316f802010-01-13 09:52:55 +01002442sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002443if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002444 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002445#include <SDL.h>
2446#undef main /* We don't want SDL to override our main() */
2447int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2448EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002449 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002450 if test "$static" = "yes" ; then
2451 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2452 else
2453 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2454 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002455 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002456 if test "$_sdlversion" -lt 121 ; then
2457 sdl_too_old=yes
2458 else
Peter Maydella30878e2015-08-14 16:10:52 +01002459 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002460 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002461
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002462 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002463 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002464 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002465 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2466 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002467 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002468 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002469 :
2470 else
2471 sdl=no
2472 fi
2473 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002474 else # sdl not found
2475 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002476 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002477 fi
2478 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002479 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002480fi
bellard11d9f692004-04-02 20:55:59 +00002481
aliguori5368a422009-03-03 17:37:21 +00002482if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002483 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002484#include <SDL.h>
2485#if defined(SDL_VIDEO_DRIVER_X11)
2486#include <X11/XKBlib.h>
2487#else
2488#error No x11 support
2489#endif
2490int main(void) { return 0; }
2491EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002492 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2493 sdl_cflags="$sdl_cflags $x11_cflags"
2494 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002495 fi
Juan Quintela07056672009-08-03 14:46:27 +02002496 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002497fi
2498
ths8f28f3f2007-01-05 21:25:54 +00002499##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002500# RDMA needs OpenFabrics libraries
2501if test "$rdma" != "no" ; then
2502 cat > $TMPC <<EOF
2503#include <rdma/rdma_cma.h>
2504int main(void) { return 0; }
2505EOF
2506 rdma_libs="-lrdmacm -libverbs"
2507 if compile_prog "" "$rdma_libs" ; then
2508 rdma="yes"
2509 libs_softmmu="$libs_softmmu $rdma_libs"
2510 else
2511 if test "$rdma" = "yes" ; then
2512 error_exit \
2513 " OpenFabrics librdmacm/libibverbs not present." \
2514 " Your options:" \
2515 " (1) Fast: Install infiniband packages from your distro." \
2516 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2517 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2518 fi
2519 rdma="no"
2520 fi
2521fi
2522
ths8d5d2d42007-08-25 01:37:51 +00002523
2524##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002525# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002526if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002527 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002528#include <sasl/sasl.h>
2529#include <stdio.h>
2530int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2531EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002532 # Assuming Cyrus-SASL installed in /usr prefix
2533 vnc_sasl_cflags=""
2534 vnc_sasl_libs="-lsasl2"
2535 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2536 vnc_sasl=yes
2537 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002538 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002539 else
2540 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002541 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002542 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002543 vnc_sasl=no
2544 fi
aliguori2f9606b2009-03-06 20:27:28 +00002545fi
2546
2547##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002548# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002549if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002550cat > $TMPC <<EOF
2551#include <stdio.h>
2552#include <jpeglib.h>
2553int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2554EOF
2555 vnc_jpeg_cflags=""
2556 vnc_jpeg_libs="-ljpeg"
2557 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2558 vnc_jpeg=yes
2559 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002560 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002561 else
2562 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002563 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002564 fi
2565 vnc_jpeg=no
2566 fi
2567fi
2568
2569##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002570# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002571if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002572cat > $TMPC <<EOF
2573//#include <stdio.h>
2574#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002575#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002576int main(void) {
2577 png_structp png_ptr;
2578 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002579 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002580}
2581EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002582 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002583 vnc_png_cflags=`$pkg_config libpng --cflags`
2584 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002585 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002586 vnc_png_cflags=""
2587 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002588 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002589 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2590 vnc_png=yes
2591 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002592 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002593 else
2594 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002595 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002596 fi
2597 vnc_png=no
2598 fi
2599fi
2600
2601##########################################
aliguori76655d62009-03-06 20:27:37 +00002602# fnmatch() probe, used for ACL routines
2603fnmatch="no"
2604cat > $TMPC << EOF
2605#include <fnmatch.h>
2606int main(void)
2607{
2608 fnmatch("foo", "foo", 0);
2609 return 0;
2610}
2611EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002612if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002613 fnmatch="yes"
2614fi
2615
2616##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002617# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002618# Note that on some systems (notably MacOSX) no extra library
2619# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002620if test "$uuid" != "no" ; then
2621 uuid_libs="-luuid"
2622 cat > $TMPC << EOF
2623#include <uuid/uuid.h>
2624int main(void)
2625{
2626 uuid_t my_uuid;
2627 uuid_generate(my_uuid);
2628 return 0;
2629}
2630EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002631 if compile_prog "" "" ; then
2632 uuid="yes"
2633 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002634 uuid="yes"
2635 libs_softmmu="$uuid_libs $libs_softmmu"
2636 libs_tools="$uuid_libs $libs_tools"
2637 else
2638 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002639 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002640 fi
2641 uuid=no
2642 fi
2643fi
2644
Jeff Cody4f18b782013-10-30 10:44:39 -04002645if test "$vhdx" = "yes" ; then
2646 if test "$uuid" = "no" ; then
2647 error_exit "uuid required for VHDX support"
2648 fi
2649elif test "$vhdx" != "no" ; then
2650 if test "$uuid" = "yes" ; then
2651 vhdx=yes
2652 else
2653 vhdx=no
2654 fi
2655fi
2656
Stefan Weilee682d22009-10-01 20:10:37 +02002657##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002658# xfsctl() probe, used for raw-posix
2659if test "$xfs" != "no" ; then
2660 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002661#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002662#include <xfs/xfs.h>
2663int main(void)
2664{
2665 xfsctl(NULL, 0, 0, NULL);
2666 return 0;
2667}
2668EOF
2669 if compile_prog "" "" ; then
2670 xfs="yes"
2671 else
2672 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002673 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002674 fi
2675 xfs=no
2676 fi
2677fi
2678
2679##########################################
ths8a16d272008-07-19 09:56:24 +00002680# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002681if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002682 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002683 cat > $TMPC << EOF
2684#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002685int main(void)
2686{
2687 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002688 char s[] = "";
2689 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002690 return 0;
2691}
ths8a16d272008-07-19 09:56:24 +00002692EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002693 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002694 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002695 libs_softmmu="$vde_libs $libs_softmmu"
2696 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002697 else
2698 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002699 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002700 fi
2701 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002702 fi
ths8a16d272008-07-19 09:56:24 +00002703fi
2704
2705##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002706# netmap support probe
2707# Apart from looking for netmap headers, we make sure that the host API version
2708# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2709# a minor/major version number. Minor new features will be marked with values up
2710# to 15, and if something happens that requires a change to the backend we will
2711# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002712if test "$netmap" != "no" ; then
2713 cat > $TMPC << EOF
2714#include <inttypes.h>
2715#include <net/if.h>
2716#include <net/netmap.h>
2717#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002718#if (NETMAP_API < 11) || (NETMAP_API > 15)
2719#error
2720#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002721int main(void) { return 0; }
2722EOF
2723 if compile_prog "" "" ; then
2724 netmap=yes
2725 else
2726 if test "$netmap" = "yes" ; then
2727 feature_not_found "netmap"
2728 fi
2729 netmap=no
2730 fi
2731fi
2732
2733##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002734# libcap-ng library probe
2735if test "$cap_ng" != "no" ; then
2736 cap_libs="-lcap-ng"
2737 cat > $TMPC << EOF
2738#include <cap-ng.h>
2739int main(void)
2740{
2741 capng_capability_to_name(CAPNG_EFFECTIVE);
2742 return 0;
2743}
2744EOF
2745 if compile_prog "" "$cap_libs" ; then
2746 cap_ng=yes
2747 libs_tools="$cap_libs $libs_tools"
2748 else
2749 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002750 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002751 fi
2752 cap_ng=no
2753 fi
2754fi
2755
2756##########################################
malcc2de5c92008-06-28 19:13:06 +00002757# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002758
malcc2de5c92008-06-28 19:13:06 +00002759audio_drv_probe()
2760{
2761 drv=$1
2762 hdr=$2
2763 lib=$3
2764 exp=$4
2765 cfl=$5
2766 cat > $TMPC << EOF
2767#include <$hdr>
2768int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002769EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002770 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002771 :
2772 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002773 error_exit "$drv check failed" \
2774 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002775 fi
2776}
2777
malc2fa7d3b2008-07-29 12:58:44 +00002778audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002779for drv in $audio_drv_list; do
2780 case $drv in
2781 alsa)
2782 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002783 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002784 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002785 ;;
2786
malcb8e59f12008-07-02 21:03:08 +00002787 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002788 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2789 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2790 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002791 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002792 ;;
2793
Juan Quintela997e6902009-08-03 14:46:29 +02002794 coreaudio)
2795 libs_softmmu="-framework CoreAudio $libs_softmmu"
2796 ;;
2797
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002798 dsound)
2799 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002800 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002801 ;;
2802
2803 oss)
2804 libs_softmmu="$oss_lib $libs_softmmu"
2805 ;;
2806
2807 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002808 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2809 ;;
2810
malce4c63a62008-07-19 16:15:16 +00002811 *)
malc1c9b2a52008-07-19 16:57:30 +00002812 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002813 error_exit "Unknown driver '$drv' selected" \
2814 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002815 }
2816 ;;
malcc2de5c92008-06-28 19:13:06 +00002817 esac
2818done
ths8f28f3f2007-01-05 21:25:54 +00002819
balrog4d3b6f62008-02-10 16:33:14 +00002820##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002821# BrlAPI probe
2822
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002823if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002824 brlapi_libs="-lbrlapi"
2825 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002826#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002827#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002828int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2829EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002830 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002831 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002832 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002833 else
2834 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002835 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002836 fi
2837 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002838 fi
2839fi
aurel322e4d9fb2008-04-08 06:01:02 +00002840
2841##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002842# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002843if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002844 if test "$mingw32" = "yes" ; then
2845 curses_list="-lpdcurses"
2846 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002847 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002848 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002849 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002850 cat > $TMPC << EOF
2851#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002852int main(void) {
2853 const char *s = curses_version();
2854 resize_term(0, 0);
2855 return s != 0;
2856}
balrog4d3b6f62008-02-10 16:33:14 +00002857EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002858 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002859 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002860 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002861 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002862 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002863 libs_softmmu="$curses_lib $libs_softmmu"
2864 break
2865 fi
2866 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002867 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002868 if test "$curses_found" = "yes" ; then
2869 curses=yes
2870 else
2871 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002872 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002873 fi
2874 curses=no
2875 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002876fi
balrog4d3b6f62008-02-10 16:33:14 +00002877
blueswir1414f0da2008-08-15 18:20:52 +00002878##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002879# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002880if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002881 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002882 curlconfig="$pkg_config libcurl"
2883 else
2884 curlconfig=curl-config
2885 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002886 cat > $TMPC << EOF
2887#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002888int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002889EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002890 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2891 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002892 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002893 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002894 else
2895 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002896 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002897 fi
2898 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002899 fi
2900fi # test "$curl"
2901
2902##########################################
balrogfb599c92008-09-28 23:49:55 +00002903# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002904if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002905 cat > $TMPC << EOF
2906#include <bluetooth/bluetooth.h>
2907int main(void) { return bt_error(0); }
2908EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002909 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2910 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002911 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002912 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002913 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002914 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002915 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002916 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002917 fi
balroge820e3f2008-09-30 02:27:44 +00002918 bluez="no"
2919 fi
balrogfb599c92008-09-28 23:49:55 +00002920fi
2921
2922##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002923# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002924
John Snowf40685c2015-05-22 14:13:42 -04002925glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002926glib_modules=gthread-2.0
2927if test "$modules" = yes; then
2928 glib_modules="$glib_modules gmodule-2.0"
2929fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002930
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002931for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002932 if $pkg_config --atleast-version=$glib_req_ver $i; then
2933 glib_cflags=`$pkg_config --cflags $i`
2934 glib_libs=`$pkg_config --libs $i`
2935 CFLAGS="$glib_cflags $CFLAGS"
2936 LIBS="$glib_libs $LIBS"
2937 libs_qga="$glib_libs $libs_qga"
2938 else
2939 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2940 fi
2941done
2942
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002943# g_test_trap_subprocess added in 2.38. Used by some tests.
2944glib_subprocess=yes
2945if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2946 glib_subprocess=no
2947fi
2948
John Snowbbbf2e02015-03-25 18:57:38 -04002949# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2950cat > $TMPC << EOF
2951#include <glib.h>
2952int main(void) { return 0; }
2953EOF
2954if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2955 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2956 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2957 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2958 fi
2959fi
2960
Fam Zhenge26110c2014-02-10 14:48:57 +08002961##########################################
2962# SHA command probe for modules
2963if test "$modules" = yes; then
2964 shacmd_probe="sha1sum sha1 shasum"
2965 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002966 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002967 shacmd="$c"
2968 break
2969 fi
2970 done
2971 if test "$shacmd" = ""; then
2972 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2973 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002974fi
2975
2976##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002977# pixman support probe
2978
2979if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002980 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2981 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002982 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002983 pixman="system"
2984 else
2985 pixman="internal"
2986 fi
2987fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002988if test "$pixman" = "none"; then
2989 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002990 error_exit "pixman disabled but system emulation or tools build" \
2991 "enabled. You can turn off pixman only if you also" \
2992 "disable all system emulation targets and the tools" \
2993 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002994 fi
2995 pixman_cflags=
2996 pixman_libs=
2997elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002998 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002999 pixman_cflags=`$pkg_config --cflags pixman-1`
3000 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003001else
3002 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003003 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003004 " (1) Preferred: Install the pixman devel package (any recent" \
3005 " distro should have packages as Xorg needs pixman too)." \
3006 " (2) Fetch the pixman submodule, using:" \
3007 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003008 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003009 mkdir -p pixman/pixman
3010 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3011 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003012fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003013
3014##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303015# libcap probe
3016
3017if test "$cap" != "no" ; then
3018 cat > $TMPC <<EOF
3019#include <stdio.h>
3020#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003021int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303022EOF
3023 if compile_prog "" "-lcap" ; then
3024 cap=yes
3025 else
3026 cap=no
3027 fi
3028fi
3029
3030##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003031# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003032PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003033
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003034pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003035cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003036#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003037static void *f(void *p) { return NULL; }
3038int main(void) {
3039 pthread_t thread;
3040 pthread_create(&thread, 0, f, 0);
3041 return 0;
3042}
blueswir1414f0da2008-08-15 18:20:52 +00003043EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003044if compile_prog "" "" ; then
3045 pthread=yes
3046else
3047 for pthread_lib in $PTHREADLIBS_LIST; do
3048 if compile_prog "" "$pthread_lib" ; then
3049 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003050 found=no
3051 for lib_entry in $LIBS; do
3052 if test "$lib_entry" = "$pthread_lib"; then
3053 found=yes
3054 break
3055 fi
3056 done
3057 if test "$found" = "no"; then
3058 LIBS="$pthread_lib $LIBS"
3059 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003060 break
3061 fi
3062 done
3063fi
blueswir1414f0da2008-08-15 18:20:52 +00003064
Anthony Liguori4617e592009-08-25 17:21:56 -05003065if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003066 error_exit "pthread check failed" \
3067 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003068fi
3069
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003070# check for pthread_setname_np
3071pthread_setname_np=no
3072cat > $TMPC << EOF
3073#include <pthread.h>
3074
3075static void *f(void *p) { return NULL; }
3076int main(void)
3077{
3078 pthread_t thread;
3079 pthread_create(&thread, 0, f, 0);
3080 pthread_setname_np(thread, "QEMU");
3081 return 0;
3082}
3083EOF
3084if compile_prog "" "$pthread_lib" ; then
3085 pthread_setname_np=yes
3086fi
3087
aliguoribf9298b2008-12-05 20:05:26 +00003088##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003089# rbd probe
3090if test "$rbd" != "no" ; then
3091 cat > $TMPC <<EOF
3092#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003093#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003094int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003095 rados_t cluster;
3096 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003097 return 0;
3098}
3099EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003100 rbd_libs="-lrbd -lrados"
3101 if compile_prog "" "$rbd_libs" ; then
3102 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003103 else
3104 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003105 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003106 fi
3107 rbd=no
3108 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003109fi
3110
3111##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003112# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003113min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003114if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003115 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003116 libssh2_cflags=`$pkg_config libssh2 --cflags`
3117 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003118 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003119 else
3120 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003121 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003122 fi
3123 libssh2=no
3124 fi
3125fi
3126
3127##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003128# libssh2_sftp_fsync probe
3129
3130if test "$libssh2" = "yes"; then
3131 cat > $TMPC <<EOF
3132#include <stdio.h>
3133#include <libssh2.h>
3134#include <libssh2_sftp.h>
3135int main(void) {
3136 LIBSSH2_SESSION *session;
3137 LIBSSH2_SFTP *sftp;
3138 LIBSSH2_SFTP_HANDLE *sftp_handle;
3139 session = libssh2_session_init ();
3140 sftp = libssh2_sftp_init (session);
3141 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3142 libssh2_sftp_fsync (sftp_handle);
3143 return 0;
3144}
3145EOF
3146 # libssh2_cflags/libssh2_libs defined in previous test.
3147 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3148 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3149 fi
3150fi
3151
3152##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003153# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003154
3155if test "$linux_aio" != "no" ; then
3156 cat > $TMPC <<EOF
3157#include <libaio.h>
3158#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003159#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003160int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3161EOF
3162 if compile_prog "" "-laio" ; then
3163 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003164 else
3165 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003166 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003167 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003168 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003169 fi
3170fi
3171
3172##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003173# TPM passthrough is only on x86 Linux
3174
3175if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3176 tpm_passthrough=$tpm
3177else
3178 tpm_passthrough=no
3179fi
3180
3181##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003182# attr probe
3183
3184if test "$attr" != "no" ; then
3185 cat > $TMPC <<EOF
3186#include <stdio.h>
3187#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003188#ifdef CONFIG_LIBATTR
3189#include <attr/xattr.h>
3190#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003191#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003192#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003193int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3194EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003195 if compile_prog "" "" ; then
3196 attr=yes
3197 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003198 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003199 attr=yes
3200 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003201 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003202 else
3203 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003204 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003205 fi
3206 attr=no
3207 fi
3208fi
3209
3210##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003211# iovec probe
3212cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003213#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003214#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003215#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003216int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003217EOF
3218iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003219if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003220 iovec=yes
3221fi
3222
aurel32f652e6a2008-12-16 10:43:48 +00003223##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003224# preadv probe
3225cat > $TMPC <<EOF
3226#include <sys/types.h>
3227#include <sys/uio.h>
3228#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003229int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003230EOF
3231preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003232if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003233 preadv=yes
3234fi
3235
3236##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003237# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003238# fdt support is mandatory for at least some target architectures,
3239# so insist on it if we're building those system emulators.
3240fdt_required=no
3241for target in $target_list; do
3242 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003243 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003244 fdt_required=yes
3245 ;;
3246 esac
3247done
3248
3249if test "$fdt_required" = "yes"; then
3250 if test "$fdt" = "no"; then
3251 error_exit "fdt disabled but some requested targets require it." \
3252 "You can turn off fdt only if you also disable all the system emulation" \
3253 "targets which need it (by specifying a cut down --target-list)."
3254 fi
3255 fdt=yes
3256fi
3257
Juan Quintela2df87df2009-08-12 18:29:54 +02003258if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003259 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003260 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003261 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003262 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003263#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003264#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003265int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003266EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003267 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003268 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003269 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003270 elif test -d ${source_path}/dtc/libfdt ; then
3271 # have submodule DTC - use it
3272 fdt=yes
3273 dtc_internal="yes"
3274 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003275 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003276 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3277 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003278 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003279 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3280 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3281 elif test "$fdt" = "yes" ; then
3282 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003283 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003284 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003285 " (2) Fetch the DTC submodule, using:" \
3286 " git submodule update --init dtc"
3287 else
3288 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003289 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003290 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003291 fi
3292fi
3293
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003294libs_softmmu="$libs_softmmu $fdt_libs"
3295
Michael Walle20ff0752011-03-07 23:32:39 +01003296##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003297# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003298
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003299if test "$opengl" != "no" ; then
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003300 opengl_pkgs="epoxy"
3301 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003302 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3303 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003304 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003305 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3306 gtk_gl="yes"
3307 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003308 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003309 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003310 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003311 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003312 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003313 opengl_libs=""
3314 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003315 fi
3316fi
3317
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003318
3319##########################################
3320# archipelago probe
3321if test "$archipelago" != "no" ; then
3322 cat > $TMPC <<EOF
3323#include <stdio.h>
3324#include <xseg/xseg.h>
3325#include <xseg/protocol.h>
3326int main(void) {
3327 xseg_initialize();
3328 return 0;
3329}
3330EOF
3331 archipelago_libs=-lxseg
3332 if compile_prog "" "$archipelago_libs"; then
3333 archipelago="yes"
3334 libs_tools="$archipelago_libs $libs_tools"
3335 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003336
3337 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3338 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3339 echo "license and therefore prevent redistribution."
3340 echo
3341 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003342 else
3343 if test "$archipelago" = "yes" ; then
3344 feature_not_found "Archipelago backend support" "Install libxseg devel"
3345 fi
3346 archipelago="no"
3347 fi
3348fi
3349
3350
Bharata B Raoeb100392012-09-24 14:42:45 +05303351##########################################
3352# glusterfs probe
3353if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003354 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303355 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003356 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3357 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003358 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303359 glusterfs_discard="yes"
3360 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303361 if $pkg_config --atleast-version=6 glusterfs-api; then
3362 glusterfs_zerofill="yes"
3363 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303364 else
3365 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003366 feature_not_found "GlusterFS backend support" \
3367 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303368 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303369 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303370 fi
3371fi
3372
aurel3239386ac2009-04-15 19:48:17 +00003373# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003374# emulator. This is done because older glibc versions don't
3375# have syscall stubs for these implemented. In that case we
3376# don't provide them even if kernel supports them.
3377#
3378inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003379cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003380#include <sys/inotify.h>
3381
3382int
3383main(void)
3384{
3385 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003386 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003387}
3388EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003389if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003390 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003391fi
3392
Riku Voipioc05c7a72010-03-26 15:25:11 +00003393inotify1=no
3394cat > $TMPC << EOF
3395#include <sys/inotify.h>
3396
3397int
3398main(void)
3399{
3400 /* try to start inotify */
3401 return inotify_init1(0);
3402}
3403EOF
3404if compile_prog "" "" ; then
3405 inotify1=yes
3406fi
3407
Riku Voipioebc996f2009-04-21 15:01:51 +03003408# check if utimensat and futimens are supported
3409utimens=no
3410cat > $TMPC << EOF
3411#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003412#include <stddef.h>
3413#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003414#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003415
3416int main(void)
3417{
3418 utimensat(AT_FDCWD, "foo", NULL, 0);
3419 futimens(0, NULL);
3420 return 0;
3421}
3422EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003423if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003424 utimens=yes
3425fi
3426
Riku Voipio099d6b02009-05-05 12:10:04 +03003427# check if pipe2 is there
3428pipe2=no
3429cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003430#include <unistd.h>
3431#include <fcntl.h>
3432
3433int main(void)
3434{
3435 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003436 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003437}
3438EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003439if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003440 pipe2=yes
3441fi
3442
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003443# check if accept4 is there
3444accept4=no
3445cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003446#include <sys/socket.h>
3447#include <stddef.h>
3448
3449int main(void)
3450{
3451 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3452 return 0;
3453}
3454EOF
3455if compile_prog "" "" ; then
3456 accept4=yes
3457fi
3458
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303459# check if tee/splice is there. vmsplice was added same time.
3460splice=no
3461cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303462#include <unistd.h>
3463#include <fcntl.h>
3464#include <limits.h>
3465
3466int main(void)
3467{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003468 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303469 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3470 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3471 return 0;
3472}
3473EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003474if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303475 splice=yes
3476fi
3477
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003478##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003479# libnuma probe
3480
3481if test "$numa" != "no" ; then
3482 cat > $TMPC << EOF
3483#include <numa.h>
3484int main(void) { return numa_available(); }
3485EOF
3486
3487 if compile_prog "" "-lnuma" ; then
3488 numa=yes
3489 libs_softmmu="-lnuma $libs_softmmu"
3490 else
3491 if test "$numa" = "yes" ; then
3492 feature_not_found "numa" "install numactl devel"
3493 fi
3494 numa=no
3495 fi
3496fi
3497
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003498if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3499 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3500 exit 1
3501fi
3502
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003503##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003504# tcmalloc probe
3505
3506if test "$tcmalloc" = "yes" ; then
3507 cat > $TMPC << EOF
3508#include <stdlib.h>
3509int main(void) { malloc(1); return 0; }
3510EOF
3511
3512 if compile_prog "" "-ltcmalloc" ; then
3513 LIBS="-ltcmalloc $LIBS"
3514 else
3515 feature_not_found "tcmalloc" "install gperftools devel"
3516 fi
3517fi
3518
3519##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003520# jemalloc probe
3521
3522if test "$jemalloc" = "yes" ; then
3523 cat > $TMPC << EOF
3524#include <stdlib.h>
3525int main(void) { malloc(1); return 0; }
3526EOF
3527
3528 if compile_prog "" "-ljemalloc" ; then
3529 LIBS="-ljemalloc $LIBS"
3530 else
3531 feature_not_found "jemalloc" "install jemalloc devel"
3532 fi
3533fi
3534
3535##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003536# signalfd probe
3537signalfd="no"
3538cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003539#include <unistd.h>
3540#include <sys/syscall.h>
3541#include <signal.h>
3542int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3543EOF
3544
3545if compile_prog "" "" ; then
3546 signalfd=yes
3547fi
3548
Riku Voipioc2882b92009-08-12 15:08:24 +03003549# check if eventfd is supported
3550eventfd=no
3551cat > $TMPC << EOF
3552#include <sys/eventfd.h>
3553
3554int main(void)
3555{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003556 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003557}
3558EOF
3559if compile_prog "" "" ; then
3560 eventfd=yes
3561fi
3562
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003563# check if memfd is supported
3564memfd=no
3565cat > $TMPC << EOF
3566#include <sys/memfd.h>
3567
3568int main(void)
3569{
3570 return memfd_create("foo", MFD_ALLOW_SEALING);
3571}
3572EOF
3573if compile_prog "" "" ; then
3574 memfd=yes
3575fi
3576
3577
3578
Ulrich Hechtd0927932009-09-17 20:22:14 +03003579# check for fallocate
3580fallocate=no
3581cat > $TMPC << EOF
3582#include <fcntl.h>
3583
3584int main(void)
3585{
3586 fallocate(0, 0, 0, 0);
3587 return 0;
3588}
3589EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003590if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003591 fallocate=yes
3592fi
3593
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003594# check for fallocate hole punching
3595fallocate_punch_hole=no
3596cat > $TMPC << EOF
3597#include <fcntl.h>
3598#include <linux/falloc.h>
3599
3600int main(void)
3601{
3602 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3603 return 0;
3604}
3605EOF
3606if compile_prog "" "" ; then
3607 fallocate_punch_hole=yes
3608fi
3609
Denis V. Lunevb953f072015-01-30 11:42:14 +03003610# check that fallocate supports range zeroing inside the file
3611fallocate_zero_range=no
3612cat > $TMPC << EOF
3613#include <fcntl.h>
3614#include <linux/falloc.h>
3615
3616int main(void)
3617{
3618 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3619 return 0;
3620}
3621EOF
3622if compile_prog "" "" ; then
3623 fallocate_zero_range=yes
3624fi
3625
Kevin Wolfed911432014-09-29 17:12:59 +02003626# check for posix_fallocate
3627posix_fallocate=no
3628cat > $TMPC << EOF
3629#include <fcntl.h>
3630
3631int main(void)
3632{
3633 posix_fallocate(0, 0, 0);
3634 return 0;
3635}
3636EOF
3637if compile_prog "" "" ; then
3638 posix_fallocate=yes
3639fi
3640
Peter Maydellc727f472011-01-06 11:05:10 +00003641# check for sync_file_range
3642sync_file_range=no
3643cat > $TMPC << EOF
3644#include <fcntl.h>
3645
3646int main(void)
3647{
3648 sync_file_range(0, 0, 0, 0);
3649 return 0;
3650}
3651EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003652if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003653 sync_file_range=yes
3654fi
3655
Peter Maydelldace20d2011-01-10 13:11:24 +00003656# check for linux/fiemap.h and FS_IOC_FIEMAP
3657fiemap=no
3658cat > $TMPC << EOF
3659#include <sys/ioctl.h>
3660#include <linux/fs.h>
3661#include <linux/fiemap.h>
3662
3663int main(void)
3664{
3665 ioctl(0, FS_IOC_FIEMAP, 0);
3666 return 0;
3667}
3668EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003669if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003670 fiemap=yes
3671fi
3672
Ulrich Hechtd0927932009-09-17 20:22:14 +03003673# check for dup3
3674dup3=no
3675cat > $TMPC << EOF
3676#include <unistd.h>
3677
3678int main(void)
3679{
3680 dup3(0, 0, 0);
3681 return 0;
3682}
3683EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003684if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003685 dup3=yes
3686fi
3687
Alex Bligh4e0c6522013-08-21 16:02:43 +01003688# check for ppoll support
3689ppoll=no
3690cat > $TMPC << EOF
3691#include <poll.h>
3692
3693int main(void)
3694{
3695 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3696 ppoll(&pfd, 1, 0, 0);
3697 return 0;
3698}
3699EOF
3700if compile_prog "" "" ; then
3701 ppoll=yes
3702fi
3703
Alex Blighcd758dd2013-08-21 16:02:44 +01003704# check for prctl(PR_SET_TIMERSLACK , ... ) support
3705prctl_pr_set_timerslack=no
3706cat > $TMPC << EOF
3707#include <sys/prctl.h>
3708
3709int main(void)
3710{
3711 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3712 return 0;
3713}
3714EOF
3715if compile_prog "" "" ; then
3716 prctl_pr_set_timerslack=yes
3717fi
3718
Peter Maydell3b6edd12011-02-15 18:35:05 +00003719# check for epoll support
3720epoll=no
3721cat > $TMPC << EOF
3722#include <sys/epoll.h>
3723
3724int main(void)
3725{
3726 epoll_create(0);
3727 return 0;
3728}
3729EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003730if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003731 epoll=yes
3732fi
3733
3734# epoll_create1 and epoll_pwait are later additions
3735# so we must check separately for their presence
3736epoll_create1=no
3737cat > $TMPC << EOF
3738#include <sys/epoll.h>
3739
3740int main(void)
3741{
Peter Maydell19e83f62011-04-26 16:56:40 +01003742 /* Note that we use epoll_create1 as a value, not as
3743 * a function being called. This is necessary so that on
3744 * old SPARC glibc versions where the function was present in
3745 * the library but not declared in the header file we will
3746 * fail the configure check. (Otherwise we will get a compiler
3747 * warning but not an error, and will proceed to fail the
3748 * qemu compile where we compile with -Werror.)
3749 */
Blue Swirlc075a722012-08-09 20:21:25 +00003750 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003751}
3752EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003753if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003754 epoll_create1=yes
3755fi
3756
3757epoll_pwait=no
3758cat > $TMPC << EOF
3759#include <sys/epoll.h>
3760
3761int main(void)
3762{
3763 epoll_pwait(0, 0, 0, 0, 0);
3764 return 0;
3765}
3766EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003767if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003768 epoll_pwait=yes
3769fi
3770
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003771# check for sendfile support
3772sendfile=no
3773cat > $TMPC << EOF
3774#include <sys/sendfile.h>
3775
3776int main(void)
3777{
3778 return sendfile(0, 0, 0, 0);
3779}
3780EOF
3781if compile_prog "" "" ; then
3782 sendfile=yes
3783fi
3784
Riku Voipio51834342014-06-22 11:25:42 +01003785# check for timerfd support (glibc 2.8 and newer)
3786timerfd=no
3787cat > $TMPC << EOF
3788#include <sys/timerfd.h>
3789
3790int main(void)
3791{
3792 return(timerfd_create(CLOCK_REALTIME, 0));
3793}
3794EOF
3795if compile_prog "" "" ; then
3796 timerfd=yes
3797fi
3798
Riku Voipio9af5c902014-08-12 15:58:57 +03003799# check for setns and unshare support
3800setns=no
3801cat > $TMPC << EOF
3802#include <sched.h>
3803
3804int main(void)
3805{
3806 int ret;
3807 ret = setns(0, 0);
3808 ret = unshare(0);
3809 return ret;
3810}
3811EOF
3812if compile_prog "" "" ; then
3813 setns=yes
3814fi
3815
pbrookcc8ae6d2006-04-23 17:57:59 +00003816# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003817if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003818 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003819 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003820 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003821 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003822 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003823 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003824 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003825 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003826fi
3827
Stefan Weilf514f412009-10-11 12:44:07 +02003828# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003829byteswap_h=no
3830cat > $TMPC << EOF
3831#include <byteswap.h>
3832int main(void) { return bswap_32(0); }
3833EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003834if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003835 byteswap_h=yes
3836fi
3837
Stefan Weil75f13592013-01-05 12:17:38 +01003838# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003839bswap_h=no
3840cat > $TMPC << EOF
3841#include <sys/endian.h>
3842#include <sys/types.h>
3843#include <machine/bswap.h>
3844int main(void) { return bswap32(0); }
3845EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003846if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003847 bswap_h=yes
3848fi
3849
aliguorida93a1f2008-12-12 20:02:52 +00003850##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003851# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003852if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003853 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003854 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003855 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3856 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003857 else
3858 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003859 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003860 fi
3861 libiscsi="no"
3862 fi
3863fi
3864
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003865##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003866# Do we need libm
3867cat > $TMPC << EOF
3868#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003869int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003870EOF
3871if compile_prog "" "" ; then
3872 :
3873elif compile_prog "" "-lm" ; then
3874 LIBS="-lm $LIBS"
3875 libs_qga="-lm $libs_qga"
3876else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003877 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003878fi
3879
3880##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003881# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003882# uClibc provides 2 versions of clock_gettime(), one with realtime
3883# support and one without. This means that the clock_gettime() don't
3884# need -lrt. We still need it for timer_create() so we check for this
3885# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003886cat > $TMPC <<EOF
3887#include <signal.h>
3888#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003889int main(void) {
3890 timer_create(CLOCK_REALTIME, NULL, NULL);
3891 return clock_gettime(CLOCK_REALTIME, NULL);
3892}
aliguorida93a1f2008-12-12 20:02:52 +00003893EOF
3894
Juan Quintela52166aa2009-08-03 14:46:03 +02003895if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003896 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003897# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003898elif compile_prog "" "$pthread_lib -lrt" ; then
3899 LIBS="$LIBS -lrt"
3900 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003901fi
3902
Blue Swirl31ff5042009-09-12 12:33:07 +00003903if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003904 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003905 libs_softmmu="-lutil $libs_softmmu"
3906fi
3907
Blue Swirlde5071c2009-09-12 09:58:46 +00003908##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003909# spice probe
3910if test "$spice" != "no" ; then
3911 cat > $TMPC << EOF
3912#include <spice.h>
3913int main(void) { spice_server_new(); return 0; }
3914EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003915 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3916 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003917 if $pkg_config --atleast-version=0.12.0 spice-server && \
3918 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003919 compile_prog "$spice_cflags" "$spice_libs" ; then
3920 spice="yes"
3921 libs_softmmu="$libs_softmmu $spice_libs"
3922 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003923 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3924 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003925 else
3926 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003927 feature_not_found "spice" \
3928 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003929 fi
3930 spice="no"
3931 fi
3932fi
3933
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003934# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003935smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003936if test "$smartcard" != "no"; then
3937 if $pkg_config libcacard; then
3938 libcacard_cflags=$($pkg_config --cflags libcacard)
3939 libcacard_libs=$($pkg_config --libs libcacard)
3940 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3941 libs_softmmu="$libs_softmmu $libcacard_libs"
3942 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003943 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003944 if test "$smartcard" = "yes"; then
3945 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003946 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003947 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003948 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003949fi
3950
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003951# check for libusb
3952if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003953 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003954 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003955 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3956 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003957 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3958 libs_softmmu="$libs_softmmu $libusb_libs"
3959 else
3960 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003961 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003962 fi
3963 libusb="no"
3964 fi
3965fi
3966
Hans de Goede69354a82011-07-19 11:04:10 +02003967# check for usbredirparser for usb network redirection support
3968if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003969 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003970 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003971 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3972 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003973 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003974 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003975 else
3976 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003977 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003978 fi
3979 usb_redir="no"
3980 fi
3981fi
3982
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003983##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003984# check if we have VSS SDK headers for win
3985
3986if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3987 case "$vss_win32_sdk" in
3988 "") vss_win32_include="-I$source_path" ;;
3989 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3990 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3991 vss_win32_include="-I$source_path/.sdk/vss"
3992 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3993 ;;
3994 *) vss_win32_include="-I$vss_win32_sdk"
3995 esac
3996 cat > $TMPC << EOF
3997#define __MIDL_user_allocate_free_DEFINED__
3998#include <inc/win2003/vss.h>
3999int main(void) { return VSS_CTX_BACKUP; }
4000EOF
4001 if compile_prog "$vss_win32_include" "" ; then
4002 guest_agent_with_vss="yes"
4003 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4004 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004005 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004006 else
4007 if test "$vss_win32_sdk" != "" ; then
4008 echo "ERROR: Please download and install Microsoft VSS SDK:"
4009 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4010 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4011 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4012 echo "ERROR: The headers are extracted in the directory \`inc'."
4013 feature_not_found "VSS support"
4014 fi
4015 guest_agent_with_vss="no"
4016 fi
4017fi
4018
4019##########################################
4020# lookup Windows platform SDK (if not specified)
4021# The SDK is needed only to build .tlb (type library) file of guest agent
4022# VSS provider from the source. It is usually unnecessary because the
4023# pre-compiled .tlb file is included.
4024
4025if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4026 if test -z "$win_sdk"; then
4027 programfiles="$PROGRAMFILES"
4028 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4029 if test -n "$programfiles"; then
4030 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4031 else
4032 feature_not_found "Windows SDK"
4033 fi
4034 elif test "$win_sdk" = "no"; then
4035 win_sdk=""
4036 fi
4037fi
4038
4039##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004040# check if mingw environment provides a recent ntddscsi.h
4041if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4042 cat > $TMPC << EOF
4043#include <windows.h>
4044#include <ntddscsi.h>
4045int main(void) {
4046#if !defined(IOCTL_SCSI_GET_ADDRESS)
4047#error Missing required ioctl definitions
4048#endif
4049 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4050 return addr.Lun;
4051}
4052EOF
4053 if compile_prog "" "" ; then
4054 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004055 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004056 fi
4057fi
4058
4059##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004060# virgl renderer probe
4061
4062if test "$virglrenderer" != "no" ; then
4063 cat > $TMPC << EOF
4064#include <virglrenderer.h>
4065int main(void) { virgl_renderer_poll(); return 0; }
4066EOF
4067 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4068 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4069 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4070 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4071 virglrenderer="yes"
4072 else
4073 if test "$virglrenderer" = "yes" ; then
4074 feature_not_found "virglrenderer"
4075 fi
4076 virglrenderer="no"
4077 fi
4078fi
4079
4080##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004081# check if we have fdatasync
4082
4083fdatasync=no
4084cat > $TMPC << EOF
4085#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004086int main(void) {
4087#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4088return fdatasync(0);
4089#else
Stefan Weile172fe12012-04-06 21:33:20 +02004090#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004091#endif
4092}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004093EOF
4094if compile_prog "" "" ; then
4095 fdatasync=yes
4096fi
4097
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004098##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004099# check if we have madvise
4100
4101madvise=no
4102cat > $TMPC << EOF
4103#include <sys/types.h>
4104#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004105#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004106int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4107EOF
4108if compile_prog "" "" ; then
4109 madvise=yes
4110fi
4111
4112##########################################
4113# check if we have posix_madvise
4114
4115posix_madvise=no
4116cat > $TMPC << EOF
4117#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004118#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004119int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4120EOF
4121if compile_prog "" "" ; then
4122 posix_madvise=yes
4123fi
4124
4125##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004126# check if we have usable SIGEV_THREAD_ID
4127
4128sigev_thread_id=no
4129cat > $TMPC << EOF
4130#include <signal.h>
4131int main(void) {
4132 struct sigevent ev;
4133 ev.sigev_notify = SIGEV_THREAD_ID;
4134 ev._sigev_un._tid = 0;
4135 asm volatile("" : : "g"(&ev));
4136 return 0;
4137}
4138EOF
4139if compile_prog "" "" ; then
4140 sigev_thread_id=yes
4141fi
4142
4143##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004144# check if trace backend exists
4145
Lluís Vilanova5b808272014-05-27 15:02:14 +02004146$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004147if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004148 error_exit "invalid trace backends" \
4149 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004150fi
4151
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004152##########################################
4153# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004154if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004155 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004156#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004157int main(void) { return 0; }
4158EOF
4159 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004160 if $pkg_config lttng-ust --exists; then
4161 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4162 else
4163 lttng_ust_libs="-llttng-ust"
4164 fi
4165 if $pkg_config liburcu-bp --exists; then
4166 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4167 else
4168 urcu_bp_libs="-lurcu-bp"
4169 fi
4170
4171 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4172 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004173 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004174 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004175 fi
4176fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004177
4178##########################################
4179# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004180if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004181 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004182 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004183 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004184 trace_backend_stap="no"
4185 if has 'stap' ; then
4186 trace_backend_stap="yes"
4187 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004188fi
4189
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004190##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004191# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304192
Peter Maydell7c2acc72013-04-08 12:11:27 +01004193# We prefer ucontext, but it's not always possible. The fallback
4194# is sigcontext. gthread is not selectable except explicitly, because
4195# it is not functional enough to run QEMU proper. (It is occasionally
4196# useful for debugging purposes.) On Windows the only valid backend
4197# is the Windows-specific one.
4198
4199ucontext_works=no
4200if test "$darwin" != "yes"; then
4201 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304202#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004203#ifdef __stub_makecontext
4204#error Ignoring glibc stub makecontext which will always fail
4205#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004206int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304207EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004208 if compile_prog "" "" ; then
4209 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304210 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004211fi
4212
4213if test "$coroutine" = ""; then
4214 if test "$mingw32" = "yes"; then
4215 coroutine=win32
4216 elif test "$ucontext_works" = "yes"; then
4217 coroutine=ucontext
4218 else
4219 coroutine=sigaltstack
4220 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004221else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004222 case $coroutine in
4223 windows)
4224 if test "$mingw32" != "yes"; then
4225 error_exit "'windows' coroutine backend only valid for Windows"
4226 fi
4227 # Unfortunately the user visible backend name doesn't match the
4228 # coroutine-*.c filename for this case, so we have to adjust it here.
4229 coroutine=win32
4230 ;;
4231 ucontext)
4232 if test "$ucontext_works" != "yes"; then
4233 feature_not_found "ucontext"
4234 fi
4235 ;;
4236 gthread|sigaltstack)
4237 if test "$mingw32" = "yes"; then
4238 error_exit "only the 'windows' coroutine backend is valid for Windows"
4239 fi
4240 ;;
4241 *)
4242 error_exit "unknown coroutine backend $coroutine"
4243 ;;
4244 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304245fi
4246
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004247if test "$coroutine_pool" = ""; then
4248 if test "$coroutine" = "gthread"; then
4249 coroutine_pool=no
4250 else
4251 coroutine_pool=yes
4252 fi
4253fi
4254if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4255 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4256fi
4257
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304258##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304259# check if we have open_by_handle_at
4260
Stefan Weil4e1797f2012-06-18 22:11:06 +02004261open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304262cat > $TMPC << EOF
4263#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004264#if !defined(AT_EMPTY_PATH)
4265# error missing definition
4266#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004267int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004268#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304269EOF
4270if compile_prog "" "" ; then
4271 open_by_handle_at=yes
4272fi
4273
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304274########################################
4275# check if we have linux/magic.h
4276
4277linux_magic_h=no
4278cat > $TMPC << EOF
4279#include <linux/magic.h>
4280int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004281 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304282}
4283EOF
4284if compile_prog "" "" ; then
4285 linux_magic_h=yes
4286fi
4287
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004288########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004289# check whether we can disable warning option with a pragma (this is needed
4290# to silence warnings in the headers of some versions of external libraries).
4291# This test has to be compiled with -Werror as otherwise an unknown pragma is
4292# only a warning.
4293#
4294# If we can't selectively disable warning in the code, disable -Werror so that
4295# the build doesn't fail anyway.
4296
Peter Maydell06d71fa2012-07-30 16:13:07 +01004297pragma_disable_unused_but_set=no
4298cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004299#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004300#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004301#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004302#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004303
Peter Maydell06d71fa2012-07-30 16:13:07 +01004304int main(void) {
4305 return 0;
4306}
4307EOF
4308if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004309 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004310else
4311 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004312fi
4313
4314########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004315# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004316
4317valgrind_h=no
4318cat > $TMPC << EOF
4319#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004320int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004321 return 0;
4322}
4323EOF
4324if compile_prog "" "" ; then
4325 valgrind_h=yes
4326fi
4327
4328########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004329# check if environ is declared
4330
4331has_environ=no
4332cat > $TMPC << EOF
4333#include <unistd.h>
4334int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004335 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004336 return 0;
4337}
4338EOF
4339if compile_prog "" "" ; then
4340 has_environ=yes
4341fi
4342
Richard Henderson76a347e2012-12-28 14:17:02 -08004343########################################
4344# check if cpuid.h is usable.
4345
4346cpuid_h=no
4347cat > $TMPC << EOF
4348#include <cpuid.h>
4349int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004350 unsigned a, b, c, d;
4351 int max = __get_cpuid_max(0, 0);
4352
4353 if (max >= 1) {
4354 __cpuid(1, a, b, c, d);
4355 }
4356
4357 if (max >= 7) {
4358 __cpuid_count(7, 0, a, b, c, d);
4359 }
4360
4361 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004362}
4363EOF
4364if compile_prog "" "" ; then
4365 cpuid_h=yes
4366fi
4367
Richard Hendersonf5401662013-02-16 12:46:59 -08004368########################################
4369# check if __[u]int128_t is usable.
4370
4371int128=no
4372cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004373#if defined(__clang_major__) && defined(__clang_minor__)
4374# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4375# error __int128_t does not work in CLANG before 3.2
4376# endif
4377#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004378__int128_t a;
4379__uint128_t b;
4380int main (void) {
4381 a = a + b;
4382 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004383 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004384 return 0;
4385}
4386EOF
4387if compile_prog "" "" ; then
4388 int128=yes
4389fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004390
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004391########################################
4392# check if getauxval is available.
4393
4394getauxval=no
4395cat > $TMPC << EOF
4396#include <sys/auxv.h>
4397int main(void) {
4398 return getauxval(AT_HWCAP) == 0;
4399}
4400EOF
4401if compile_prog "" "" ; then
4402 getauxval=yes
4403fi
4404
John Snowfd0e6052015-03-25 18:57:39 -04004405########################################
4406# check if ccache is interfering with
4407# semantic analysis of macros
4408
John Snow5e4dfd32015-10-28 13:56:40 -04004409unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004410ccache_cpp2=no
4411cat > $TMPC << EOF
4412static const int Z = 1;
4413#define fn() ({ Z; })
4414#define TAUT(X) ((X) == Z)
4415#define PAREN(X, Y) (X == Y)
4416#define ID(X) (X)
4417int main(int argc, char *argv[])
4418{
4419 int x = 0, y = 0;
4420 x = ID(x);
4421 x = fn();
4422 fn();
4423 if (PAREN(x, y)) return 0;
4424 if (TAUT(Z)) return 0;
4425 return 0;
4426}
4427EOF
4428
4429if ! compile_object "-Werror"; then
4430 ccache_cpp2=yes
4431fi
4432
John Snowb553a042015-11-03 15:43:42 -05004433#################################################
4434# clang does not support glibc + FORTIFY_SOURCE.
4435
4436if test "$fortify_source" != "no"; then
4437 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4438 fortify_source="no";
4439 elif echo | $cxx -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4440 fortify_source="no";
4441 else
4442 fortify_source="yes"
4443 fi
4444fi
4445
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304446##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004447# End of CC checks
4448# After here, no more $cc or $ld runs
4449
Blue Swirl1d728c32012-05-01 18:45:39 +00004450if test "$gcov" = "yes" ; then
4451 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4452 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004453elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004454 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004455fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004456
Peter Lieven6542aa92014-02-03 10:26:13 +01004457##########################################
4458# Do we have libnfs
4459if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004460 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004461 libnfs="yes"
4462 libnfs_libs=$($pkg_config --libs libnfs)
4463 LIBS="$LIBS $libnfs_libs"
4464 else
4465 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004466 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004467 fi
4468 libnfs="no"
4469 fi
4470fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004471
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004472# Disable zero malloc errors for official releases unless explicitly told to
4473# enable/disable
4474if test -z "$zero_malloc" ; then
4475 if test "$z_version" = "50" ; then
4476 zero_malloc="no"
4477 else
4478 zero_malloc="yes"
4479 fi
4480fi
4481
Peter Maydell6ca026c2012-07-18 15:10:18 +01004482# Now we've finished running tests it's OK to add -Werror to the compiler flags
4483if test "$werror" = "yes"; then
4484 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4485fi
4486
Juan Quintelae86ecd42009-08-03 14:45:59 +02004487if test "$solaris" = "no" ; then
4488 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004489 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004490 fi
4491fi
4492
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004493# test if pod2man has --utf8 option
4494if pod2man --help | grep -q utf8; then
4495 POD2MAN="pod2man --utf8"
4496else
4497 POD2MAN="pod2man"
4498fi
4499
Blue Swirl952afb72010-09-19 08:36:34 +00004500# Use ASLR, no-SEH and DEP if available
4501if test "$mingw32" = "yes" ; then
4502 for flag in --dynamicbase --no-seh --nxcompat; do
4503 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4504 LDFLAGS="-Wl,$flag $LDFLAGS"
4505 fi
4506 done
4507fi
4508
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004509qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004510qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004511qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004512qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004513
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004514tools=""
4515if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004516 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004517 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4518 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004519 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004520 fi
4521fi
4522if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304523 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004524 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4525 virtfs=yes
4526 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4527 else
4528 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004529 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304530 fi
Andreas Färber17500372012-05-01 01:12:03 +02004531 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004532 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304533 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004534fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004535
4536# Probe for guest agent support/options
4537
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004538if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004539 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004540 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004541 guest_agent=yes
4542 elif [ "$guest_agent" != yes ]; then
4543 guest_agent=no
4544 else
4545 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004546 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004547fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004548
Michael Roth9d6bc272015-08-26 10:49:13 -05004549# Guest agent Window MSI package
4550
4551if test "$guest_agent" != yes; then
4552 if test "$guest_agent_msi" = yes; then
4553 error_exit "MSI guest agent package requires guest agent enabled"
4554 fi
4555 guest_agent_msi=no
4556elif test "$mingw32" != "yes"; then
4557 if test "$guest_agent_msi" = "yes"; then
4558 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4559 fi
4560 guest_agent_msi=no
4561elif ! has wixl; then
4562 if test "$guest_agent_msi" = "yes"; then
4563 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4564 fi
4565 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004566else
4567 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4568 # disabled explicitly
4569 if test "$guest_agent_msi" != "no"; then
4570 guest_agent_msi=yes
4571 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004572fi
4573
Michael Roth1a349042015-08-26 11:14:31 -05004574if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004575 if test "$guest_agent_with_vss" = "yes"; then
4576 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4577 fi
4578
4579 if test "$QEMU_GA_MANUFACTURER" = ""; then
4580 QEMU_GA_MANUFACTURER=QEMU
4581 fi
4582
4583 if test "$QEMU_GA_DISTRO" = ""; then
4584 QEMU_GA_DISTRO=Linux
4585 fi
4586
4587 if test "$QEMU_GA_VERSION" = ""; then
4588 QEMU_GA_VERSION=`cat $source_path/VERSION`
4589 fi
4590
4591 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4592
4593 case "$cpu" in
4594 x86_64)
4595 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4596 ;;
4597 i386)
4598 QEMU_GA_MSI_ARCH="-D Arch=32"
4599 ;;
4600 *)
4601 error_exit "CPU $cpu not supported for building installation package"
4602 ;;
4603 esac
4604fi
4605
Paolo Bonzinica35f782010-05-26 16:08:29 +02004606# Mac OS X ships with a broken assembler
4607roms=
4608if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4609 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4610 "$softmmu" = yes ; then
4611 roms="optionrom"
4612fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004613if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004614 roms="$roms spapr-rtas"
4615fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004616
Christian Borntraeger9933c302013-04-23 01:23:03 +00004617if test "$cpu" = "s390x" ; then
4618 roms="$roms s390-ccw"
4619fi
4620
Richard Henderson964c6fa2013-06-21 19:10:16 -07004621# Probe for the need for relocating the user-only binary.
4622if test "$pie" = "no" ; then
4623 textseg_addr=
4624 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004625 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4626 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004627 textseg_addr=0x60000000
4628 ;;
4629 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004630 # A 256M aligned address, high in the address space, with enough
4631 # room for the code_gen_buffer above it before the stack.
4632 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004633 ;;
4634 esac
4635 if [ -n "$textseg_addr" ]; then
4636 cat > $TMPC <<EOF
4637 int main(void) { return 0; }
4638EOF
4639 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4640 if ! compile_prog "" "$textseg_ldflags"; then
4641 # In case ld does not support -Ttext-segment, edit the default linker
4642 # script via sed to set the .text start addr. This is needed on FreeBSD
4643 # at least.
4644 $ld --verbose | sed \
4645 -e '1,/==================================================/d' \
4646 -e '/==================================================/,$d' \
4647 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4648 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4649 textseg_ldflags="-Wl,-T../config-host.ld"
4650 fi
4651 fi
4652fi
4653
Jan Kiszka50e12062014-10-02 10:03:55 +02004654# prepend pixman and ftd flags after all config tests are done
4655QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4656libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004657
bellard43ce4df2003-06-09 19:53:12 +00004658echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004659echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004660echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004661echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004662echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004663echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004664echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004665echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004666if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004667echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004668echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004669echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004670else
4671echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004672echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004673fi
bellard5a671352003-10-01 00:13:48 +00004674echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004675echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004676echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004677echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004678echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004679echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004680echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004681echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004682echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004683echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004684echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004685echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004686if test "$slirp" = "yes" ; then
4687 echo "smbd $smbd"
4688fi
Fam Zheng17969262014-02-10 14:48:56 +08004689echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004690echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004691echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004692echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004693echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004694echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004695echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004696echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004697echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004698echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004699if test "$darwin" = "yes" ; then
4700 echo "Cocoa support $cocoa"
4701fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004702echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004703echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004704echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004705echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004706echo "GNUTLS support $gnutls"
4707echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004708echo "libgcrypt $gcrypt"
4709echo "nettle $nettle ${nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004710echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004711echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004712echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004713echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004714echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004715echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004716echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004717echo "Block whitelist (rw) $block_drv_rw_whitelist"
4718echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304719echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004720echo "VNC support $vnc"
4721if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004722 echo "VNC SASL support $vnc_sasl"
4723 echo "VNC JPEG support $vnc_jpeg"
4724 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004725fi
blueswir131422552007-04-16 18:27:06 +00004726if test -n "$sparc_cpu"; then
4727 echo "Target Sparc Arch $sparc_cpu"
4728fi
aliguorie37630c2009-04-22 15:19:10 +00004729echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004730if test "$xen" = "yes" ; then
4731 echo "xen ctrl version $xen_ctrl_version"
4732fi
aurel322e4d9fb2008-04-08 06:01:02 +00004733echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004734echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004735echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004736echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004737echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004738echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004739echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004740echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004741echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004742echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004743echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004744echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004745echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004746echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004747echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004748echo "madvise $madvise"
4749echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004750echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004751echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004752echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004753echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004754echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004755echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004756if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004757echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004758fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004759if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004760echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004761else
4762echo "spice support $spice"
4763fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004764echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004765echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004766echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004767echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004768echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004769echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004770echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004771echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004772echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004773echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004774echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004775echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004776echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004777echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004778echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304779echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004780echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004781echo "gcov $gcov_tool"
4782echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004783echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004784echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004785echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004786echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004787echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004788echo "lzo support $lzo"
4789echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004790echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004791echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004792echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004793echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004794
Stefan Weil1ba16962011-07-29 22:40:45 +02004795if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004796echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004797fi
bellard97a847b2003-08-10 21:36:04 +00004798
Juan Quintela98ec69a2009-07-16 18:34:18 +02004799config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004800
Stefan Weildbd99ae2013-01-01 18:33:44 +01004801echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4802
Juan Quintela98ec69a2009-07-16 18:34:18 +02004803echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004804echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004805
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004806echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004807echo "prefix=$prefix" >> $config_host_mak
4808echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004809echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004810echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004811echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004812echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004813echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004814echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004815echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4816echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004817echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004818if test "$mingw32" = "no" ; then
4819 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4820fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004821echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004822echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4823echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004824echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004825echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004826
Juan Quintela98ec69a2009-07-16 18:34:18 +02004827echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004828
aurel32f8393942009-04-13 18:45:38 +00004829if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004830 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004831fi
aliguori1625af82009-04-05 17:41:02 +00004832if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004833 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004834fi
bellard7d132992003-03-06 23:23:54 +00004835if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004836 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004837fi
bellard67b915a2004-03-31 23:37:16 +00004838if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004839 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004840 rc_version=`cat $source_path/VERSION`
4841 version_major=${rc_version%%.*}
4842 rc_version=${rc_version#*.}
4843 version_minor=${rc_version%%.*}
4844 rc_version=${rc_version#*.}
4845 version_subminor=${rc_version%%.*}
4846 version_micro=0
4847 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4848 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004849 if test "$guest_agent_with_vss" = "yes" ; then
4850 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004851 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004852 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4853 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004854 if test "$guest_agent_ntddscsi" = "yes" ; then
4855 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4856 fi
Michael Roth1a349042015-08-26 11:14:31 -05004857 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004858 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4859 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4860 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4861 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4862 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4863 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4864 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4865 fi
pbrook210fa552007-02-27 21:04:49 +00004866else
Juan Quintela35f4df22009-07-27 16:13:07 +02004867 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004868fi
blueswir1128ab2f2008-08-15 18:33:42 +00004869
Mark McLoughlindffcb712009-10-22 17:49:11 +01004870if test "$linux" = "yes" ; then
4871 echo "CONFIG_LINUX=y" >> $config_host_mak
4872fi
4873
bellard83fb7ad2004-07-05 21:25:26 +00004874if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004875 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004876fi
malcb29fe3e2008-11-18 01:42:22 +00004877
4878if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004879 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004880fi
4881
bellardec530c82006-04-25 22:36:06 +00004882if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004883 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004884 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004885 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004886 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004887 fi
bellardec530c82006-04-25 22:36:06 +00004888fi
Andreas Färber179cf402010-09-20 00:50:43 +02004889if test "$haiku" = "yes" ; then
4890 echo "CONFIG_HAIKU=y" >> $config_host_mak
4891fi
bellard97a847b2003-08-10 21:36:04 +00004892if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004893 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004894fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004895if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004896 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004897fi
bellardc20709a2004-04-21 23:27:19 +00004898if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004899 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004900 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004901fi
ths8a16d272008-07-19 09:56:24 +00004902if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004903 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004904fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004905if test "$netmap" = "yes" ; then
4906 echo "CONFIG_NETMAP=y" >> $config_host_mak
4907fi
Gonglei015a33b2014-07-01 20:58:08 +08004908if test "$l2tpv3" = "yes" ; then
4909 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4910fi
Corey Bryant47e98652012-01-26 09:42:26 -05004911if test "$cap_ng" = "yes" ; then
4912 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4913fi
Juan Quintela2358a492009-07-27 16:13:25 +02004914echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004915for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004916 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004917 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004918done
Juan Quintela67f86e82009-08-03 14:46:59 +02004919if test "$audio_pt_int" = "yes" ; then
4920 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4921fi
malcd5631632009-10-10 01:13:41 +04004922if test "$audio_win_int" = "yes" ; then
4923 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4924fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004925echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4926echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004927if test "$vnc" = "yes" ; then
4928 echo "CONFIG_VNC=y" >> $config_host_mak
4929fi
aliguori2f9606b2009-03-06 20:27:28 +00004930if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004931 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004932fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004933if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004934 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004935fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004936if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004937 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004938fi
aliguori76655d62009-03-06 20:27:37 +00004939if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004940 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004941fi
Stefan Weilee682d22009-10-01 20:10:37 +02004942if test "$uuid" = "yes" ; then
4943 echo "CONFIG_UUID=y" >> $config_host_mak
4944fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004945if test "$xfs" = "yes" ; then
4946 echo "CONFIG_XFS=y" >> $config_host_mak
4947fi
pbrookb1a550a2006-04-16 13:28:56 +00004948qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004949echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004950echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004951echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004952echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004953if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004954 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004955fi
Fam Zheng17969262014-02-10 14:48:56 +08004956if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004957 # $shacmd can generate a hash started with digit, which the compiler doesn't
4958 # like as an symbol. So prefix it with an underscore
4959 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004960 echo "CONFIG_MODULES=y" >> $config_host_mak
4961fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004962if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004963 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004964 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004965 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004966fi
4967if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004968 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004969fi
4970if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004971 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004972fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004973if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004974 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004975fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004976if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004977 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004978fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004979if test "$accept4" = "yes" ; then
4980 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4981fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304982if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004983 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304984fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004985if test "$eventfd" = "yes" ; then
4986 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4987fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004988if test "$memfd" = "yes" ; then
4989 echo "CONFIG_MEMFD=y" >> $config_host_mak
4990fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004991if test "$fallocate" = "yes" ; then
4992 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4993fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004994if test "$fallocate_punch_hole" = "yes" ; then
4995 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4996fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004997if test "$fallocate_zero_range" = "yes" ; then
4998 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4999fi
Kevin Wolfed911432014-09-29 17:12:59 +02005000if test "$posix_fallocate" = "yes" ; then
5001 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5002fi
Peter Maydellc727f472011-01-06 11:05:10 +00005003if test "$sync_file_range" = "yes" ; then
5004 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5005fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005006if test "$fiemap" = "yes" ; then
5007 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5008fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005009if test "$dup3" = "yes" ; then
5010 echo "CONFIG_DUP3=y" >> $config_host_mak
5011fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005012if test "$ppoll" = "yes" ; then
5013 echo "CONFIG_PPOLL=y" >> $config_host_mak
5014fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005015if test "$prctl_pr_set_timerslack" = "yes" ; then
5016 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5017fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005018if test "$epoll" = "yes" ; then
5019 echo "CONFIG_EPOLL=y" >> $config_host_mak
5020fi
5021if test "$epoll_create1" = "yes" ; then
5022 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5023fi
5024if test "$epoll_pwait" = "yes" ; then
5025 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5026fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005027if test "$sendfile" = "yes" ; then
5028 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5029fi
Riku Voipio51834342014-06-22 11:25:42 +01005030if test "$timerfd" = "yes" ; then
5031 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5032fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005033if test "$setns" = "yes" ; then
5034 echo "CONFIG_SETNS=y" >> $config_host_mak
5035fi
aurel323b3f24a2009-04-15 16:12:13 +00005036if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005037 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005038fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005039if test "$inotify1" = "yes" ; then
5040 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5041fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005042if test "$byteswap_h" = "yes" ; then
5043 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5044fi
5045if test "$bswap_h" = "yes" ; then
5046 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5047fi
Alexander Graf769ce762009-05-11 17:41:42 +02005048if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005049 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005050 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005051 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005052fi
aurel322e4d9fb2008-04-08 06:01:02 +00005053if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005054 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005055fi
balrogfb599c92008-09-28 23:49:55 +00005056if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005057 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005058 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005059fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005060if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005061 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5062fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005063echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005064if test "$gtk" = "yes" ; then
5065 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005066 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005067 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005068 if test "$gtk_gl" = "yes" ; then
5069 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5070 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005071fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005072if test "$gnutls" = "yes" ; then
5073 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5074fi
5075if test "$gnutls_hash" = "yes" ; then
5076 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5077fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005078if test "$gcrypt" = "yes" ; then
5079 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005080fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005081if test "$nettle" = "yes" ; then
5082 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005083 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005084fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005085if test "$tasn1" = "yes" ; then
5086 echo "CONFIG_TASN1=y" >> $config_host_mak
5087fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005088if test "$vte" = "yes" ; then
5089 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005090 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5091fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005092if test "$virglrenderer" = "yes" ; then
5093 echo "CONFIG_VIRGL=y" >> $config_host_mak
5094 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5095 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5096fi
aliguorie37630c2009-04-22 15:19:10 +00005097if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005098 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005099 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00005100fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005101if test "$linux_aio" = "yes" ; then
5102 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5103fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005104if test "$attr" = "yes" ; then
5105 echo "CONFIG_ATTR=y" >> $config_host_mak
5106fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005107if test "$libattr" = "yes" ; then
5108 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5109fi
Meador Inge983eef52012-02-24 14:00:42 +05305110if test "$virtfs" = "yes" ; then
5111 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005112fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005113if test "$vhost_scsi" = "yes" ; then
5114 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5115fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005116if test "$vhost_net" = "yes" ; then
5117 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5118fi
ths77755342008-11-27 15:45:16 +00005119if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005120 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005121fi
aliguoribf9298b2008-12-05 20:05:26 +00005122if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005123 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005124fi
aliguoriceb42de2009-04-07 18:43:28 +00005125if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005126 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005127fi
aurel32f652e6a2008-12-16 10:43:48 +00005128if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005129 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005130fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005131if test "$signalfd" = "yes" ; then
5132 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5133fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005134if test "$tcg_interpreter" = "yes" ; then
5135 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5136fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005137if test "$fdatasync" = "yes" ; then
5138 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5139fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005140if test "$madvise" = "yes" ; then
5141 echo "CONFIG_MADVISE=y" >> $config_host_mak
5142fi
5143if test "$posix_madvise" = "yes" ; then
5144 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5145fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005146if test "$sigev_thread_id" = "yes" ; then
5147 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5148fi
bellard97a847b2003-08-10 21:36:04 +00005149
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005150if test "$spice" = "yes" ; then
5151 echo "CONFIG_SPICE=y" >> $config_host_mak
5152fi
5153
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005154if test "$smartcard" = "yes" ; then
5155 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005156fi
5157
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005158if test "$libusb" = "yes" ; then
5159 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5160fi
5161
Hans de Goede69354a82011-07-19 11:04:10 +02005162if test "$usb_redir" = "yes" ; then
5163 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5164fi
5165
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005166if test "$opengl" = "yes" ; then
5167 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005168 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005169 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005170fi
5171
qiaonuohan607dacd2014-02-18 14:11:30 +08005172if test "$lzo" = "yes" ; then
5173 echo "CONFIG_LZO=y" >> $config_host_mak
5174fi
5175
5176if test "$snappy" = "yes" ; then
5177 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5178fi
5179
Peter Wu6b383c02015-01-06 18:48:14 +01005180if test "$bzip2" = "yes" ; then
5181 echo "CONFIG_BZIP2=y" >> $config_host_mak
5182 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5183fi
5184
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005185if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005186 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005187 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5188 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005189fi
5190
Peter Lieven6542aa92014-02-03 10:26:13 +01005191if test "$libnfs" = "yes" ; then
5192 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5193fi
5194
Eduardo Otubof7945732012-08-14 18:44:05 -03005195if test "$seccomp" = "yes"; then
5196 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5197fi
5198
bellard83fb7ad2004-07-05 21:25:26 +00005199# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005200if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005201 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005202fi
5203
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005204if test "$zero_malloc" = "yes" ; then
5205 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5206fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005207if test "$localtime_r" = "yes" ; then
5208 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5209fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005210if test "$qom_cast_debug" = "yes" ; then
5211 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5212fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005213if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005214 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005215 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5216 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005217fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005218
Peter Maydell7c2acc72013-04-08 12:11:27 +01005219echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005220if test "$coroutine_pool" = "yes" ; then
5221 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5222else
5223 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5224fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305225
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305226if test "$open_by_handle_at" = "yes" ; then
5227 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5228fi
5229
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305230if test "$linux_magic_h" = "yes" ; then
5231 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5232fi
5233
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005234if test "$pragma_diagnostic_available" = "yes" ; then
5235 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005236fi
5237
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005238if test "$valgrind_h" = "yes" ; then
5239 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5240fi
5241
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005242if test "$has_environ" = "yes" ; then
5243 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5244fi
5245
Richard Henderson76a347e2012-12-28 14:17:02 -08005246if test "$cpuid_h" = "yes" ; then
5247 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5248fi
5249
Richard Hendersonf5401662013-02-16 12:46:59 -08005250if test "$int128" = "yes" ; then
5251 echo "CONFIG_INT128=y" >> $config_host_mak
5252fi
5253
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005254if test "$getauxval" = "yes" ; then
5255 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5256fi
5257
Bharata B Raoeb100392012-09-24 14:42:45 +05305258if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005259 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005260 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5261 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305262fi
5263
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305264if test "$glusterfs_discard" = "yes" ; then
5265 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5266fi
5267
Bharata B Rao7c815372013-12-21 14:51:25 +05305268if test "$glusterfs_zerofill" = "yes" ; then
5269 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5270fi
5271
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005272if test "$archipelago" = "yes" ; then
5273 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5274 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5275fi
5276
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005277if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005278 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005279 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5280 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005281fi
5282
Jeff Cody4f18b782013-10-30 10:44:39 -04005283if test "$vhdx" = "yes" ; then
5284 echo "CONFIG_VHDX=y" >> $config_host_mak
5285fi
5286
blueswir168063642008-11-22 21:03:55 +00005287# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005288if test "$libusb" = "yes"; then
5289 echo "HOST_USB=libusb legacy" >> $config_host_mak
5290else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005291 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005292fi
blueswir168063642008-11-22 21:03:55 +00005293
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005294# TPM passthrough support?
5295if test "$tpm" = "yes"; then
5296 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5297 if test "$tpm_passthrough" = "yes"; then
5298 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5299 fi
5300fi
5301
Lluís Vilanova5b808272014-05-27 15:02:14 +02005302echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5303if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005304 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305305fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005306if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005307 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5308 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005309 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005310fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005311if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005312 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5313fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005314if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005315 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5316fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005317if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005318 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5319 if test "$trace_backend_stap" = "yes" ; then
5320 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5321 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005322fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005323if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005324 if test "$linux" = "yes" ; then
5325 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005326 else
Stewart Smith21684af2014-01-24 12:39:10 +11005327 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005328 fi
5329fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005330echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5331
Michael R. Hines2da776d2013-07-22 10:01:54 -04005332if test "$rdma" = "yes" ; then
5333 echo "CONFIG_RDMA=y" >> $config_host_mak
5334fi
5335
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005336# Hold two types of flag:
5337# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5338# a thread we have a handle to
5339# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5340# platform
5341if test "$pthread_setname_np" = "yes" ; then
5342 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5343 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5344fi
5345
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005346if test "$tcg_interpreter" = "yes"; then
5347 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5348elif test "$ARCH" = "sparc64" ; then
5349 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5350elif test "$ARCH" = "s390x" ; then
5351 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005352elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005353 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005354elif test "$ARCH" = "ppc64" ; then
5355 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005356else
5357 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5358fi
5359QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5360
Juan Quintela98ec69a2009-07-16 18:34:18 +02005361echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005362echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005363echo "MAKE=$make" >> $config_host_mak
5364echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005365echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5366echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005367if test -n "$libtool"; then
5368 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5369 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5370else
5371 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5372 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5373fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005374echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005375echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005376if $iasl -h > /dev/null 2>&1; then
5377 echo "IASL=$iasl" >> $config_host_mak
5378fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005379echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005380echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005381echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005382echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005383echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005384echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005385echo "AS=$as" >> $config_host_mak
5386echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005387echo "OBJCOPY=$objcopy" >> $config_host_mak
5388echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005389echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005390echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005391echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005392echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005393echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005394echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005395echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005396if test "$sparse" = "yes" ; then
5397 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005398 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005399 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005400 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5401 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5402fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005403if test "$cross_prefix" != ""; then
5404 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5405else
5406 echo "AUTOCONF_HOST := " >> $config_host_mak
5407fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005408echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005409echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005410echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005411echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005412echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005413echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005414echo "DSOSUF=$DSOSUF" >> $config_host_mak
5415echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005416echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005417echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5418echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005419echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005420echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005421if test "$gcov" = "yes" ; then
5422 echo "CONFIG_GCOV=y" >> $config_host_mak
5423 echo "GCOV=$gcov_tool" >> $config_host_mak
5424fi
Juan Quintela804edf22009-07-27 16:12:49 +02005425
Peter Maydell6efd7512011-11-30 11:59:04 +00005426# use included Linux headers
5427if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005428 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005429 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005430 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005431 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005432 ;;
5433 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005434 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005435 ;;
5436 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005437 linux_arch=s390
5438 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005439 aarch64)
5440 linux_arch=arm64
5441 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005442 mips64)
5443 linux_arch=mips
5444 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005445 *)
5446 # For most CPUs the kernel architecture name and QEMU CPU name match.
5447 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005448 ;;
5449 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005450 # For non-KVM architectures we will not have asm headers
5451 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5452 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5453 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005454fi
5455
bellard1d14ffa2005-10-30 18:58:22 +00005456for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005457target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005458config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005459target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005460target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005461
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005462case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005463 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
Juan Quintelaea2d6a32009-07-16 18:34:10 +02005464 target_bigendian=yes
5465 ;;
5466esac
bellard97a847b2003-08-10 21:36:04 +00005467target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005468target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005469target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005470target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005471case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005472 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005473 target_softmmu="yes"
5474 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005475 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005476 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005477 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005478 fi
pbrook9e407a82007-05-26 16:38:53 +00005479 target_user_only="yes"
5480 target_linux_user="yes"
5481 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005482 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005483 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005484 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005485 fi
blueswir184778502008-10-26 20:33:16 +00005486 target_user_only="yes"
5487 target_bsd_user="yes"
5488 ;;
pbrook9e407a82007-05-26 16:38:53 +00005489 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005490 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005491 exit 1
5492 ;;
5493esac
ths831b7822007-01-18 20:06:33 +00005494
bellard97a847b2003-08-10 21:36:04 +00005495mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005496echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005497
pbrooke5fe0c52006-06-11 13:32:59 +00005498bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005499interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005500gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005501
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005502TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005503TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005504TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005505
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005506case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005507 i386)
aurel322408a522008-04-20 20:19:44 +00005508 ;;
5509 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005510 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005511 ;;
5512 alpha)
aurel322408a522008-04-20 20:19:44 +00005513 ;;
5514 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005515 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005516 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005517 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005518 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005519 aarch64)
5520 TARGET_BASE_ARCH=arm
5521 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005522 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
Alexander Graf6a49fa92013-09-03 20:12:22 +01005523 ;;
aurel322408a522008-04-20 20:19:44 +00005524 cris)
aurel322408a522008-04-20 20:19:44 +00005525 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005526 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005527 ;;
aurel322408a522008-04-20 20:19:44 +00005528 m68k)
aurel322408a522008-04-20 20:19:44 +00005529 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005530 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005531 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005532 microblaze|microblazeel)
5533 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005534 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005535 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005536 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005537 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005538 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005539 ;;
5540 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005541 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005542 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005543 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005544 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005545 ;;
5546 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005547 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005548 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005549 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005550 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005551 moxie)
5552 ;;
Jia Liue67db062012-07-20 15:50:39 +08005553 or32)
5554 TARGET_ARCH=openrisc
5555 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005556 ;;
aurel322408a522008-04-20 20:19:44 +00005557 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005558 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005559 ;;
5560 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005561 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005562 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005563 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005564 ;;
5565 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005566 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005567 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005568 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005569 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005570 ppc64le)
5571 TARGET_ARCH=ppc64
5572 TARGET_BASE_ARCH=ppc
5573 TARGET_ABI_DIR=ppc
5574 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5575 ;;
aurel322408a522008-04-20 20:19:44 +00005576 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005577 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005578 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005579 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005580 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005581 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005582 ;;
5583 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005584 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005585 bflt="yes"
5586 ;;
5587 sparc)
aurel322408a522008-04-20 20:19:44 +00005588 ;;
5589 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005590 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005591 ;;
5592 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005593 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005594 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005595 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005596 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005597 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005598 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005599 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01005600 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005601 tilegx)
5602 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005603 tricore)
5604 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005605 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005606 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005607 xtensa|xtensaeb)
5608 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005609 ;;
aurel322408a522008-04-20 20:19:44 +00005610 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005611 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005612 ;;
5613esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005614# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5615if [ "$TARGET_BASE_ARCH" = "" ]; then
5616 TARGET_BASE_ARCH=$TARGET_ARCH
5617fi
5618
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005619symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5620
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005621upper() {
5622 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5623}
5624
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005625target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005626echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005627echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005628echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005629if [ "$TARGET_ABI_DIR" = "" ]; then
5630 TARGET_ABI_DIR=$TARGET_ARCH
5631fi
Juan Quintela25be2102009-10-07 02:41:00 +02005632echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005633if [ "$HOST_VARIANT_DIR" != "" ]; then
5634 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5635fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005636case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005637 i386|x86_64)
5638 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005639 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005640 if test "$xen_pci_passthrough" = yes; then
5641 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5642 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005643 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005644 ;;
5645 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005646esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005647case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005648 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005649 # Make sure the target and host cpus are compatible
5650 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005651 \( "$target_name" = "$cpu" -o \
5652 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5653 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5654 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5655 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005656 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005657 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005658 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5659 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5660 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005661 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005662 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005663 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5664 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005665 fi
5666esac
bellardde83cd02003-06-15 20:25:43 +00005667if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005668 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005669fi
5670if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005671 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005672fi
bellard997344f2003-10-27 21:10:39 +00005673if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005674 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005675 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005676fi
ths831b7822007-01-18 20:06:33 +00005677if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005678 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005679fi
pbrook56aebc82008-10-11 17:55:29 +00005680list=""
5681if test ! -z "$gdb_xml_files" ; then
5682 for x in $gdb_xml_files; do
5683 list="$list $source_path/gdb-xml/$x"
5684 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005685 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005686fi
bellardde83cd02003-06-15 20:25:43 +00005687
pbrooke5fe0c52006-06-11 13:32:59 +00005688if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005689 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005690fi
blueswir184778502008-10-26 20:33:16 +00005691if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005692 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005693fi
bellard5b0753e2005-03-01 21:37:28 +00005694
Juan Quintela4afddb52009-08-03 14:46:45 +02005695# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005696
Juan Quintela4afddb52009-08-03 14:46:45 +02005697cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005698ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005699
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005700disas_config() {
5701 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5702 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5703}
5704
Juan Quintela64656022009-08-03 14:46:53 +02005705for i in $ARCH $TARGET_BASE_ARCH ; do
5706 case "$i" in
5707 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005708 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005709 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005710 aarch64)
5711 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005712 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005713 fi
5714 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005715 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005716 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005717 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005718 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005719 fi
Juan Quintela64656022009-08-03 14:46:53 +02005720 ;;
5721 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005722 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005723 ;;
5724 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005725 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005726 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005727 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005728 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005729 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005730 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005731 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005732 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005733 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005734 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005735 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005736 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005737 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005738 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005739 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005740 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005741 ;;
5742 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005743 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005744 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005745 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005746 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005747 ;;
Jia Liue67db062012-07-20 15:50:39 +08005748 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005749 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005750 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005751 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005752 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005753 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005754 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005755 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005756 ;;
5757 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005758 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005759 ;;
5760 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005761 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005762 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005763 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005764 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005765 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005766 esac
5767done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005768if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005769 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005770fi
Juan Quintela64656022009-08-03 14:46:53 +02005771
Juan Quintela6ee71262009-08-03 14:46:47 +02005772case "$ARCH" in
5773alpha)
5774 # Ensure there's only a single GP
5775 cflags="-msmall-data $cflags"
5776;;
5777esac
5778
Juan Quintelad02c1db2009-08-03 14:46:50 +02005779if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005780 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005781 if test "$target_linux_user" = "yes" ; then
5782 cflags="-p $cflags"
5783 ldflags="-p $ldflags"
5784 fi
5785 if test "$target_softmmu" = "yes" ; then
5786 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005787 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005788 fi
5789fi
5790
Juan Quintela9b8e1112009-08-03 14:46:46 +02005791if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005792 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005793fi
Juan Quintelafa282482009-07-22 22:37:39 +02005794
Juan Quintela25be2102009-10-07 02:41:00 +02005795echo "LDFLAGS+=$ldflags" >> $config_target_mak
5796echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005797
bellard97a847b2003-08-10 21:36:04 +00005798done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005799
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005800if [ "$pixman" = "internal" ]; then
5801 echo "config-host.h: subdir-pixman" >> $config_host_mak
5802fi
5803
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005804if [ "$dtc_internal" = "yes" ]; then
5805 echo "config-host.h: subdir-dtc" >> $config_host_mak
5806fi
5807
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005808if test "$numa" = "yes"; then
5809 echo "CONFIG_NUMA=y" >> $config_host_mak
5810fi
5811
John Snowfd0e6052015-03-25 18:57:39 -04005812if test "$ccache_cpp2" = "yes"; then
5813 echo "export CCACHE_CPP2=y" >> $config_host_mak
5814fi
5815
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005816# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005817DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
Michael Tokarev2b170ef2013-10-21 12:33:58 +04005818DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005819DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005820DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005821DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005822FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5823FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005824FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005825FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005826FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005827FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005828FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005829FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005830for bios_file in \
5831 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005832 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005833 $source_path/pc-bios/*.rom \
5834 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005835 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005836 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005837 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005838 $source_path/pc-bios/palcode-*
5839do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005840 FILES="$FILES pc-bios/`basename $bios_file`"
5841done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005842for test_file in `find $source_path/tests/acpi-test-data -type f`
5843do
5844 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5845done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005846mkdir -p $DIRS
5847for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005848 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005849 symlink "$source_path/$f" "$f"
5850 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005851done
Paul Brook1ad21342009-05-19 16:17:58 +01005852
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005853# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005854for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005855 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005856 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005857 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005858 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005859 echo "CC=$cc" >> $config_mak
5860 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005861 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005862 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005863 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005864 echo "LD=$ld" >> $config_mak
5865done
5866
Max Reitz76c75602014-05-24 23:24:56 +02005867# set up qemu-iotests in this build directory
5868iotests_common_env="tests/qemu-iotests/common.env"
5869iotests_check="tests/qemu-iotests/check"
5870
5871echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5872echo >> "$iotests_common_env"
5873echo "export PYTHON='$python'" >> "$iotests_common_env"
5874
5875if [ ! -e "$iotests_check" ]; then
5876 symlink "$source_path/$iotests_check" "$iotests_check"
5877fi
5878
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005879# Save the configure command line for later reuse.
5880cat <<EOD >config.status
5881#!/bin/sh
5882# Generated by configure.
5883# Run this file to recreate the current configuration.
5884# Compiler output produced by configure, useful for debugging
5885# configure, is in config.log if it exists.
5886EOD
5887printf "exec" >>config.status
5888printf " '%s'" "$0" "$@" >>config.status
5889echo >>config.status
5890chmod +x config.status
5891
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005892rm -r "$TMPDIR1"