blob: 42e57c0b9b56f52640654aa5909d7d3da3d2f91d [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 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200794 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000795 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000796 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000797 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200798 --enable-trace-backends=*) trace_backends="$optarg"
799 ;;
800 # XXX: backwards compatibility
801 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100802 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100803 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100804 ;;
bellard7d132992003-03-06 23:23:54 +0000805 --enable-gprof) gprof="yes"
806 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000807 --enable-gcov) gcov="yes"
808 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100809 --static)
810 static="yes"
811 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300812 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000813 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200814 --mandir=*) mandir="$optarg"
815 ;;
816 --bindir=*) bindir="$optarg"
817 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300818 --libdir=*) libdir="$optarg"
819 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400820 --libexecdir=*) libexecdir="$optarg"
821 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200822 --includedir=*) includedir="$optarg"
823 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300824 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200825 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300826 --with-confsuffix=*) confsuffix="$optarg"
827 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300828 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200829 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100830 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600831 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300832 --localstatedir=*) local_statedir="$optarg"
833 ;;
834 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400835 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
836 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
837 # These switches are silently ignored, for compatibility with
838 # autoconf-generated configure scripts. This allows QEMU's
839 # configure to be used by RPM and similar macros that set
840 # lots of directory switches by default.
841 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200842 --with-system-pixman) pixman="system"
843 ;;
844 --without-system-pixman) pixman="internal"
845 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100846 --without-pixman) pixman="none"
847 ;;
bellard97a847b2003-08-10 21:36:04 +0000848 --disable-sdl) sdl="no"
849 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200850 --enable-sdl) sdl="yes"
851 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000852 --with-sdlabi=*) sdlabi="$optarg"
853 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200854 --disable-qom-cast-debug) qom_cast_debug="no"
855 ;;
856 --enable-qom-cast-debug) qom_cast_debug="yes"
857 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530858 --disable-virtfs) virtfs="no"
859 ;;
860 --enable-virtfs) virtfs="yes"
861 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100862 --disable-vnc) vnc="no"
863 ;;
864 --enable-vnc) vnc="yes"
865 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000866 --oss-lib=*) oss_lib="$optarg"
867 ;;
malc0c58ac12008-06-25 21:04:05 +0000868 --audio-drv-list=*) audio_drv_list="$optarg"
869 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800870 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
871 ;;
872 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100873 ;;
aurel32f8393942009-04-13 18:45:38 +0000874 --enable-debug-tcg) debug_tcg="yes"
875 ;;
876 --disable-debug-tcg) debug_tcg="no"
877 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100878 --enable-debug)
879 # Enable debugging options that aren't excessively noisy
880 debug_tcg="yes"
881 debug="yes"
882 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500883 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100884 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000885 --enable-sparse) sparse="yes"
886 ;;
887 --disable-sparse) sparse="no"
888 ;;
aliguori1625af82009-04-05 17:41:02 +0000889 --disable-strip) strip_opt="no"
890 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000891 --disable-vnc-sasl) vnc_sasl="no"
892 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200893 --enable-vnc-sasl) vnc_sasl="yes"
894 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200895 --disable-vnc-jpeg) vnc_jpeg="no"
896 ;;
897 --enable-vnc-jpeg) vnc_jpeg="yes"
898 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200899 --disable-vnc-png) vnc_png="no"
900 ;;
901 --enable-vnc-png) vnc_png="yes"
902 ;;
bellard443f1372004-06-04 11:13:20 +0000903 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000904 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200905 --disable-uuid) uuid="no"
906 ;;
907 --enable-uuid) uuid="yes"
908 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000909 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000910 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200911 --enable-vde) vde="yes"
912 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100913 --disable-netmap) netmap="no"
914 ;;
915 --enable-netmap) netmap="yes"
916 ;;
aliguorie37630c2009-04-22 15:19:10 +0000917 --disable-xen) xen="no"
918 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200919 --enable-xen) xen="yes"
920 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000921 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
922 ;;
923 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
924 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000925 --disable-brlapi) brlapi="no"
926 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200927 --enable-brlapi) brlapi="yes"
928 ;;
balrogfb599c92008-09-28 23:49:55 +0000929 --disable-bluez) bluez="no"
930 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200931 --enable-bluez) bluez="yes"
932 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000933 --disable-kvm) kvm="no"
934 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200935 --enable-kvm) kvm="yes"
936 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200937 --disable-tcg-interpreter) tcg_interpreter="no"
938 ;;
939 --enable-tcg-interpreter) tcg_interpreter="yes"
940 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500941 --disable-cap-ng) cap_ng="no"
942 ;;
943 --enable-cap-ng) cap_ng="yes"
944 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100945 --disable-spice) spice="no"
946 ;;
947 --enable-spice) spice="yes"
948 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100949 --disable-libiscsi) libiscsi="no"
950 ;;
951 --enable-libiscsi) libiscsi="yes"
952 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100953 --disable-libnfs) libnfs="no"
954 ;;
955 --enable-libnfs) libnfs="yes"
956 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000957 --enable-profiler) profiler="yes"
958 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400959 --disable-cocoa) cocoa="no"
960 ;;
malcc2de5c92008-06-28 19:13:06 +0000961 --enable-cocoa)
962 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000963 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000964 ;;
pbrookcad25d62006-03-19 16:31:11 +0000965 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000966 ;;
pbrookcad25d62006-03-19 16:31:11 +0000967 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000968 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000969 --disable-user)
970 linux_user="no" ;
971 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000972 ;;
973 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000974 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000975 ;;
ths831b7822007-01-18 20:06:33 +0000976 --enable-linux-user) linux_user="yes"
977 ;;
blueswir184778502008-10-26 20:33:16 +0000978 --disable-bsd-user) bsd_user="no"
979 ;;
980 --enable-bsd-user) bsd_user="yes"
981 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200982 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300983 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200984 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300985 ;;
bellard85aa5182007-11-11 20:17:03 +0000986 --enable-werror) werror="yes"
987 ;;
988 --disable-werror) werror="no"
989 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100990 --enable-stack-protector) stack_protector="yes"
991 ;;
992 --disable-stack-protector) stack_protector="no"
993 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000994 --disable-curses) curses="no"
995 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200996 --enable-curses) curses="yes"
997 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200998 --disable-curl) curl="no"
999 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001000 --enable-curl) curl="yes"
1001 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001002 --disable-fdt) fdt="no"
1003 ;;
1004 --enable-fdt) fdt="yes"
1005 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001006 --disable-linux-aio) linux_aio="no"
1007 ;;
1008 --enable-linux-aio) linux_aio="yes"
1009 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001010 --disable-attr) attr="no"
1011 ;;
1012 --enable-attr) attr="yes"
1013 ;;
ths77755342008-11-27 15:45:16 +00001014 --disable-blobs) blobs="no"
1015 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001016 --with-pkgversion=*) pkgversion=" ($optarg)"
1017 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001018 --with-coroutine=*) coroutine="$optarg"
1019 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001020 --disable-coroutine-pool) coroutine_pool="no"
1021 ;;
1022 --enable-coroutine-pool) coroutine_pool="yes"
1023 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001024 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001025 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001026 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001027 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001028 --disable-vhost-net) vhost_net="no"
1029 ;;
1030 --enable-vhost-net) vhost_net="yes"
1031 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001032 --disable-vhost-scsi) vhost_scsi="no"
1033 ;;
1034 --enable-vhost-scsi) vhost_scsi="yes"
1035 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001036 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001037 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001038 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001039 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001040 --disable-rbd) rbd="no"
1041 ;;
1042 --enable-rbd) rbd="yes"
1043 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001044 --disable-xfsctl) xfs="no"
1045 ;;
1046 --enable-xfsctl) xfs="yes"
1047 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001048 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001049 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001050 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001051 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001052 --disable-libusb) libusb="no"
1053 ;;
1054 --enable-libusb) libusb="yes"
1055 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001056 --disable-usb-redir) usb_redir="no"
1057 ;;
1058 --enable-usb-redir) usb_redir="yes"
1059 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001060 --disable-zlib-test) zlib="no"
1061 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001062 --disable-lzo) lzo="no"
1063 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001064 --enable-lzo) lzo="yes"
1065 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001066 --disable-snappy) snappy="no"
1067 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001068 --enable-snappy) snappy="yes"
1069 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001070 --disable-bzip2) bzip2="no"
1071 ;;
1072 --enable-bzip2) bzip2="yes"
1073 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001074 --enable-guest-agent) guest_agent="yes"
1075 ;;
1076 --disable-guest-agent) guest_agent="no"
1077 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001078 --enable-guest-agent-msi) guest_agent_msi="yes"
1079 ;;
1080 --disable-guest-agent-msi) guest_agent_msi="no"
1081 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001082 --with-vss-sdk) vss_win32_sdk=""
1083 ;;
1084 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1085 ;;
1086 --without-vss-sdk) vss_win32_sdk="no"
1087 ;;
1088 --with-win-sdk) win_sdk=""
1089 ;;
1090 --with-win-sdk=*) win_sdk="$optarg"
1091 ;;
1092 --without-win-sdk) win_sdk="no"
1093 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001094 --enable-tools) want_tools="yes"
1095 ;;
1096 --disable-tools) want_tools="no"
1097 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001098 --enable-seccomp) seccomp="yes"
1099 ;;
1100 --disable-seccomp) seccomp="no"
1101 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301102 --disable-glusterfs) glusterfs="no"
1103 ;;
1104 --enable-glusterfs) glusterfs="yes"
1105 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001106 --disable-archipelago) archipelago="no"
1107 ;;
1108 --enable-archipelago) archipelago="yes"
1109 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001110 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1111 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001112 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001113 --disable-gtk) gtk="no"
1114 ;;
1115 --enable-gtk) gtk="yes"
1116 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001117 --disable-gnutls) gnutls="no"
1118 ;;
1119 --enable-gnutls) gnutls="yes"
1120 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001121 --disable-nettle) nettle="no"
1122 ;;
1123 --enable-nettle) nettle="yes"
1124 ;;
1125 --disable-gcrypt) gcrypt="no"
1126 ;;
1127 --enable-gcrypt) gcrypt="yes"
1128 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001129 --enable-rdma) rdma="yes"
1130 ;;
1131 --disable-rdma) rdma="no"
1132 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001133 --with-gtkabi=*) gtkabi="$optarg"
1134 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001135 --disable-vte) vte="no"
1136 ;;
1137 --enable-vte) vte="yes"
1138 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001139 --disable-virglrenderer) virglrenderer="no"
1140 ;;
1141 --enable-virglrenderer) virglrenderer="yes"
1142 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001143 --disable-tpm) tpm="no"
1144 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001145 --enable-tpm) tpm="yes"
1146 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001147 --disable-libssh2) libssh2="no"
1148 ;;
1149 --enable-libssh2) libssh2="yes"
1150 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001151 --enable-vhdx) vhdx="yes"
1152 ;;
1153 --disable-vhdx) vhdx="no"
1154 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001155 --disable-numa) numa="no"
1156 ;;
1157 --enable-numa) numa="yes"
1158 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001159 --disable-tcmalloc) tcmalloc="no"
1160 ;;
1161 --enable-tcmalloc) tcmalloc="yes"
1162 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001163 --disable-jemalloc) jemalloc="no"
1164 ;;
1165 --enable-jemalloc) jemalloc="yes"
1166 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001167 *)
1168 echo "ERROR: unknown option $opt"
1169 echo "Try '$0 --help' for more information"
1170 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001171 ;;
bellard7d132992003-03-06 23:23:54 +00001172 esac
1173done
1174
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001175if ! has $python; then
1176 error_exit "Python not found. Use --python=/path/to/python"
1177fi
1178
1179# Note that if the Python conditional here evaluates True we will exit
1180# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001181if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1182 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001183 "Note that Python 3 or later is not yet supported." \
1184 "Use --python=/path/to/python to specify a supported Python."
1185fi
1186
Markus Armbrusterfec21032015-09-04 21:53:03 +02001187# Suppress writing compiled files
1188python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001189
bellard40293e52008-01-31 11:32:10 +00001190case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001191 ppc)
1192 CPU_CFLAGS="-m32"
1193 LDFLAGS="-m32 $LDFLAGS"
1194 ;;
1195 ppc64)
1196 CPU_CFLAGS="-m64"
1197 LDFLAGS="-m64 $LDFLAGS"
1198 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001199 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001200 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001201 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001202 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001203 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001204 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001205 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001206 ;;
ths76d83bd2007-11-18 21:22:10 +00001207 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001208 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001209 LDFLAGS="-m31 $LDFLAGS"
1210 ;;
1211 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001212 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001213 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001214 ;;
bellard40293e52008-01-31 11:32:10 +00001215 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001216 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001217 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001218 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001219 ;;
1220 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001221 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001222 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001223 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001224 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001225 x32)
1226 CPU_CFLAGS="-mx32"
1227 LDFLAGS="-mx32 $LDFLAGS"
1228 cc_i386='$(CC) -m32'
1229 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001230 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001231esac
1232
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001233QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1234EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1235
Peter Maydell60e0df22011-05-03 14:50:13 +01001236default_target_list=""
1237
Peter Maydell6e92f822013-05-20 16:16:15 +01001238mak_wilds=""
1239
1240if [ "$softmmu" = "yes" ]; then
1241 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001242fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001243if [ "$linux_user" = "yes" ]; then
1244 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001245fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001246if [ "$bsd_user" = "yes" ]; then
1247 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001248fi
1249
Peter Maydell6e92f822013-05-20 16:16:15 +01001250for config in $mak_wilds; do
1251 default_target_list="${default_target_list} $(basename "$config" .mak)"
1252done
1253
pbrookaf5db582006-04-08 14:26:41 +00001254if test x"$show_help" = x"yes" ; then
1255cat << EOF
1256
1257Usage: configure [options]
1258Options: [defaults in brackets after descriptions]
1259
Stefan Weil08fb77e2013-12-18 22:09:39 +01001260Standard options:
1261 --help print this message
1262 --prefix=PREFIX install in PREFIX [$prefix]
1263 --interp-prefix=PREFIX where to find shared libraries, etc.
1264 use %M for cpu name [$interp_prefix]
1265 --target-list=LIST set target list (default: build everything)
1266$(echo Available targets: $default_target_list | \
1267 fold -s -w 53 | sed -e 's/^/ /')
1268
1269Advanced options (experts only):
1270 --source-path=PATH path of source code [$source_path]
1271 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1272 --cc=CC use C compiler CC [$cc]
1273 --iasl=IASL use ACPI compiler IASL [$iasl]
1274 --host-cc=CC use C compiler CC [$host_cc] for code run at
1275 build time
1276 --cxx=CXX use C++ compiler CXX [$cxx]
1277 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1278 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1279 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1280 --make=MAKE use specified make [$make]
1281 --install=INSTALL use specified install [$install]
1282 --python=PYTHON use specified python [$python]
1283 --smbd=SMBD use specified smbd [$smbd]
1284 --static enable static build [$static]
1285 --mandir=PATH install man pages in PATH
1286 --datadir=PATH install firmware in PATH$confsuffix
1287 --docdir=PATH install documentation in PATH$confsuffix
1288 --bindir=PATH install binaries in PATH
1289 --libdir=PATH install libraries in PATH
1290 --sysconfdir=PATH install config in PATH$confsuffix
1291 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001292 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001293 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001294 --disable-strip disable stripping binaries
1295 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001296 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001297 --audio-drv-list=LIST set audio drivers list:
1298 Available drivers: $audio_possible_drivers
1299 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1300 --block-drv-rw-whitelist=L
1301 set block driver read-write whitelist
1302 (affects only QEMU, not qemu-img)
1303 --block-drv-ro-whitelist=L
1304 set block driver read-only whitelist
1305 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001306 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001307 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1308 --with-trace-file=NAME Full PATH,NAME of file to store traces
1309 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001310 --disable-slirp disable SLIRP userspace network connectivity
1311 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1312 --oss-lib path to OSS library
1313 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001314 --with-coroutine=BACKEND coroutine backend. Supported options:
1315 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001316 --enable-gcov enable test coverage analysis with gcov
1317 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001318 --disable-blobs disable installing provided firmware blobs
1319 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1320 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1321
1322Optional features, enabled with --enable-FEATURE and
1323disabled with --disable-FEATURE, default is enabled if available:
1324
1325 system all system emulation targets
1326 user supported user emulation targets
1327 linux-user all linux usermode emulation targets
1328 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001329 docs build documentation
1330 guest-agent build the QEMU Guest Agent
1331 guest-agent-msi build guest agent Windows MSI installation package
1332 pie Position Independent Executables
1333 modules modules support
1334 debug-tcg TCG debugging (default is disabled)
1335 debug-info debugging information
1336 sparse sparse checker
1337
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001338 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001339 nettle nettle cryptography support
1340 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001341 sdl SDL UI
1342 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1343 gtk gtk UI
1344 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1345 vte vte support for the gtk UI
1346 curses curses UI
1347 vnc VNC UI support
1348 vnc-tls TLS encryption for VNC server
1349 vnc-sasl SASL encryption for VNC server
1350 vnc-jpeg JPEG lossy compression for VNC server
1351 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001352 cocoa Cocoa UI (Mac OS X only)
1353 virtfs VirtFS
1354 xen xen backend driver support
1355 xen-pci-passthrough
1356 brlapi BrlAPI (Braile)
1357 curl curl connectivity
1358 fdt fdt device tree
1359 bluez bluez stack connectivity
1360 kvm KVM acceleration support
1361 rdma RDMA-based migration support
1362 uuid uuid support
1363 vde support for vde network
1364 netmap support for netmap network
1365 linux-aio Linux AIO support
1366 cap-ng libcap-ng support
1367 attr attr and xattr support
1368 vhost-net vhost-net acceleration support
1369 spice spice
1370 rbd rados block device (rbd)
1371 libiscsi iscsi support
1372 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001373 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001374 libusb libusb (for usb passthrough)
1375 usb-redir usb network redirection support
1376 lzo support of lzo compression library
1377 snappy support of snappy compression library
1378 bzip2 support of bzip2 compression library
1379 (for reading bzip2-compressed dmg images)
1380 seccomp seccomp support
1381 coroutine-pool coroutine freelist (better performance)
1382 glusterfs GlusterFS backend
1383 archipelago Archipelago backend
1384 tpm TPM support
1385 libssh2 ssh block device support
1386 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001387 numa libnuma support
1388 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001389 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001390
1391NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001392EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001393exit 0
pbrookaf5db582006-04-08 14:26:41 +00001394fi
1395
Peter Maydell359bc952011-12-24 13:07:25 +00001396# Now we have handled --enable-tcg-interpreter and know we're not just
1397# printing the help message, bail out if the host CPU isn't supported.
1398if test "$ARCH" = "unknown"; then
1399 if test "$tcg_interpreter" = "yes" ; then
1400 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1401 ARCH=tci
1402 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001403 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001404 fi
1405fi
1406
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001407# Consult white-list to determine whether to enable werror
1408# by default. Only enable by default for git builds
1409z_version=`cut -f3 -d. $source_path/VERSION`
1410
1411if test -z "$werror" ; then
1412 if test -d "$source_path/.git" -a \
1413 "$linux" = "yes" ; then
1414 werror="yes"
1415 else
1416 werror="no"
1417 fi
1418fi
1419
Paolo Bonzini8d050952010-12-23 11:43:52 +01001420# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001421write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001422if compile_object ; then
1423 : C compiler works ok
1424else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001425 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001426fi
1427
Peter Maydell98b21dc2014-02-20 15:10:16 +00001428# Check that the C++ compiler exists and works with the C compiler
1429if has $cxx; then
1430 cat > $TMPC <<EOF
1431int c_function(void);
1432int main(void) { return c_function(); }
1433EOF
1434
1435 compile_object
1436
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001437 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001438extern "C" {
1439 int c_function(void);
1440}
1441int c_function(void) { return 42; }
1442EOF
1443
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001444 update_cxxflags
1445
1446 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001447 # C++ compiler $cxx works ok with C compiler $cc
1448 :
1449 else
1450 echo "C++ compiler $cxx does not work with C compiler $cc"
1451 echo "Disabling C++ specific optional code"
1452 cxx=
1453 fi
1454else
1455 echo "No C++ compiler available; disabling C++ specific optional code"
1456 cxx=
1457fi
1458
Paolo Bonzini8d050952010-12-23 11:43:52 +01001459gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1460gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1461gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001462gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001463gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001464gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001465# Note that we do not add -Werror to gcc_flags here, because that would
1466# enable it for all configure tests. If a configure test failed due
1467# to -Werror this would just silently disable some features,
1468# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001469
1470cc_has_warning_flag() {
1471 write_c_skeleton;
1472
Peter Maydella1d29d62012-10-27 22:19:07 +01001473 # Use the positive sense of the flag when testing for -Wno-wombat
1474 # support (gcc will happily accept the -Wno- form of unknown
1475 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001476 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1477 compile_prog "-Werror $optflag" ""
1478}
1479
1480for flag in $gcc_flags; do
1481 if cc_has_warning_flag $flag ; then
1482 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001483 fi
1484done
1485
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001486if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001487 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001488 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001489 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001490 # We need to check both a compile and a link, since some compiler
1491 # setups fail only on a .c->.o compile and some only at link time
1492 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1493 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001494 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1495 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001496 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001497 break
1498 fi
1499 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001500 if test "$stack_protector" = yes; then
1501 if test $sp_on = 0; then
1502 error_exit "Stack protector not supported"
1503 fi
1504 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001505fi
1506
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001507# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1508# large functions that use global variables. The bug is in all releases of
1509# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1510# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1511cat > $TMPC << EOF
1512#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1513int main(void) { return 0; }
1514#else
1515#error No bug in this compiler.
1516#endif
1517EOF
1518if compile_prog "-Werror -fno-gcse" "" ; then
1519 TRANSLATE_OPT_CFLAGS=-fno-gcse
1520fi
1521
Avi Kivity40d64442011-11-15 20:12:17 +02001522if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001523 if test "$modules" = "yes" ; then
1524 error_exit "static and modules are mutually incompatible"
1525 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001526 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001527 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001528 else
1529 pie="no"
1530 fi
1531fi
1532
Emilio G. Cota768b7852015-04-29 13:09:02 +02001533# Unconditional check for compiler __thread support
1534 cat > $TMPC << EOF
1535static __thread int tls_var;
1536int main(void) { return tls_var; }
1537EOF
1538
1539if ! compile_prog "-Werror" "" ; then
1540 error_exit "Your compiler does not support the __thread specifier for " \
1541 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1542fi
1543
Avi Kivity40d64442011-11-15 20:12:17 +02001544if test "$pie" = ""; then
1545 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001546 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001547 ;;
1548 *)
1549 pie="no"
1550 ;;
1551 esac
1552fi
1553
1554if test "$pie" != "no" ; then
1555 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001556
1557#ifdef __linux__
1558# define THREAD __thread
1559#else
1560# define THREAD
1561#endif
1562
1563static THREAD int tls_var;
1564
1565int main(void) { return tls_var; }
1566
Avi Kivity40d64442011-11-15 20:12:17 +02001567EOF
1568 if compile_prog "-fPIE -DPIE" "-pie"; then
1569 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1570 LDFLAGS="-pie $LDFLAGS"
1571 pie="yes"
1572 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1573 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1574 fi
1575 else
1576 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001577 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001578 else
1579 echo "Disabling PIE due to missing toolchain support"
1580 pie="no"
1581 fi
1582 fi
Brad46eef332013-12-10 19:49:08 -05001583
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001584 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001585 CFLAGS_NOPIE="-fno-pie"
1586 LDFLAGS_NOPIE="-nopie"
1587 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001588fi
1589
Don Slutz66518bf2014-01-02 21:12:46 -05001590# check for broken gcc and libtool in RHEL5
1591if test -n "$libtool" -a "$pie" != "no" ; then
1592 cat > $TMPC <<EOF
1593
1594void *f(unsigned char *buf, int len);
1595void *g(unsigned char *buf, int len);
1596
1597void *
1598f(unsigned char *buf, int len)
1599{
1600 return (void*)0L;
1601}
1602
1603void *
1604g(unsigned char *buf, int len)
1605{
1606 return f(buf, len);
1607}
1608
1609EOF
1610 if ! libtool_prog; then
1611 echo "Disabling libtool due to broken toolchain support"
1612 libtool=
1613 fi
1614fi
1615
Paolo Bonzini09dada42013-04-17 16:26:47 +02001616##########################################
1617# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1618# use i686 as default anyway, but for those that don't, an explicit
1619# specification is necessary
1620
1621if test "$cpu" = "i386"; then
1622 cat > $TMPC << EOF
1623static int sfaa(int *ptr)
1624{
1625 return __sync_fetch_and_and(ptr, 0);
1626}
1627
1628int main(void)
1629{
1630 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001631 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001632 sfaa(&val);
1633 return val;
1634}
1635EOF
1636 if ! compile_prog "" "" ; then
1637 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1638 fi
1639fi
1640
1641#########################################
bellardec530c82006-04-25 22:36:06 +00001642# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001643
bellardec530c82006-04-25 22:36:06 +00001644if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001645 if has $install; then
1646 :
1647 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001648 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1649 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1650 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001651 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001652 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001653 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1654 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1655 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001656 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001657 if has ar; then
1658 :
1659 else
bellardec530c82006-04-25 22:36:06 +00001660 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001661 error_exit "No path includes ar" \
1662 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001663 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001664 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001665 fi
ths5fafdf22007-09-16 21:08:06 +00001666fi
bellardec530c82006-04-25 22:36:06 +00001667
Stefan Weilafb63eb2012-09-26 22:04:38 +02001668if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001669 target_list="$default_target_list"
1670else
1671 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001672fi
Peter Maydell25b48332013-05-20 16:16:16 +01001673
1674# Check that we recognised the target name; this allows a more
1675# friendly error message than if we let it fall through.
1676for target in $target_list; do
1677 case " $default_target_list " in
1678 *" $target "*)
1679 ;;
1680 *)
1681 error_exit "Unknown target name '$target'"
1682 ;;
1683 esac
1684done
1685
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001686# see if system emulation was really requested
1687case " $target_list " in
1688 *"-softmmu "*) softmmu=yes
1689 ;;
1690 *) softmmu=no
1691 ;;
1692esac
bellard5327cf42005-01-10 23:18:50 +00001693
Juan Quintela249247c2009-08-12 18:20:25 +02001694feature_not_found() {
1695 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001696 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001697
Peter Maydell76ad07a2013-04-08 12:11:26 +01001698 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001699 "configure was not able to find it." \
1700 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001701}
1702
bellard7d132992003-03-06 23:23:54 +00001703# ---
1704# big/little endian test
1705cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001706short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1707short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1708extern int foo(short *, short *);
1709int main(int argc, char *argv[]) {
1710 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001711}
1712EOF
1713
Mike Frysinger61cc9192013-06-30 23:30:18 -04001714if compile_object ; then
1715 if grep -q BiGeNdIaN $TMPO ; then
1716 bigendian="yes"
1717 elif grep -q LiTtLeEnDiAn $TMPO ; then
1718 bigendian="no"
1719 else
1720 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001721 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001722else
1723 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001724fi
1725
Juan Quintelab0a47e72009-08-12 18:29:49 +02001726##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001727# cocoa implies not SDL or GTK
1728# (the cocoa UI code currently assumes it is always the active UI
1729# and doesn't interact well with other UI frontend code)
1730if test "$cocoa" = "yes"; then
1731 if test "$sdl" = "yes"; then
1732 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1733 fi
1734 if test "$gtk" = "yes"; then
1735 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1736 fi
1737 gtk=no
1738 sdl=no
1739fi
1740
1741##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001742# L2TPV3 probe
1743
1744cat > $TMPC <<EOF
1745#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001746#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001747int main(void) { return sizeof(struct mmsghdr); }
1748EOF
1749if compile_prog "" "" ; then
1750 l2tpv3=yes
1751else
1752 l2tpv3=no
1753fi
1754
1755##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001756# MinGW / Mingw-w64 localtime_r/gmtime_r check
1757
1758if test "$mingw32" = "yes"; then
1759 # Some versions of MinGW / Mingw-w64 lack localtime_r
1760 # and gmtime_r entirely.
1761 #
1762 # Some versions of Mingw-w64 define a macro for
1763 # localtime_r/gmtime_r.
1764 #
1765 # Some versions of Mingw-w64 will define functions
1766 # for localtime_r/gmtime_r, but only if you have
1767 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1768 # though, unistd.h and pthread.h both define
1769 # that for you.
1770 #
1771 # So this #undef localtime_r and #include <unistd.h>
1772 # are not in fact redundant.
1773cat > $TMPC << EOF
1774#include <unistd.h>
1775#include <time.h>
1776#undef localtime_r
1777int main(void) { localtime_r(NULL, NULL); return 0; }
1778EOF
1779 if compile_prog "" "" ; then
1780 localtime_r="yes"
1781 else
1782 localtime_r="no"
1783 fi
1784fi
1785
1786##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001787# pkg-config probe
1788
1789if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001790 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001791fi
1792
1793##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001794# NPTL probe
1795
Peter Maydell24cb36a2013-07-16 18:45:00 +01001796if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001797 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001798#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001799#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001800int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001801#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1802#error bork
1803#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001804 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001805}
1806EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001807 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001808 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001809 fi
pbrookbd0c5662008-05-29 14:34:11 +00001810fi
1811
bellard11d9f692004-04-02 20:55:59 +00001812##########################################
balrogac629222008-10-11 09:56:04 +00001813# zlib check
1814
Alon Levy1ece9902011-07-26 12:30:40 +03001815if test "$zlib" != "no" ; then
1816 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001817#include <zlib.h>
1818int main(void) { zlibVersion(); return 0; }
1819EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001820 if compile_prog "" "-lz" ; then
1821 :
1822 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001823 error_exit "zlib check failed" \
1824 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001825 fi
balrogac629222008-10-11 09:56:04 +00001826fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001827LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001828
1829##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001830# lzo check
1831
1832if test "$lzo" != "no" ; then
1833 cat > $TMPC << EOF
1834#include <lzo/lzo1x.h>
1835int main(void) { lzo_version(); return 0; }
1836EOF
1837 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001838 libs_softmmu="$libs_softmmu -llzo2"
1839 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001840 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001841 if test "$lzo" = "yes"; then
1842 feature_not_found "liblzo2" "Install liblzo2 devel"
1843 fi
1844 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001845 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001846fi
1847
1848##########################################
1849# snappy check
1850
1851if test "$snappy" != "no" ; then
1852 cat > $TMPC << EOF
1853#include <snappy-c.h>
1854int main(void) { snappy_max_compressed_length(4096); return 0; }
1855EOF
1856 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001857 libs_softmmu="$libs_softmmu -lsnappy"
1858 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001859 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001860 if test "$snappy" = "yes"; then
1861 feature_not_found "libsnappy" "Install libsnappy devel"
1862 fi
1863 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001864 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001865fi
1866
1867##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001868# bzip2 check
1869
1870if test "$bzip2" != "no" ; then
1871 cat > $TMPC << EOF
1872#include <bzlib.h>
1873int main(void) { BZ2_bzlibVersion(); return 0; }
1874EOF
1875 if compile_prog "" "-lbz2" ; then
1876 bzip2="yes"
1877 else
1878 if test "$bzip2" = "yes"; then
1879 feature_not_found "libbzip2" "Install libbzip2 devel"
1880 fi
1881 bzip2="no"
1882 fi
1883fi
1884
1885##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001886# libseccomp check
1887
1888if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001889 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1890 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001891 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001892 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001893 seccomp="yes"
1894 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001895 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001896 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001897 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001898 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001899 fi
1900fi
1901##########################################
aliguorie37630c2009-04-22 15:19:10 +00001902# xen probe
1903
Juan Quintelafc321b42009-08-12 18:29:55 +02001904if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001905 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001906
Stefan Weil50ced5b2011-12-17 09:27:39 +01001907 # First we test whether Xen headers and libraries are available.
1908 # If no, we are done and there is no Xen support.
1909 # If yes, more tests are run to detect the Xen version.
1910
1911 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001912 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001913#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001914int main(void) {
1915 return 0;
1916}
1917EOF
1918 if ! compile_prog "" "$xen_libs" ; then
1919 # Xen not found
1920 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001921 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001922 fi
1923 xen=no
1924
1925 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001926 elif
1927 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001928#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001929#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001930#include <stdint.h>
1931#include <xen/hvm/hvm_info_table.h>
1932#if !defined(HVM_MAX_VCPUS)
1933# error HVM_MAX_VCPUS not defined
1934#endif
1935int main(void) {
1936 xc_interface *xc;
1937 xs_daemon_open();
1938 xc = xc_interface_open(0, 0, 0);
1939 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1940 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001941 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001942 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001943 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04001944 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001945 return 0;
1946}
1947EOF
1948 compile_prog "" "$xen_libs"
1949 then
1950 xen_ctrl_version=460
1951 xen=yes
1952
1953 # Xen 4.5
1954 elif
1955 cat > $TMPC <<EOF &&
1956#include <xenctrl.h>
1957#include <xenstore.h>
1958#include <stdint.h>
1959#include <xen/hvm/hvm_info_table.h>
1960#if !defined(HVM_MAX_VCPUS)
1961# error HVM_MAX_VCPUS not defined
1962#endif
1963int main(void) {
1964 xc_interface *xc;
1965 xs_daemon_open();
1966 xc = xc_interface_open(0, 0, 0);
1967 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1968 xc_gnttab_open(NULL, 0);
1969 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1970 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001971 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1972 return 0;
1973}
1974EOF
1975 compile_prog "" "$xen_libs"
1976 then
1977 xen_ctrl_version=450
1978 xen=yes
1979
1980 elif
1981 cat > $TMPC <<EOF &&
1982#include <xenctrl.h>
1983#include <xenstore.h>
1984#include <stdint.h>
1985#include <xen/hvm/hvm_info_table.h>
1986#if !defined(HVM_MAX_VCPUS)
1987# error HVM_MAX_VCPUS not defined
1988#endif
1989int main(void) {
1990 xc_interface *xc;
1991 xs_daemon_open();
1992 xc = xc_interface_open(0, 0, 0);
1993 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1994 xc_gnttab_open(NULL, 0);
1995 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1996 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001997 return 0;
1998}
1999EOF
2000 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002001 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002002 xen_ctrl_version=420
2003 xen=yes
2004
Peter Maydell69deef02012-08-02 18:30:26 +01002005 elif
2006 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00002007#include <xenctrl.h>
2008#include <xs.h>
2009#include <stdint.h>
2010#include <xen/hvm/hvm_info_table.h>
2011#if !defined(HVM_MAX_VCPUS)
2012# error HVM_MAX_VCPUS not defined
2013#endif
2014int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00002015 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01002016 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002017 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2018 xc_gnttab_open(NULL, 0);
2019 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002020 return 0;
2021}
aliguorie37630c2009-04-22 15:19:10 +00002022EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01002023 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002024 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002025 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02002026 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002027
2028 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01002029 elif
2030 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002031#include <xenctrl.h>
2032#include <xs.h>
2033#include <stdint.h>
2034#include <xen/hvm/hvm_info_table.h>
2035#if !defined(HVM_MAX_VCPUS)
2036# error HVM_MAX_VCPUS not defined
2037#endif
2038int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01002039 struct xen_add_to_physmap xatp = {
2040 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2041 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002042 xs_daemon_open();
2043 xc_interface_open();
2044 xc_gnttab_open();
2045 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002046 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002047 return 0;
2048}
2049EOF
2050 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002051 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002052 xen_ctrl_version=400
2053 xen=yes
2054
Anthony PERARDb87de242011-05-24 14:34:20 +01002055 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002056 elif
2057 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002058#include <xenctrl.h>
2059#include <xs.h>
2060int main(void) {
2061 struct xen_add_to_physmap xatp = {
2062 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2063 };
2064 xs_daemon_open();
2065 xc_interface_open();
2066 xc_gnttab_open();
2067 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2068 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2069 return 0;
2070}
2071EOF
2072 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002073 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002074 xen_ctrl_version=340
2075 xen=yes
2076
2077 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002078 elif
2079 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002080#include <xenctrl.h>
2081#include <xs.h>
2082int main(void) {
2083 xs_daemon_open();
2084 xc_interface_open();
2085 xc_gnttab_open();
2086 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2087 return 0;
2088}
2089EOF
2090 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002091 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002092 xen_ctrl_version=330
2093 xen=yes
2094
Stefan Weil50ced5b2011-12-17 09:27:39 +01002095 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002096 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002097 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002098 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002099 fi
2100 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002101 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002102
2103 if test "$xen" = yes; then
2104 libs_softmmu="$xen_libs $libs_softmmu"
2105 fi
aliguorie37630c2009-04-22 15:19:10 +00002106fi
2107
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002108if test "$xen_pci_passthrough" != "no"; then
2109 if test "$xen" = "yes" && test "$linux" = "yes" &&
2110 test "$xen_ctrl_version" -ge 340; then
2111 xen_pci_passthrough=yes
2112 else
2113 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002114 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002115 error_exit "User requested feature Xen PCI Passthrough" \
2116 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002117 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002118 error_exit "User requested feature Xen PCI Passthrough" \
2119 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002120 fi
2121 xen_pci_passthrough=no
2122 fi
2123fi
2124
aliguorie37630c2009-04-22 15:19:10 +00002125##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002126# libtool probe
2127
Brad3f534582011-08-13 20:30:14 -04002128if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002129 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002130fi
2131
Peter Maydell8e515b12013-05-04 21:57:51 +01002132# MacOSX ships with a libtool which isn't the GNU one; weed this
2133# out by checking whether libtool supports the --version switch
2134if test -n "$libtool"; then
2135 if ! "$libtool" --version >/dev/null 2>&1; then
2136 libtool=
2137 fi
2138fi
2139
Alon Levy44dc0ca2011-05-15 11:51:28 +03002140##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002141# Sparse probe
2142if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002143 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002144 sparse=yes
2145 else
2146 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002147 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002148 fi
2149 sparse=no
2150 fi
2151fi
2152
2153##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002154# X11 probe
2155x11_cflags=
2156x11_libs=-lX11
2157if $pkg_config --exists "x11"; then
2158 x11_cflags=`$pkg_config --cflags x11`
2159 x11_libs=`$pkg_config --libs x11`
2160fi
2161
2162##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002163# GTK probe
2164
Stefan Weil9e04c682014-05-17 16:29:18 +02002165if test "$gtkabi" = ""; then
2166 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2167 # Use 3.0 as a fallback if that is available.
2168 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2169 gtkabi=2.0
2170 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2171 gtkabi=3.0
2172 else
2173 gtkabi=2.0
2174 fi
2175fi
2176
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002177if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002178 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002179 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002180 if test "$gtkabi" = "3.0" ; then
2181 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002182 else
2183 gtkversion="2.18.0"
2184 fi
2185 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2186 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2187 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002188 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002189 gtk_cflags="$gtk_cflags $x11_cflags"
2190 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002191 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002192 libs_softmmu="$gtk_libs $libs_softmmu"
2193 gtk="yes"
2194 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002195 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002196 else
2197 gtk="no"
2198 fi
2199fi
2200
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002201
2202##########################################
2203# GNUTLS probe
2204
Peter Maydell37371292015-07-24 18:28:08 +01002205gnutls_works() {
2206 # Unfortunately some distros have bad pkg-config information for gnutls
2207 # such that it claims to exist but you get a compiler error if you try
2208 # to use the options returned by --libs. Specifically, Ubuntu for --static
2209 # builds doesn't work:
2210 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2211 #
2212 # So sanity check the cflags/libs before assuming gnutls can be used.
2213 if ! $pkg_config --exists "gnutls"; then
2214 return 1
2215 fi
2216
2217 write_c_skeleton
2218 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2219}
2220
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002221gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002222gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002223if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002224 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002225 gnutls_cflags=`$pkg_config --cflags gnutls`
2226 gnutls_libs=`$pkg_config --libs gnutls`
2227 libs_softmmu="$gnutls_libs $libs_softmmu"
2228 libs_tools="$gnutls_libs $libs_tools"
2229 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2230 gnutls="yes"
2231
2232 # gnutls_hash_init requires >= 2.9.10
2233 if $pkg_config --exists "gnutls >= 2.9.10"; then
2234 gnutls_hash="yes"
2235 else
2236 gnutls_hash="no"
2237 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002238
2239 if $pkg_config --exists 'gnutls >= 3.0'; then
2240 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002241 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002242 elif $pkg_config --exists 'gnutls >= 2.12'; then
2243 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002244 *gcrypt*)
2245 gnutls_gcrypt=yes
2246 gnutls_nettle=no
2247 ;;
2248 *nettle*)
2249 gnutls_gcrypt=no
2250 gnutls_nettle=yes
2251 ;;
2252 *)
2253 gnutls_gcrypt=yes
2254 gnutls_nettle=no
2255 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002256 esac
2257 else
2258 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002259 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002260 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002261 elif test "$gnutls" = "yes"; then
2262 feature_not_found "gnutls" "Install gnutls devel"
2263 else
2264 gnutls="no"
2265 gnutls_hash="no"
2266 fi
2267else
2268 gnutls_hash="no"
2269fi
2270
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002271
2272# If user didn't give a --disable/enable-gcrypt flag,
2273# then mark as disabled if user requested nettle
2274# explicitly, or if gnutls links to nettle
2275if test -z "$gcrypt"
2276then
2277 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2278 then
2279 gcrypt="no"
2280 fi
2281fi
2282
2283# If user didn't give a --disable/enable-nettle flag,
2284# then mark as disabled if user requested gcrypt
2285# explicitly, or if gnutls links to gcrypt
2286if test -z "$nettle"
2287then
2288 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2289 then
2290 nettle="no"
2291 fi
2292fi
2293
2294has_libgcrypt_config() {
2295 if ! has "libgcrypt-config"
2296 then
2297 return 1
2298 fi
2299
2300 if test -n "$cross_prefix"
2301 then
2302 host=`libgcrypt-config --host`
2303 if test "$host-" != $cross_prefix
2304 then
2305 return 1
2306 fi
2307 fi
2308
2309 return 0
2310}
2311
2312if test "$gcrypt" != "no"; then
2313 if has_libgcrypt_config; then
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002314 gcrypt_cflags=`libgcrypt-config --cflags`
2315 gcrypt_libs=`libgcrypt-config --libs`
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002316 # Debian has remove -lgpg-error from libgcrypt-config
2317 # as it "spreads unnecessary dependencies" which in
2318 # turn breaks static builds...
2319 if test "$static" = "yes"
2320 then
2321 gcrypt_libs="$gcrypt_libs -lgpg-error"
2322 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002323 libs_softmmu="$gcrypt_libs $libs_softmmu"
2324 libs_tools="$gcrypt_libs $libs_tools"
2325 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002326 gcrypt="yes"
2327 if test -z "$nettle"; then
2328 nettle="no"
2329 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002330 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002331 if test "$gcrypt" = "yes"; then
2332 feature_not_found "gcrypt" "Install gcrypt devel"
2333 else
2334 gcrypt="no"
2335 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002336 fi
2337fi
2338
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002339
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002340if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002341 if $pkg_config --exists "nettle"; then
2342 nettle_cflags=`$pkg_config --cflags nettle`
2343 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002344 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002345 libs_softmmu="$nettle_libs $libs_softmmu"
2346 libs_tools="$nettle_libs $libs_tools"
2347 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002348 nettle="yes"
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002349 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002350 if test "$nettle" = "yes"; then
2351 feature_not_found "nettle" "Install nettle devel"
2352 else
2353 nettle="no"
2354 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002355 fi
2356fi
2357
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002358if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2359then
2360 error_exit "Only one of gcrypt & nettle can be enabled"
2361fi
2362
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002363##########################################
2364# libtasn1 - only for the TLS creds/session test suite
2365
2366tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002367tasn1_cflags=""
2368tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002369if $pkg_config --exists "libtasn1"; then
2370 tasn1_cflags=`$pkg_config --cflags libtasn1`
2371 tasn1_libs=`$pkg_config --libs libtasn1`
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002372else
2373 tasn1=no
2374fi
2375
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002376
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002377##########################################
2378# VTE probe
2379
2380if test "$vte" != "no"; then
2381 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002382 vtepackage="vte-2.90"
2383 vteversion="0.32.0"
2384 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002385 vtepackage="vte"
2386 vteversion="0.24.0"
2387 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002388 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2389 vte_cflags=`$pkg_config --cflags $vtepackage`
2390 vte_libs=`$pkg_config --libs $vtepackage`
2391 libs_softmmu="$vte_libs $libs_softmmu"
2392 vte="yes"
2393 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002394 if test "$gtkabi" = "3.0"; then
2395 feature_not_found "vte" "Install libvte-2.90 devel"
2396 else
2397 feature_not_found "vte" "Install libvte devel"
2398 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002399 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002400 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002401 fi
2402fi
2403
2404##########################################
bellard11d9f692004-04-02 20:55:59 +00002405# SDL probe
2406
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002407# Look for sdl configuration program (pkg-config or sdl-config). Try
2408# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002409
2410if test $sdlabi = "2.0"; then
2411 sdl_config=$sdl2_config
2412 sdlname=sdl2
2413 sdlconfigname=sdl2_config
2414else
2415 sdlname=sdl
2416 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002417fi
2418
Dave Airlie47c03742013-12-10 14:05:51 +10002419if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2420 sdl_config=$sdlconfigname
2421fi
2422
2423if $pkg_config $sdlname --exists; then
2424 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002425 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002426elif has ${sdl_config}; then
2427 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002428 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002429else
2430 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002431 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002432 fi
2433 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002434fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002435if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002436 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2437fi
bellard11d9f692004-04-02 20:55:59 +00002438
Paolo Bonzini9316f802010-01-13 09:52:55 +01002439sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002440if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002441 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002442#include <SDL.h>
2443#undef main /* We don't want SDL to override our main() */
2444int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2445EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002446 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002447 if test "$static" = "yes" ; then
2448 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2449 else
2450 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2451 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002452 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002453 if test "$_sdlversion" -lt 121 ; then
2454 sdl_too_old=yes
2455 else
Peter Maydella30878e2015-08-14 16:10:52 +01002456 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002457 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002458
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002459 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002460 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002461 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002462 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2463 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002464 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002465 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002466 :
2467 else
2468 sdl=no
2469 fi
2470 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002471 else # sdl not found
2472 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002473 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002474 fi
2475 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002476 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002477fi
bellard11d9f692004-04-02 20:55:59 +00002478
aliguori5368a422009-03-03 17:37:21 +00002479if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002480 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002481#include <SDL.h>
2482#if defined(SDL_VIDEO_DRIVER_X11)
2483#include <X11/XKBlib.h>
2484#else
2485#error No x11 support
2486#endif
2487int main(void) { return 0; }
2488EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002489 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2490 sdl_cflags="$sdl_cflags $x11_cflags"
2491 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002492 fi
Juan Quintela07056672009-08-03 14:46:27 +02002493 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002494fi
2495
ths8f28f3f2007-01-05 21:25:54 +00002496##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002497# RDMA needs OpenFabrics libraries
2498if test "$rdma" != "no" ; then
2499 cat > $TMPC <<EOF
2500#include <rdma/rdma_cma.h>
2501int main(void) { return 0; }
2502EOF
2503 rdma_libs="-lrdmacm -libverbs"
2504 if compile_prog "" "$rdma_libs" ; then
2505 rdma="yes"
2506 libs_softmmu="$libs_softmmu $rdma_libs"
2507 else
2508 if test "$rdma" = "yes" ; then
2509 error_exit \
2510 " OpenFabrics librdmacm/libibverbs not present." \
2511 " Your options:" \
2512 " (1) Fast: Install infiniband packages from your distro." \
2513 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2514 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2515 fi
2516 rdma="no"
2517 fi
2518fi
2519
ths8d5d2d42007-08-25 01:37:51 +00002520
2521##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002522# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002523if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002524 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002525#include <sasl/sasl.h>
2526#include <stdio.h>
2527int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2528EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002529 # Assuming Cyrus-SASL installed in /usr prefix
2530 vnc_sasl_cflags=""
2531 vnc_sasl_libs="-lsasl2"
2532 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2533 vnc_sasl=yes
2534 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002535 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002536 else
2537 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002538 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002539 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002540 vnc_sasl=no
2541 fi
aliguori2f9606b2009-03-06 20:27:28 +00002542fi
2543
2544##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002545# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002546if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002547cat > $TMPC <<EOF
2548#include <stdio.h>
2549#include <jpeglib.h>
2550int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2551EOF
2552 vnc_jpeg_cflags=""
2553 vnc_jpeg_libs="-ljpeg"
2554 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2555 vnc_jpeg=yes
2556 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002557 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002558 else
2559 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002560 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002561 fi
2562 vnc_jpeg=no
2563 fi
2564fi
2565
2566##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002567# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002568if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002569cat > $TMPC <<EOF
2570//#include <stdio.h>
2571#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002572#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002573int main(void) {
2574 png_structp png_ptr;
2575 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002576 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002577}
2578EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002579 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002580 vnc_png_cflags=`$pkg_config libpng --cflags`
2581 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002582 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002583 vnc_png_cflags=""
2584 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002585 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002586 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2587 vnc_png=yes
2588 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002589 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002590 else
2591 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002592 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002593 fi
2594 vnc_png=no
2595 fi
2596fi
2597
2598##########################################
aliguori76655d62009-03-06 20:27:37 +00002599# fnmatch() probe, used for ACL routines
2600fnmatch="no"
2601cat > $TMPC << EOF
2602#include <fnmatch.h>
2603int main(void)
2604{
2605 fnmatch("foo", "foo", 0);
2606 return 0;
2607}
2608EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002609if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002610 fnmatch="yes"
2611fi
2612
2613##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002614# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002615# Note that on some systems (notably MacOSX) no extra library
2616# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002617if test "$uuid" != "no" ; then
2618 uuid_libs="-luuid"
2619 cat > $TMPC << EOF
2620#include <uuid/uuid.h>
2621int main(void)
2622{
2623 uuid_t my_uuid;
2624 uuid_generate(my_uuid);
2625 return 0;
2626}
2627EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002628 if compile_prog "" "" ; then
2629 uuid="yes"
2630 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002631 uuid="yes"
2632 libs_softmmu="$uuid_libs $libs_softmmu"
2633 libs_tools="$uuid_libs $libs_tools"
2634 else
2635 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002636 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002637 fi
2638 uuid=no
2639 fi
2640fi
2641
Jeff Cody4f18b782013-10-30 10:44:39 -04002642if test "$vhdx" = "yes" ; then
2643 if test "$uuid" = "no" ; then
2644 error_exit "uuid required for VHDX support"
2645 fi
2646elif test "$vhdx" != "no" ; then
2647 if test "$uuid" = "yes" ; then
2648 vhdx=yes
2649 else
2650 vhdx=no
2651 fi
2652fi
2653
Stefan Weilee682d22009-10-01 20:10:37 +02002654##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002655# xfsctl() probe, used for raw-posix
2656if test "$xfs" != "no" ; then
2657 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002658#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002659#include <xfs/xfs.h>
2660int main(void)
2661{
2662 xfsctl(NULL, 0, 0, NULL);
2663 return 0;
2664}
2665EOF
2666 if compile_prog "" "" ; then
2667 xfs="yes"
2668 else
2669 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002670 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002671 fi
2672 xfs=no
2673 fi
2674fi
2675
2676##########################################
ths8a16d272008-07-19 09:56:24 +00002677# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002678if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002679 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002680 cat > $TMPC << EOF
2681#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002682int main(void)
2683{
2684 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002685 char s[] = "";
2686 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002687 return 0;
2688}
ths8a16d272008-07-19 09:56:24 +00002689EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002690 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002691 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002692 libs_softmmu="$vde_libs $libs_softmmu"
2693 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002694 else
2695 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002696 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002697 fi
2698 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002699 fi
ths8a16d272008-07-19 09:56:24 +00002700fi
2701
2702##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002703# netmap support probe
2704# Apart from looking for netmap headers, we make sure that the host API version
2705# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2706# a minor/major version number. Minor new features will be marked with values up
2707# to 15, and if something happens that requires a change to the backend we will
2708# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002709if test "$netmap" != "no" ; then
2710 cat > $TMPC << EOF
2711#include <inttypes.h>
2712#include <net/if.h>
2713#include <net/netmap.h>
2714#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002715#if (NETMAP_API < 11) || (NETMAP_API > 15)
2716#error
2717#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002718int main(void) { return 0; }
2719EOF
2720 if compile_prog "" "" ; then
2721 netmap=yes
2722 else
2723 if test "$netmap" = "yes" ; then
2724 feature_not_found "netmap"
2725 fi
2726 netmap=no
2727 fi
2728fi
2729
2730##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002731# libcap-ng library probe
2732if test "$cap_ng" != "no" ; then
2733 cap_libs="-lcap-ng"
2734 cat > $TMPC << EOF
2735#include <cap-ng.h>
2736int main(void)
2737{
2738 capng_capability_to_name(CAPNG_EFFECTIVE);
2739 return 0;
2740}
2741EOF
2742 if compile_prog "" "$cap_libs" ; then
2743 cap_ng=yes
2744 libs_tools="$cap_libs $libs_tools"
2745 else
2746 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002747 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002748 fi
2749 cap_ng=no
2750 fi
2751fi
2752
2753##########################################
malcc2de5c92008-06-28 19:13:06 +00002754# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002755
malcc2de5c92008-06-28 19:13:06 +00002756audio_drv_probe()
2757{
2758 drv=$1
2759 hdr=$2
2760 lib=$3
2761 exp=$4
2762 cfl=$5
2763 cat > $TMPC << EOF
2764#include <$hdr>
2765int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002766EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002767 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002768 :
2769 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002770 error_exit "$drv check failed" \
2771 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002772 fi
2773}
2774
malc2fa7d3b2008-07-29 12:58:44 +00002775audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002776for drv in $audio_drv_list; do
2777 case $drv in
2778 alsa)
2779 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002780 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002781 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002782 ;;
2783
malcb8e59f12008-07-02 21:03:08 +00002784 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002785 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2786 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2787 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002788 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002789 ;;
2790
Juan Quintela997e6902009-08-03 14:46:29 +02002791 coreaudio)
2792 libs_softmmu="-framework CoreAudio $libs_softmmu"
2793 ;;
2794
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002795 dsound)
2796 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002797 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002798 ;;
2799
2800 oss)
2801 libs_softmmu="$oss_lib $libs_softmmu"
2802 ;;
2803
2804 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002805 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2806 ;;
2807
malce4c63a62008-07-19 16:15:16 +00002808 *)
malc1c9b2a52008-07-19 16:57:30 +00002809 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002810 error_exit "Unknown driver '$drv' selected" \
2811 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002812 }
2813 ;;
malcc2de5c92008-06-28 19:13:06 +00002814 esac
2815done
ths8f28f3f2007-01-05 21:25:54 +00002816
balrog4d3b6f62008-02-10 16:33:14 +00002817##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002818# BrlAPI probe
2819
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002820if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002821 brlapi_libs="-lbrlapi"
2822 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002823#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002824#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002825int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2826EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002827 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002828 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002829 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002830 else
2831 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002832 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002833 fi
2834 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002835 fi
2836fi
aurel322e4d9fb2008-04-08 06:01:02 +00002837
2838##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002839# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002840if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002841 if test "$mingw32" = "yes" ; then
2842 curses_list="-lpdcurses"
2843 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002844 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002845 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002846 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002847 cat > $TMPC << EOF
2848#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002849int main(void) {
2850 const char *s = curses_version();
2851 resize_term(0, 0);
2852 return s != 0;
2853}
balrog4d3b6f62008-02-10 16:33:14 +00002854EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002855 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002856 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002857 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002858 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002859 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002860 libs_softmmu="$curses_lib $libs_softmmu"
2861 break
2862 fi
2863 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002864 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002865 if test "$curses_found" = "yes" ; then
2866 curses=yes
2867 else
2868 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002869 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002870 fi
2871 curses=no
2872 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002873fi
balrog4d3b6f62008-02-10 16:33:14 +00002874
blueswir1414f0da2008-08-15 18:20:52 +00002875##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002876# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002877if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002878 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002879 curlconfig="$pkg_config libcurl"
2880 else
2881 curlconfig=curl-config
2882 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002883 cat > $TMPC << EOF
2884#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002885int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002886EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002887 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2888 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002889 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002890 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002891 else
2892 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002893 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002894 fi
2895 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002896 fi
2897fi # test "$curl"
2898
2899##########################################
balrogfb599c92008-09-28 23:49:55 +00002900# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002901if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002902 cat > $TMPC << EOF
2903#include <bluetooth/bluetooth.h>
2904int main(void) { return bt_error(0); }
2905EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002906 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2907 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002908 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002909 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002910 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002911 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002912 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002913 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002914 fi
balroge820e3f2008-09-30 02:27:44 +00002915 bluez="no"
2916 fi
balrogfb599c92008-09-28 23:49:55 +00002917fi
2918
2919##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002920# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002921
John Snowf40685c2015-05-22 14:13:42 -04002922glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002923glib_modules=gthread-2.0
2924if test "$modules" = yes; then
2925 glib_modules="$glib_modules gmodule-2.0"
2926fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002927
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002928for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002929 if $pkg_config --atleast-version=$glib_req_ver $i; then
2930 glib_cflags=`$pkg_config --cflags $i`
2931 glib_libs=`$pkg_config --libs $i`
2932 CFLAGS="$glib_cflags $CFLAGS"
2933 LIBS="$glib_libs $LIBS"
2934 libs_qga="$glib_libs $libs_qga"
2935 else
2936 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2937 fi
2938done
2939
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002940# g_test_trap_subprocess added in 2.38. Used by some tests.
2941glib_subprocess=yes
2942if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2943 glib_subprocess=no
2944fi
2945
John Snowbbbf2e02015-03-25 18:57:38 -04002946# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2947cat > $TMPC << EOF
2948#include <glib.h>
2949int main(void) { return 0; }
2950EOF
2951if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2952 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2953 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2954 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2955 fi
2956fi
2957
Fam Zhenge26110c2014-02-10 14:48:57 +08002958##########################################
2959# SHA command probe for modules
2960if test "$modules" = yes; then
2961 shacmd_probe="sha1sum sha1 shasum"
2962 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002963 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002964 shacmd="$c"
2965 break
2966 fi
2967 done
2968 if test "$shacmd" = ""; then
2969 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2970 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002971fi
2972
2973##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002974# pixman support probe
2975
2976if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002977 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2978 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002979 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002980 pixman="system"
2981 else
2982 pixman="internal"
2983 fi
2984fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002985if test "$pixman" = "none"; then
2986 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002987 error_exit "pixman disabled but system emulation or tools build" \
2988 "enabled. You can turn off pixman only if you also" \
2989 "disable all system emulation targets and the tools" \
2990 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002991 fi
2992 pixman_cflags=
2993 pixman_libs=
2994elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002995 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002996 pixman_cflags=`$pkg_config --cflags pixman-1`
2997 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002998else
2999 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003000 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003001 " (1) Preferred: Install the pixman devel package (any recent" \
3002 " distro should have packages as Xorg needs pixman too)." \
3003 " (2) Fetch the pixman submodule, using:" \
3004 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003005 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003006 mkdir -p pixman/pixman
3007 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3008 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003009fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003010
3011##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303012# libcap probe
3013
3014if test "$cap" != "no" ; then
3015 cat > $TMPC <<EOF
3016#include <stdio.h>
3017#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003018int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303019EOF
3020 if compile_prog "" "-lcap" ; then
3021 cap=yes
3022 else
3023 cap=no
3024 fi
3025fi
3026
3027##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003028# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003029PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003030
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003031pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003032cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003033#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003034static void *f(void *p) { return NULL; }
3035int main(void) {
3036 pthread_t thread;
3037 pthread_create(&thread, 0, f, 0);
3038 return 0;
3039}
blueswir1414f0da2008-08-15 18:20:52 +00003040EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003041if compile_prog "" "" ; then
3042 pthread=yes
3043else
3044 for pthread_lib in $PTHREADLIBS_LIST; do
3045 if compile_prog "" "$pthread_lib" ; then
3046 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003047 found=no
3048 for lib_entry in $LIBS; do
3049 if test "$lib_entry" = "$pthread_lib"; then
3050 found=yes
3051 break
3052 fi
3053 done
3054 if test "$found" = "no"; then
3055 LIBS="$pthread_lib $LIBS"
3056 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003057 break
3058 fi
3059 done
3060fi
blueswir1414f0da2008-08-15 18:20:52 +00003061
Anthony Liguori4617e592009-08-25 17:21:56 -05003062if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003063 error_exit "pthread check failed" \
3064 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003065fi
3066
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003067# check for pthread_setname_np
3068pthread_setname_np=no
3069cat > $TMPC << EOF
3070#include <pthread.h>
3071
3072static void *f(void *p) { return NULL; }
3073int main(void)
3074{
3075 pthread_t thread;
3076 pthread_create(&thread, 0, f, 0);
3077 pthread_setname_np(thread, "QEMU");
3078 return 0;
3079}
3080EOF
3081if compile_prog "" "$pthread_lib" ; then
3082 pthread_setname_np=yes
3083fi
3084
aliguoribf9298b2008-12-05 20:05:26 +00003085##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003086# rbd probe
3087if test "$rbd" != "no" ; then
3088 cat > $TMPC <<EOF
3089#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003090#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003091int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003092 rados_t cluster;
3093 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003094 return 0;
3095}
3096EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003097 rbd_libs="-lrbd -lrados"
3098 if compile_prog "" "$rbd_libs" ; then
3099 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003100 else
3101 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003102 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003103 fi
3104 rbd=no
3105 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003106fi
3107
3108##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003109# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003110min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003111if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003112 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003113 libssh2_cflags=`$pkg_config libssh2 --cflags`
3114 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003115 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003116 else
3117 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003118 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003119 fi
3120 libssh2=no
3121 fi
3122fi
3123
3124##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003125# libssh2_sftp_fsync probe
3126
3127if test "$libssh2" = "yes"; then
3128 cat > $TMPC <<EOF
3129#include <stdio.h>
3130#include <libssh2.h>
3131#include <libssh2_sftp.h>
3132int main(void) {
3133 LIBSSH2_SESSION *session;
3134 LIBSSH2_SFTP *sftp;
3135 LIBSSH2_SFTP_HANDLE *sftp_handle;
3136 session = libssh2_session_init ();
3137 sftp = libssh2_sftp_init (session);
3138 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3139 libssh2_sftp_fsync (sftp_handle);
3140 return 0;
3141}
3142EOF
3143 # libssh2_cflags/libssh2_libs defined in previous test.
3144 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3145 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3146 fi
3147fi
3148
3149##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003150# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003151
3152if test "$linux_aio" != "no" ; then
3153 cat > $TMPC <<EOF
3154#include <libaio.h>
3155#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003156#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003157int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3158EOF
3159 if compile_prog "" "-laio" ; then
3160 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003161 else
3162 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003163 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003164 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003165 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003166 fi
3167fi
3168
3169##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003170# TPM passthrough is only on x86 Linux
3171
3172if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3173 tpm_passthrough=$tpm
3174else
3175 tpm_passthrough=no
3176fi
3177
3178##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003179# attr probe
3180
3181if test "$attr" != "no" ; then
3182 cat > $TMPC <<EOF
3183#include <stdio.h>
3184#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003185#ifdef CONFIG_LIBATTR
3186#include <attr/xattr.h>
3187#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003188#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003189#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003190int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3191EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003192 if compile_prog "" "" ; then
3193 attr=yes
3194 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003195 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003196 attr=yes
3197 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003198 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003199 else
3200 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003201 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003202 fi
3203 attr=no
3204 fi
3205fi
3206
3207##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003208# iovec probe
3209cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003210#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003211#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003212#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003213int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003214EOF
3215iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003216if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003217 iovec=yes
3218fi
3219
aurel32f652e6a2008-12-16 10:43:48 +00003220##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003221# preadv probe
3222cat > $TMPC <<EOF
3223#include <sys/types.h>
3224#include <sys/uio.h>
3225#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003226int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003227EOF
3228preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003229if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003230 preadv=yes
3231fi
3232
3233##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003234# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003235# fdt support is mandatory for at least some target architectures,
3236# so insist on it if we're building those system emulators.
3237fdt_required=no
3238for target in $target_list; do
3239 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003240 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003241 fdt_required=yes
3242 ;;
3243 esac
3244done
3245
3246if test "$fdt_required" = "yes"; then
3247 if test "$fdt" = "no"; then
3248 error_exit "fdt disabled but some requested targets require it." \
3249 "You can turn off fdt only if you also disable all the system emulation" \
3250 "targets which need it (by specifying a cut down --target-list)."
3251 fi
3252 fdt=yes
3253fi
3254
Juan Quintela2df87df2009-08-12 18:29:54 +02003255if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003256 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003257 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003258 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003259 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003260#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003261#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003262int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003263EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003264 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003265 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003266 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003267 elif test -d ${source_path}/dtc/libfdt ; then
3268 # have submodule DTC - use it
3269 fdt=yes
3270 dtc_internal="yes"
3271 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003272 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003273 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3274 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003275 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003276 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3277 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3278 elif test "$fdt" = "yes" ; then
3279 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003280 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003281 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003282 " (2) Fetch the DTC submodule, using:" \
3283 " git submodule update --init dtc"
3284 else
3285 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003286 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003287 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003288 fi
3289fi
3290
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003291libs_softmmu="$libs_softmmu $fdt_libs"
3292
Michael Walle20ff0752011-03-07 23:32:39 +01003293##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003294# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003295
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003296if test "$opengl" != "no" ; then
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003297 opengl_pkgs="epoxy"
3298 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003299 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3300 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003301 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003302 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3303 gtk_gl="yes"
3304 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003305 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003306 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003307 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003308 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003309 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003310 opengl_libs=""
3311 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003312 fi
3313fi
3314
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003315
3316##########################################
3317# archipelago probe
3318if test "$archipelago" != "no" ; then
3319 cat > $TMPC <<EOF
3320#include <stdio.h>
3321#include <xseg/xseg.h>
3322#include <xseg/protocol.h>
3323int main(void) {
3324 xseg_initialize();
3325 return 0;
3326}
3327EOF
3328 archipelago_libs=-lxseg
3329 if compile_prog "" "$archipelago_libs"; then
3330 archipelago="yes"
3331 libs_tools="$archipelago_libs $libs_tools"
3332 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003333
3334 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3335 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3336 echo "license and therefore prevent redistribution."
3337 echo
3338 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003339 else
3340 if test "$archipelago" = "yes" ; then
3341 feature_not_found "Archipelago backend support" "Install libxseg devel"
3342 fi
3343 archipelago="no"
3344 fi
3345fi
3346
3347
Bharata B Raoeb100392012-09-24 14:42:45 +05303348##########################################
3349# glusterfs probe
3350if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003351 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303352 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003353 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3354 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003355 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303356 glusterfs_discard="yes"
3357 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303358 if $pkg_config --atleast-version=6 glusterfs-api; then
3359 glusterfs_zerofill="yes"
3360 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303361 else
3362 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003363 feature_not_found "GlusterFS backend support" \
3364 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303365 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303366 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303367 fi
3368fi
3369
aurel3239386ac2009-04-15 19:48:17 +00003370# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003371# emulator. This is done because older glibc versions don't
3372# have syscall stubs for these implemented. In that case we
3373# don't provide them even if kernel supports them.
3374#
3375inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003376cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003377#include <sys/inotify.h>
3378
3379int
3380main(void)
3381{
3382 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003383 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003384}
3385EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003386if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003387 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003388fi
3389
Riku Voipioc05c7a72010-03-26 15:25:11 +00003390inotify1=no
3391cat > $TMPC << EOF
3392#include <sys/inotify.h>
3393
3394int
3395main(void)
3396{
3397 /* try to start inotify */
3398 return inotify_init1(0);
3399}
3400EOF
3401if compile_prog "" "" ; then
3402 inotify1=yes
3403fi
3404
Riku Voipioebc996f2009-04-21 15:01:51 +03003405# check if utimensat and futimens are supported
3406utimens=no
3407cat > $TMPC << EOF
3408#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003409#include <stddef.h>
3410#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003411#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003412
3413int main(void)
3414{
3415 utimensat(AT_FDCWD, "foo", NULL, 0);
3416 futimens(0, NULL);
3417 return 0;
3418}
3419EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003420if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003421 utimens=yes
3422fi
3423
Riku Voipio099d6b02009-05-05 12:10:04 +03003424# check if pipe2 is there
3425pipe2=no
3426cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003427#include <unistd.h>
3428#include <fcntl.h>
3429
3430int main(void)
3431{
3432 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003433 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003434}
3435EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003436if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003437 pipe2=yes
3438fi
3439
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003440# check if accept4 is there
3441accept4=no
3442cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003443#include <sys/socket.h>
3444#include <stddef.h>
3445
3446int main(void)
3447{
3448 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3449 return 0;
3450}
3451EOF
3452if compile_prog "" "" ; then
3453 accept4=yes
3454fi
3455
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303456# check if tee/splice is there. vmsplice was added same time.
3457splice=no
3458cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303459#include <unistd.h>
3460#include <fcntl.h>
3461#include <limits.h>
3462
3463int main(void)
3464{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003465 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303466 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3467 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3468 return 0;
3469}
3470EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003471if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303472 splice=yes
3473fi
3474
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003475##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003476# libnuma probe
3477
3478if test "$numa" != "no" ; then
3479 cat > $TMPC << EOF
3480#include <numa.h>
3481int main(void) { return numa_available(); }
3482EOF
3483
3484 if compile_prog "" "-lnuma" ; then
3485 numa=yes
3486 libs_softmmu="-lnuma $libs_softmmu"
3487 else
3488 if test "$numa" = "yes" ; then
3489 feature_not_found "numa" "install numactl devel"
3490 fi
3491 numa=no
3492 fi
3493fi
3494
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003495if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3496 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3497 exit 1
3498fi
3499
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003500##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003501# tcmalloc probe
3502
3503if test "$tcmalloc" = "yes" ; then
3504 cat > $TMPC << EOF
3505#include <stdlib.h>
3506int main(void) { malloc(1); return 0; }
3507EOF
3508
3509 if compile_prog "" "-ltcmalloc" ; then
3510 LIBS="-ltcmalloc $LIBS"
3511 else
3512 feature_not_found "tcmalloc" "install gperftools devel"
3513 fi
3514fi
3515
3516##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003517# jemalloc probe
3518
3519if test "$jemalloc" = "yes" ; then
3520 cat > $TMPC << EOF
3521#include <stdlib.h>
3522int main(void) { malloc(1); return 0; }
3523EOF
3524
3525 if compile_prog "" "-ljemalloc" ; then
3526 LIBS="-ljemalloc $LIBS"
3527 else
3528 feature_not_found "jemalloc" "install jemalloc devel"
3529 fi
3530fi
3531
3532##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003533# signalfd probe
3534signalfd="no"
3535cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003536#include <unistd.h>
3537#include <sys/syscall.h>
3538#include <signal.h>
3539int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3540EOF
3541
3542if compile_prog "" "" ; then
3543 signalfd=yes
3544fi
3545
Riku Voipioc2882b92009-08-12 15:08:24 +03003546# check if eventfd is supported
3547eventfd=no
3548cat > $TMPC << EOF
3549#include <sys/eventfd.h>
3550
3551int main(void)
3552{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003553 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003554}
3555EOF
3556if compile_prog "" "" ; then
3557 eventfd=yes
3558fi
3559
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003560# check if memfd is supported
3561memfd=no
3562cat > $TMPC << EOF
3563#include <sys/memfd.h>
3564
3565int main(void)
3566{
3567 return memfd_create("foo", MFD_ALLOW_SEALING);
3568}
3569EOF
3570if compile_prog "" "" ; then
3571 memfd=yes
3572fi
3573
3574
3575
Ulrich Hechtd0927932009-09-17 20:22:14 +03003576# check for fallocate
3577fallocate=no
3578cat > $TMPC << EOF
3579#include <fcntl.h>
3580
3581int main(void)
3582{
3583 fallocate(0, 0, 0, 0);
3584 return 0;
3585}
3586EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003587if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003588 fallocate=yes
3589fi
3590
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003591# check for fallocate hole punching
3592fallocate_punch_hole=no
3593cat > $TMPC << EOF
3594#include <fcntl.h>
3595#include <linux/falloc.h>
3596
3597int main(void)
3598{
3599 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3600 return 0;
3601}
3602EOF
3603if compile_prog "" "" ; then
3604 fallocate_punch_hole=yes
3605fi
3606
Denis V. Lunevb953f072015-01-30 11:42:14 +03003607# check that fallocate supports range zeroing inside the file
3608fallocate_zero_range=no
3609cat > $TMPC << EOF
3610#include <fcntl.h>
3611#include <linux/falloc.h>
3612
3613int main(void)
3614{
3615 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3616 return 0;
3617}
3618EOF
3619if compile_prog "" "" ; then
3620 fallocate_zero_range=yes
3621fi
3622
Kevin Wolfed911432014-09-29 17:12:59 +02003623# check for posix_fallocate
3624posix_fallocate=no
3625cat > $TMPC << EOF
3626#include <fcntl.h>
3627
3628int main(void)
3629{
3630 posix_fallocate(0, 0, 0);
3631 return 0;
3632}
3633EOF
3634if compile_prog "" "" ; then
3635 posix_fallocate=yes
3636fi
3637
Peter Maydellc727f472011-01-06 11:05:10 +00003638# check for sync_file_range
3639sync_file_range=no
3640cat > $TMPC << EOF
3641#include <fcntl.h>
3642
3643int main(void)
3644{
3645 sync_file_range(0, 0, 0, 0);
3646 return 0;
3647}
3648EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003649if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003650 sync_file_range=yes
3651fi
3652
Peter Maydelldace20d2011-01-10 13:11:24 +00003653# check for linux/fiemap.h and FS_IOC_FIEMAP
3654fiemap=no
3655cat > $TMPC << EOF
3656#include <sys/ioctl.h>
3657#include <linux/fs.h>
3658#include <linux/fiemap.h>
3659
3660int main(void)
3661{
3662 ioctl(0, FS_IOC_FIEMAP, 0);
3663 return 0;
3664}
3665EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003666if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003667 fiemap=yes
3668fi
3669
Ulrich Hechtd0927932009-09-17 20:22:14 +03003670# check for dup3
3671dup3=no
3672cat > $TMPC << EOF
3673#include <unistd.h>
3674
3675int main(void)
3676{
3677 dup3(0, 0, 0);
3678 return 0;
3679}
3680EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003681if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003682 dup3=yes
3683fi
3684
Alex Bligh4e0c6522013-08-21 16:02:43 +01003685# check for ppoll support
3686ppoll=no
3687cat > $TMPC << EOF
3688#include <poll.h>
3689
3690int main(void)
3691{
3692 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3693 ppoll(&pfd, 1, 0, 0);
3694 return 0;
3695}
3696EOF
3697if compile_prog "" "" ; then
3698 ppoll=yes
3699fi
3700
Alex Blighcd758dd2013-08-21 16:02:44 +01003701# check for prctl(PR_SET_TIMERSLACK , ... ) support
3702prctl_pr_set_timerslack=no
3703cat > $TMPC << EOF
3704#include <sys/prctl.h>
3705
3706int main(void)
3707{
3708 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3709 return 0;
3710}
3711EOF
3712if compile_prog "" "" ; then
3713 prctl_pr_set_timerslack=yes
3714fi
3715
Peter Maydell3b6edd12011-02-15 18:35:05 +00003716# check for epoll support
3717epoll=no
3718cat > $TMPC << EOF
3719#include <sys/epoll.h>
3720
3721int main(void)
3722{
3723 epoll_create(0);
3724 return 0;
3725}
3726EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003727if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003728 epoll=yes
3729fi
3730
3731# epoll_create1 and epoll_pwait are later additions
3732# so we must check separately for their presence
3733epoll_create1=no
3734cat > $TMPC << EOF
3735#include <sys/epoll.h>
3736
3737int main(void)
3738{
Peter Maydell19e83f62011-04-26 16:56:40 +01003739 /* Note that we use epoll_create1 as a value, not as
3740 * a function being called. This is necessary so that on
3741 * old SPARC glibc versions where the function was present in
3742 * the library but not declared in the header file we will
3743 * fail the configure check. (Otherwise we will get a compiler
3744 * warning but not an error, and will proceed to fail the
3745 * qemu compile where we compile with -Werror.)
3746 */
Blue Swirlc075a722012-08-09 20:21:25 +00003747 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003748}
3749EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003750if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003751 epoll_create1=yes
3752fi
3753
3754epoll_pwait=no
3755cat > $TMPC << EOF
3756#include <sys/epoll.h>
3757
3758int main(void)
3759{
3760 epoll_pwait(0, 0, 0, 0, 0);
3761 return 0;
3762}
3763EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003764if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003765 epoll_pwait=yes
3766fi
3767
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003768# check for sendfile support
3769sendfile=no
3770cat > $TMPC << EOF
3771#include <sys/sendfile.h>
3772
3773int main(void)
3774{
3775 return sendfile(0, 0, 0, 0);
3776}
3777EOF
3778if compile_prog "" "" ; then
3779 sendfile=yes
3780fi
3781
Riku Voipio51834342014-06-22 11:25:42 +01003782# check for timerfd support (glibc 2.8 and newer)
3783timerfd=no
3784cat > $TMPC << EOF
3785#include <sys/timerfd.h>
3786
3787int main(void)
3788{
3789 return(timerfd_create(CLOCK_REALTIME, 0));
3790}
3791EOF
3792if compile_prog "" "" ; then
3793 timerfd=yes
3794fi
3795
Riku Voipio9af5c902014-08-12 15:58:57 +03003796# check for setns and unshare support
3797setns=no
3798cat > $TMPC << EOF
3799#include <sched.h>
3800
3801int main(void)
3802{
3803 int ret;
3804 ret = setns(0, 0);
3805 ret = unshare(0);
3806 return ret;
3807}
3808EOF
3809if compile_prog "" "" ; then
3810 setns=yes
3811fi
3812
pbrookcc8ae6d2006-04-23 17:57:59 +00003813# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003814if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003815 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003816 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003817 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003818 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003819 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003820 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003821 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003822 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003823fi
3824
Stefan Weilf514f412009-10-11 12:44:07 +02003825# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003826byteswap_h=no
3827cat > $TMPC << EOF
3828#include <byteswap.h>
3829int main(void) { return bswap_32(0); }
3830EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003831if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003832 byteswap_h=yes
3833fi
3834
Stefan Weil75f13592013-01-05 12:17:38 +01003835# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003836bswap_h=no
3837cat > $TMPC << EOF
3838#include <sys/endian.h>
3839#include <sys/types.h>
3840#include <machine/bswap.h>
3841int main(void) { return bswap32(0); }
3842EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003843if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003844 bswap_h=yes
3845fi
3846
aliguorida93a1f2008-12-12 20:02:52 +00003847##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003848# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003849if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003850 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003851 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003852 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3853 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003854 else
3855 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003856 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003857 fi
3858 libiscsi="no"
3859 fi
3860fi
3861
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003862##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003863# Do we need libm
3864cat > $TMPC << EOF
3865#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003866int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003867EOF
3868if compile_prog "" "" ; then
3869 :
3870elif compile_prog "" "-lm" ; then
3871 LIBS="-lm $LIBS"
3872 libs_qga="-lm $libs_qga"
3873else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003874 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003875fi
3876
3877##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003878# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003879# uClibc provides 2 versions of clock_gettime(), one with realtime
3880# support and one without. This means that the clock_gettime() don't
3881# need -lrt. We still need it for timer_create() so we check for this
3882# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003883cat > $TMPC <<EOF
3884#include <signal.h>
3885#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003886int main(void) {
3887 timer_create(CLOCK_REALTIME, NULL, NULL);
3888 return clock_gettime(CLOCK_REALTIME, NULL);
3889}
aliguorida93a1f2008-12-12 20:02:52 +00003890EOF
3891
Juan Quintela52166aa2009-08-03 14:46:03 +02003892if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003893 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003894# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003895elif compile_prog "" "$pthread_lib -lrt" ; then
3896 LIBS="$LIBS -lrt"
3897 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003898fi
3899
Blue Swirl31ff5042009-09-12 12:33:07 +00003900if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003901 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003902 libs_softmmu="-lutil $libs_softmmu"
3903fi
3904
Blue Swirlde5071c2009-09-12 09:58:46 +00003905##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003906# spice probe
3907if test "$spice" != "no" ; then
3908 cat > $TMPC << EOF
3909#include <spice.h>
3910int main(void) { spice_server_new(); return 0; }
3911EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003912 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3913 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003914 if $pkg_config --atleast-version=0.12.0 spice-server && \
3915 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003916 compile_prog "$spice_cflags" "$spice_libs" ; then
3917 spice="yes"
3918 libs_softmmu="$libs_softmmu $spice_libs"
3919 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003920 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3921 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003922 else
3923 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003924 feature_not_found "spice" \
3925 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003926 fi
3927 spice="no"
3928 fi
3929fi
3930
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003931# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003932smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003933if test "$smartcard" != "no"; then
3934 if $pkg_config libcacard; then
3935 libcacard_cflags=$($pkg_config --cflags libcacard)
3936 libcacard_libs=$($pkg_config --libs libcacard)
3937 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3938 libs_softmmu="$libs_softmmu $libcacard_libs"
3939 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003940 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003941 if test "$smartcard" = "yes"; then
3942 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003943 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003944 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003945 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003946fi
3947
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003948# check for libusb
3949if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003950 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003951 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003952 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3953 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003954 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3955 libs_softmmu="$libs_softmmu $libusb_libs"
3956 else
3957 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003958 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003959 fi
3960 libusb="no"
3961 fi
3962fi
3963
Hans de Goede69354a82011-07-19 11:04:10 +02003964# check for usbredirparser for usb network redirection support
3965if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003966 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003967 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003968 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3969 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003970 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003971 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003972 else
3973 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003974 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003975 fi
3976 usb_redir="no"
3977 fi
3978fi
3979
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003980##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003981# check if we have VSS SDK headers for win
3982
3983if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3984 case "$vss_win32_sdk" in
3985 "") vss_win32_include="-I$source_path" ;;
3986 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3987 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3988 vss_win32_include="-I$source_path/.sdk/vss"
3989 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3990 ;;
3991 *) vss_win32_include="-I$vss_win32_sdk"
3992 esac
3993 cat > $TMPC << EOF
3994#define __MIDL_user_allocate_free_DEFINED__
3995#include <inc/win2003/vss.h>
3996int main(void) { return VSS_CTX_BACKUP; }
3997EOF
3998 if compile_prog "$vss_win32_include" "" ; then
3999 guest_agent_with_vss="yes"
4000 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4001 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004002 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004003 else
4004 if test "$vss_win32_sdk" != "" ; then
4005 echo "ERROR: Please download and install Microsoft VSS SDK:"
4006 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4007 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4008 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4009 echo "ERROR: The headers are extracted in the directory \`inc'."
4010 feature_not_found "VSS support"
4011 fi
4012 guest_agent_with_vss="no"
4013 fi
4014fi
4015
4016##########################################
4017# lookup Windows platform SDK (if not specified)
4018# The SDK is needed only to build .tlb (type library) file of guest agent
4019# VSS provider from the source. It is usually unnecessary because the
4020# pre-compiled .tlb file is included.
4021
4022if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4023 if test -z "$win_sdk"; then
4024 programfiles="$PROGRAMFILES"
4025 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4026 if test -n "$programfiles"; then
4027 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4028 else
4029 feature_not_found "Windows SDK"
4030 fi
4031 elif test "$win_sdk" = "no"; then
4032 win_sdk=""
4033 fi
4034fi
4035
4036##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004037# check if mingw environment provides a recent ntddscsi.h
4038if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4039 cat > $TMPC << EOF
4040#include <windows.h>
4041#include <ntddscsi.h>
4042int main(void) {
4043#if !defined(IOCTL_SCSI_GET_ADDRESS)
4044#error Missing required ioctl definitions
4045#endif
4046 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4047 return addr.Lun;
4048}
4049EOF
4050 if compile_prog "" "" ; then
4051 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004052 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004053 fi
4054fi
4055
4056##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004057# virgl renderer probe
4058
4059if test "$virglrenderer" != "no" ; then
4060 cat > $TMPC << EOF
4061#include <virglrenderer.h>
4062int main(void) { virgl_renderer_poll(); return 0; }
4063EOF
4064 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4065 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4066 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4067 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4068 virglrenderer="yes"
4069 else
4070 if test "$virglrenderer" = "yes" ; then
4071 feature_not_found "virglrenderer"
4072 fi
4073 virglrenderer="no"
4074 fi
4075fi
4076
4077##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004078# check if we have fdatasync
4079
4080fdatasync=no
4081cat > $TMPC << EOF
4082#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004083int main(void) {
4084#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4085return fdatasync(0);
4086#else
Stefan Weile172fe12012-04-06 21:33:20 +02004087#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004088#endif
4089}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004090EOF
4091if compile_prog "" "" ; then
4092 fdatasync=yes
4093fi
4094
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004095##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004096# check if we have madvise
4097
4098madvise=no
4099cat > $TMPC << EOF
4100#include <sys/types.h>
4101#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004102#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004103int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4104EOF
4105if compile_prog "" "" ; then
4106 madvise=yes
4107fi
4108
4109##########################################
4110# check if we have posix_madvise
4111
4112posix_madvise=no
4113cat > $TMPC << EOF
4114#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004115#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004116int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4117EOF
4118if compile_prog "" "" ; then
4119 posix_madvise=yes
4120fi
4121
4122##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004123# check if we have usable SIGEV_THREAD_ID
4124
4125sigev_thread_id=no
4126cat > $TMPC << EOF
4127#include <signal.h>
4128int main(void) {
4129 struct sigevent ev;
4130 ev.sigev_notify = SIGEV_THREAD_ID;
4131 ev._sigev_un._tid = 0;
4132 asm volatile("" : : "g"(&ev));
4133 return 0;
4134}
4135EOF
4136if compile_prog "" "" ; then
4137 sigev_thread_id=yes
4138fi
4139
4140##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004141# check if trace backend exists
4142
Lluís Vilanova5b808272014-05-27 15:02:14 +02004143$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004144if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004145 error_exit "invalid trace backends" \
4146 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004147fi
4148
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004149##########################################
4150# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004151if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004152 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004153#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004154int main(void) { return 0; }
4155EOF
4156 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004157 if $pkg_config lttng-ust --exists; then
4158 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4159 else
4160 lttng_ust_libs="-llttng-ust"
4161 fi
4162 if $pkg_config liburcu-bp --exists; then
4163 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4164 else
4165 urcu_bp_libs="-lurcu-bp"
4166 fi
4167
4168 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4169 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004170 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004171 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004172 fi
4173fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004174
4175##########################################
4176# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004177if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004178 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004179 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004180 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004181 trace_backend_stap="no"
4182 if has 'stap' ; then
4183 trace_backend_stap="yes"
4184 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004185fi
4186
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004187##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004188# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304189
Peter Maydell7c2acc72013-04-08 12:11:27 +01004190# We prefer ucontext, but it's not always possible. The fallback
4191# is sigcontext. gthread is not selectable except explicitly, because
4192# it is not functional enough to run QEMU proper. (It is occasionally
4193# useful for debugging purposes.) On Windows the only valid backend
4194# is the Windows-specific one.
4195
4196ucontext_works=no
4197if test "$darwin" != "yes"; then
4198 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304199#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004200#ifdef __stub_makecontext
4201#error Ignoring glibc stub makecontext which will always fail
4202#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004203int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304204EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004205 if compile_prog "" "" ; then
4206 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304207 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004208fi
4209
4210if test "$coroutine" = ""; then
4211 if test "$mingw32" = "yes"; then
4212 coroutine=win32
4213 elif test "$ucontext_works" = "yes"; then
4214 coroutine=ucontext
4215 else
4216 coroutine=sigaltstack
4217 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004218else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004219 case $coroutine in
4220 windows)
4221 if test "$mingw32" != "yes"; then
4222 error_exit "'windows' coroutine backend only valid for Windows"
4223 fi
4224 # Unfortunately the user visible backend name doesn't match the
4225 # coroutine-*.c filename for this case, so we have to adjust it here.
4226 coroutine=win32
4227 ;;
4228 ucontext)
4229 if test "$ucontext_works" != "yes"; then
4230 feature_not_found "ucontext"
4231 fi
4232 ;;
4233 gthread|sigaltstack)
4234 if test "$mingw32" = "yes"; then
4235 error_exit "only the 'windows' coroutine backend is valid for Windows"
4236 fi
4237 ;;
4238 *)
4239 error_exit "unknown coroutine backend $coroutine"
4240 ;;
4241 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304242fi
4243
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004244if test "$coroutine_pool" = ""; then
4245 if test "$coroutine" = "gthread"; then
4246 coroutine_pool=no
4247 else
4248 coroutine_pool=yes
4249 fi
4250fi
4251if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4252 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4253fi
4254
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304255##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304256# check if we have open_by_handle_at
4257
Stefan Weil4e1797f2012-06-18 22:11:06 +02004258open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304259cat > $TMPC << EOF
4260#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004261#if !defined(AT_EMPTY_PATH)
4262# error missing definition
4263#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004264int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004265#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304266EOF
4267if compile_prog "" "" ; then
4268 open_by_handle_at=yes
4269fi
4270
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304271########################################
4272# check if we have linux/magic.h
4273
4274linux_magic_h=no
4275cat > $TMPC << EOF
4276#include <linux/magic.h>
4277int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004278 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304279}
4280EOF
4281if compile_prog "" "" ; then
4282 linux_magic_h=yes
4283fi
4284
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004285########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004286# check whether we can disable warning option with a pragma (this is needed
4287# to silence warnings in the headers of some versions of external libraries).
4288# This test has to be compiled with -Werror as otherwise an unknown pragma is
4289# only a warning.
4290#
4291# If we can't selectively disable warning in the code, disable -Werror so that
4292# the build doesn't fail anyway.
4293
Peter Maydell06d71fa2012-07-30 16:13:07 +01004294pragma_disable_unused_but_set=no
4295cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004296#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004297#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004298#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004299#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004300
Peter Maydell06d71fa2012-07-30 16:13:07 +01004301int main(void) {
4302 return 0;
4303}
4304EOF
4305if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004306 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004307else
4308 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004309fi
4310
4311########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004312# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004313
4314valgrind_h=no
4315cat > $TMPC << EOF
4316#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004317int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004318 return 0;
4319}
4320EOF
4321if compile_prog "" "" ; then
4322 valgrind_h=yes
4323fi
4324
4325########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004326# check if environ is declared
4327
4328has_environ=no
4329cat > $TMPC << EOF
4330#include <unistd.h>
4331int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004332 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004333 return 0;
4334}
4335EOF
4336if compile_prog "" "" ; then
4337 has_environ=yes
4338fi
4339
Richard Henderson76a347e2012-12-28 14:17:02 -08004340########################################
4341# check if cpuid.h is usable.
4342
4343cpuid_h=no
4344cat > $TMPC << EOF
4345#include <cpuid.h>
4346int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004347 unsigned a, b, c, d;
4348 int max = __get_cpuid_max(0, 0);
4349
4350 if (max >= 1) {
4351 __cpuid(1, a, b, c, d);
4352 }
4353
4354 if (max >= 7) {
4355 __cpuid_count(7, 0, a, b, c, d);
4356 }
4357
4358 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004359}
4360EOF
4361if compile_prog "" "" ; then
4362 cpuid_h=yes
4363fi
4364
Richard Hendersonf5401662013-02-16 12:46:59 -08004365########################################
4366# check if __[u]int128_t is usable.
4367
4368int128=no
4369cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004370#if defined(__clang_major__) && defined(__clang_minor__)
4371# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4372# error __int128_t does not work in CLANG before 3.2
4373# endif
4374#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004375__int128_t a;
4376__uint128_t b;
4377int main (void) {
4378 a = a + b;
4379 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004380 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004381 return 0;
4382}
4383EOF
4384if compile_prog "" "" ; then
4385 int128=yes
4386fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004387
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004388########################################
4389# check if getauxval is available.
4390
4391getauxval=no
4392cat > $TMPC << EOF
4393#include <sys/auxv.h>
4394int main(void) {
4395 return getauxval(AT_HWCAP) == 0;
4396}
4397EOF
4398if compile_prog "" "" ; then
4399 getauxval=yes
4400fi
4401
John Snowfd0e6052015-03-25 18:57:39 -04004402########################################
4403# check if ccache is interfering with
4404# semantic analysis of macros
4405
John Snow5e4dfd32015-10-28 13:56:40 -04004406unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004407ccache_cpp2=no
4408cat > $TMPC << EOF
4409static const int Z = 1;
4410#define fn() ({ Z; })
4411#define TAUT(X) ((X) == Z)
4412#define PAREN(X, Y) (X == Y)
4413#define ID(X) (X)
4414int main(int argc, char *argv[])
4415{
4416 int x = 0, y = 0;
4417 x = ID(x);
4418 x = fn();
4419 fn();
4420 if (PAREN(x, y)) return 0;
4421 if (TAUT(Z)) return 0;
4422 return 0;
4423}
4424EOF
4425
4426if ! compile_object "-Werror"; then
4427 ccache_cpp2=yes
4428fi
4429
John Snowb553a042015-11-03 15:43:42 -05004430#################################################
4431# clang does not support glibc + FORTIFY_SOURCE.
4432
4433if test "$fortify_source" != "no"; then
4434 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4435 fortify_source="no";
4436 elif echo | $cxx -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4437 fortify_source="no";
4438 else
4439 fortify_source="yes"
4440 fi
4441fi
4442
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304443##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004444# End of CC checks
4445# After here, no more $cc or $ld runs
4446
Blue Swirl1d728c32012-05-01 18:45:39 +00004447if test "$gcov" = "yes" ; then
4448 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4449 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004450elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004451 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004452fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004453
Peter Lieven6542aa92014-02-03 10:26:13 +01004454##########################################
4455# Do we have libnfs
4456if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004457 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004458 libnfs="yes"
4459 libnfs_libs=$($pkg_config --libs libnfs)
4460 LIBS="$LIBS $libnfs_libs"
4461 else
4462 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004463 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004464 fi
4465 libnfs="no"
4466 fi
4467fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004468
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004469# Disable zero malloc errors for official releases unless explicitly told to
4470# enable/disable
4471if test -z "$zero_malloc" ; then
4472 if test "$z_version" = "50" ; then
4473 zero_malloc="no"
4474 else
4475 zero_malloc="yes"
4476 fi
4477fi
4478
Peter Maydell6ca026c2012-07-18 15:10:18 +01004479# Now we've finished running tests it's OK to add -Werror to the compiler flags
4480if test "$werror" = "yes"; then
4481 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4482fi
4483
Juan Quintelae86ecd42009-08-03 14:45:59 +02004484if test "$solaris" = "no" ; then
4485 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004486 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004487 fi
4488fi
4489
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004490# test if pod2man has --utf8 option
4491if pod2man --help | grep -q utf8; then
4492 POD2MAN="pod2man --utf8"
4493else
4494 POD2MAN="pod2man"
4495fi
4496
Blue Swirl952afb72010-09-19 08:36:34 +00004497# Use ASLR, no-SEH and DEP if available
4498if test "$mingw32" = "yes" ; then
4499 for flag in --dynamicbase --no-seh --nxcompat; do
4500 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4501 LDFLAGS="-Wl,$flag $LDFLAGS"
4502 fi
4503 done
4504fi
4505
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004506qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004507qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004508qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004509qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004510
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004511tools=""
4512if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004513 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004514 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4515 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004516 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004517 fi
4518fi
4519if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304520 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004521 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4522 virtfs=yes
4523 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4524 else
4525 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004526 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304527 fi
Andreas Färber17500372012-05-01 01:12:03 +02004528 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004529 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304530 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004531fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004532
4533# Probe for guest agent support/options
4534
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004535if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004536 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004537 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004538 guest_agent=yes
4539 elif [ "$guest_agent" != yes ]; then
4540 guest_agent=no
4541 else
4542 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004543 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004544fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004545
Michael Roth9d6bc272015-08-26 10:49:13 -05004546# Guest agent Window MSI package
4547
4548if test "$guest_agent" != yes; then
4549 if test "$guest_agent_msi" = yes; then
4550 error_exit "MSI guest agent package requires guest agent enabled"
4551 fi
4552 guest_agent_msi=no
4553elif test "$mingw32" != "yes"; then
4554 if test "$guest_agent_msi" = "yes"; then
4555 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4556 fi
4557 guest_agent_msi=no
4558elif ! has wixl; then
4559 if test "$guest_agent_msi" = "yes"; then
4560 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4561 fi
4562 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004563else
4564 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4565 # disabled explicitly
4566 if test "$guest_agent_msi" != "no"; then
4567 guest_agent_msi=yes
4568 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004569fi
4570
Michael Roth1a349042015-08-26 11:14:31 -05004571if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004572 if test "$guest_agent_with_vss" = "yes"; then
4573 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4574 fi
4575
4576 if test "$QEMU_GA_MANUFACTURER" = ""; then
4577 QEMU_GA_MANUFACTURER=QEMU
4578 fi
4579
4580 if test "$QEMU_GA_DISTRO" = ""; then
4581 QEMU_GA_DISTRO=Linux
4582 fi
4583
4584 if test "$QEMU_GA_VERSION" = ""; then
4585 QEMU_GA_VERSION=`cat $source_path/VERSION`
4586 fi
4587
4588 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4589
4590 case "$cpu" in
4591 x86_64)
4592 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4593 ;;
4594 i386)
4595 QEMU_GA_MSI_ARCH="-D Arch=32"
4596 ;;
4597 *)
4598 error_exit "CPU $cpu not supported for building installation package"
4599 ;;
4600 esac
4601fi
4602
Paolo Bonzinica35f782010-05-26 16:08:29 +02004603# Mac OS X ships with a broken assembler
4604roms=
4605if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4606 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4607 "$softmmu" = yes ; then
4608 roms="optionrom"
4609fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004610if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004611 roms="$roms spapr-rtas"
4612fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004613
Christian Borntraeger9933c302013-04-23 01:23:03 +00004614if test "$cpu" = "s390x" ; then
4615 roms="$roms s390-ccw"
4616fi
4617
Richard Henderson964c6fa2013-06-21 19:10:16 -07004618# Probe for the need for relocating the user-only binary.
4619if test "$pie" = "no" ; then
4620 textseg_addr=
4621 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004622 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4623 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004624 textseg_addr=0x60000000
4625 ;;
4626 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004627 # A 256M aligned address, high in the address space, with enough
4628 # room for the code_gen_buffer above it before the stack.
4629 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004630 ;;
4631 esac
4632 if [ -n "$textseg_addr" ]; then
4633 cat > $TMPC <<EOF
4634 int main(void) { return 0; }
4635EOF
4636 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4637 if ! compile_prog "" "$textseg_ldflags"; then
4638 # In case ld does not support -Ttext-segment, edit the default linker
4639 # script via sed to set the .text start addr. This is needed on FreeBSD
4640 # at least.
4641 $ld --verbose | sed \
4642 -e '1,/==================================================/d' \
4643 -e '/==================================================/,$d' \
4644 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4645 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4646 textseg_ldflags="-Wl,-T../config-host.ld"
4647 fi
4648 fi
4649fi
4650
Jan Kiszka50e12062014-10-02 10:03:55 +02004651# prepend pixman and ftd flags after all config tests are done
4652QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4653libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004654
bellard43ce4df2003-06-09 19:53:12 +00004655echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004656echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004657echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004658echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004659echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004660echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004661echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004662echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004663if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004664echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004665echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004666echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004667else
4668echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004669echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004670fi
bellard5a671352003-10-01 00:13:48 +00004671echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004672echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004673echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004674echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004675echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004676echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004677echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004678echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004679echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004680echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004681echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004682echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004683if test "$slirp" = "yes" ; then
4684 echo "smbd $smbd"
4685fi
Fam Zheng17969262014-02-10 14:48:56 +08004686echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004687echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004688echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004689echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004690echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004691echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004692echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004693echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004694echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004695echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004696if test "$darwin" = "yes" ; then
4697 echo "Cocoa support $cocoa"
4698fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004699echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004700echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004701echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004702echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004703echo "GNUTLS support $gnutls"
4704echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004705echo "libgcrypt $gcrypt"
4706echo "nettle $nettle ${nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004707echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004708echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004709echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004710echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004711echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004712echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004713echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004714echo "Block whitelist (rw) $block_drv_rw_whitelist"
4715echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304716echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004717echo "VNC support $vnc"
4718if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004719 echo "VNC SASL support $vnc_sasl"
4720 echo "VNC JPEG support $vnc_jpeg"
4721 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004722fi
blueswir131422552007-04-16 18:27:06 +00004723if test -n "$sparc_cpu"; then
4724 echo "Target Sparc Arch $sparc_cpu"
4725fi
aliguorie37630c2009-04-22 15:19:10 +00004726echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004727if test "$xen" = "yes" ; then
4728 echo "xen ctrl version $xen_ctrl_version"
4729fi
aurel322e4d9fb2008-04-08 06:01:02 +00004730echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004731echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004732echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004733echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004734echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004735echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004736echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004737echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004738echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004739echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004740echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004741echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004742echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004743echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004744echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004745echo "madvise $madvise"
4746echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004747echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004748echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004749echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004750echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004751echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004752echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004753if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004754echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004755fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004756if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004757echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004758else
4759echo "spice support $spice"
4760fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004761echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004762echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004763echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004764echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004765echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004766echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004767echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004768echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004769echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004770echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004771echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004772echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004773echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004774echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004775echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304776echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004777echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004778echo "gcov $gcov_tool"
4779echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004780echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004781echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004782echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004783echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004784echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004785echo "lzo support $lzo"
4786echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004787echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004788echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004789echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004790echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004791
Stefan Weil1ba16962011-07-29 22:40:45 +02004792if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004793echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004794fi
bellard97a847b2003-08-10 21:36:04 +00004795
Juan Quintela98ec69a2009-07-16 18:34:18 +02004796config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004797
Stefan Weildbd99ae2013-01-01 18:33:44 +01004798echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4799
Juan Quintela98ec69a2009-07-16 18:34:18 +02004800echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004801echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004802
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004803echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004804echo "prefix=$prefix" >> $config_host_mak
4805echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004806echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004807echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004808echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004809echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004810echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004811echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004812echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4813echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004814echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004815if test "$mingw32" = "no" ; then
4816 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4817fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004818echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004819echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4820echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004821echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004822echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004823
Juan Quintela98ec69a2009-07-16 18:34:18 +02004824echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004825
aurel32f8393942009-04-13 18:45:38 +00004826if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004827 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004828fi
aliguori1625af82009-04-05 17:41:02 +00004829if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004830 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004831fi
bellard7d132992003-03-06 23:23:54 +00004832if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004833 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004834fi
bellard67b915a2004-03-31 23:37:16 +00004835if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004836 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004837 rc_version=`cat $source_path/VERSION`
4838 version_major=${rc_version%%.*}
4839 rc_version=${rc_version#*.}
4840 version_minor=${rc_version%%.*}
4841 rc_version=${rc_version#*.}
4842 version_subminor=${rc_version%%.*}
4843 version_micro=0
4844 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4845 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004846 if test "$guest_agent_with_vss" = "yes" ; then
4847 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004848 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004849 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4850 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004851 if test "$guest_agent_ntddscsi" = "yes" ; then
4852 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4853 fi
Michael Roth1a349042015-08-26 11:14:31 -05004854 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004855 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4856 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4857 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4858 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4859 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4860 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4861 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4862 fi
pbrook210fa552007-02-27 21:04:49 +00004863else
Juan Quintela35f4df22009-07-27 16:13:07 +02004864 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004865fi
blueswir1128ab2f2008-08-15 18:33:42 +00004866
Mark McLoughlindffcb712009-10-22 17:49:11 +01004867if test "$linux" = "yes" ; then
4868 echo "CONFIG_LINUX=y" >> $config_host_mak
4869fi
4870
bellard83fb7ad2004-07-05 21:25:26 +00004871if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004872 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004873fi
malcb29fe3e2008-11-18 01:42:22 +00004874
4875if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004876 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004877fi
4878
bellardec530c82006-04-25 22:36:06 +00004879if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004880 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004881 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004882 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004883 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004884 fi
bellardec530c82006-04-25 22:36:06 +00004885fi
Andreas Färber179cf402010-09-20 00:50:43 +02004886if test "$haiku" = "yes" ; then
4887 echo "CONFIG_HAIKU=y" >> $config_host_mak
4888fi
bellard97a847b2003-08-10 21:36:04 +00004889if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004890 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004891fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004892if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004893 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004894fi
bellardc20709a2004-04-21 23:27:19 +00004895if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004896 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004897 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004898fi
ths8a16d272008-07-19 09:56:24 +00004899if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004900 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004901fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004902if test "$netmap" = "yes" ; then
4903 echo "CONFIG_NETMAP=y" >> $config_host_mak
4904fi
Gonglei015a33b2014-07-01 20:58:08 +08004905if test "$l2tpv3" = "yes" ; then
4906 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4907fi
Corey Bryant47e98652012-01-26 09:42:26 -05004908if test "$cap_ng" = "yes" ; then
4909 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4910fi
Juan Quintela2358a492009-07-27 16:13:25 +02004911echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004912for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004913 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004914 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004915done
Juan Quintela67f86e82009-08-03 14:46:59 +02004916if test "$audio_pt_int" = "yes" ; then
4917 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4918fi
malcd5631632009-10-10 01:13:41 +04004919if test "$audio_win_int" = "yes" ; then
4920 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4921fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004922echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4923echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004924if test "$vnc" = "yes" ; then
4925 echo "CONFIG_VNC=y" >> $config_host_mak
4926fi
aliguori2f9606b2009-03-06 20:27:28 +00004927if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004928 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004929fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004930if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004931 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004932fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004933if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004934 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004935fi
aliguori76655d62009-03-06 20:27:37 +00004936if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004937 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004938fi
Stefan Weilee682d22009-10-01 20:10:37 +02004939if test "$uuid" = "yes" ; then
4940 echo "CONFIG_UUID=y" >> $config_host_mak
4941fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004942if test "$xfs" = "yes" ; then
4943 echo "CONFIG_XFS=y" >> $config_host_mak
4944fi
pbrookb1a550a2006-04-16 13:28:56 +00004945qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004946echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004947echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004948echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004949echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004950if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004951 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004952fi
Fam Zheng17969262014-02-10 14:48:56 +08004953if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004954 # $shacmd can generate a hash started with digit, which the compiler doesn't
4955 # like as an symbol. So prefix it with an underscore
4956 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004957 echo "CONFIG_MODULES=y" >> $config_host_mak
4958fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004959if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004960 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004961 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004962 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004963fi
4964if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004965 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004966fi
4967if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004968 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004969fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004970if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004971 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004972fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004973if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004974 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004975fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004976if test "$accept4" = "yes" ; then
4977 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4978fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304979if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004980 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304981fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004982if test "$eventfd" = "yes" ; then
4983 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4984fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004985if test "$memfd" = "yes" ; then
4986 echo "CONFIG_MEMFD=y" >> $config_host_mak
4987fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004988if test "$fallocate" = "yes" ; then
4989 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4990fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004991if test "$fallocate_punch_hole" = "yes" ; then
4992 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4993fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004994if test "$fallocate_zero_range" = "yes" ; then
4995 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4996fi
Kevin Wolfed911432014-09-29 17:12:59 +02004997if test "$posix_fallocate" = "yes" ; then
4998 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4999fi
Peter Maydellc727f472011-01-06 11:05:10 +00005000if test "$sync_file_range" = "yes" ; then
5001 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5002fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005003if test "$fiemap" = "yes" ; then
5004 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5005fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005006if test "$dup3" = "yes" ; then
5007 echo "CONFIG_DUP3=y" >> $config_host_mak
5008fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005009if test "$ppoll" = "yes" ; then
5010 echo "CONFIG_PPOLL=y" >> $config_host_mak
5011fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005012if test "$prctl_pr_set_timerslack" = "yes" ; then
5013 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5014fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005015if test "$epoll" = "yes" ; then
5016 echo "CONFIG_EPOLL=y" >> $config_host_mak
5017fi
5018if test "$epoll_create1" = "yes" ; then
5019 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5020fi
5021if test "$epoll_pwait" = "yes" ; then
5022 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5023fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005024if test "$sendfile" = "yes" ; then
5025 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5026fi
Riku Voipio51834342014-06-22 11:25:42 +01005027if test "$timerfd" = "yes" ; then
5028 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5029fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005030if test "$setns" = "yes" ; then
5031 echo "CONFIG_SETNS=y" >> $config_host_mak
5032fi
aurel323b3f24a2009-04-15 16:12:13 +00005033if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005034 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005035fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005036if test "$inotify1" = "yes" ; then
5037 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5038fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005039if test "$byteswap_h" = "yes" ; then
5040 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5041fi
5042if test "$bswap_h" = "yes" ; then
5043 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5044fi
Alexander Graf769ce762009-05-11 17:41:42 +02005045if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005046 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005047 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005048 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005049fi
aurel322e4d9fb2008-04-08 06:01:02 +00005050if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005051 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005052fi
balrogfb599c92008-09-28 23:49:55 +00005053if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005054 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005055 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005056fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005057if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005058 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5059fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005060echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005061if test "$gtk" = "yes" ; then
5062 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005063 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005064 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005065 if test "$gtk_gl" = "yes" ; then
5066 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5067 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005068fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005069if test "$gnutls" = "yes" ; then
5070 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5071fi
5072if test "$gnutls_hash" = "yes" ; then
5073 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5074fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005075if test "$gcrypt" = "yes" ; then
5076 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005077fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005078if test "$nettle" = "yes" ; then
5079 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005080 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005081fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005082if test "$tasn1" = "yes" ; then
5083 echo "CONFIG_TASN1=y" >> $config_host_mak
5084fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005085if test "$vte" = "yes" ; then
5086 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005087 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5088fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005089if test "$virglrenderer" = "yes" ; then
5090 echo "CONFIG_VIRGL=y" >> $config_host_mak
5091 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5092 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5093fi
aliguorie37630c2009-04-22 15:19:10 +00005094if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005095 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005096 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00005097fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005098if test "$linux_aio" = "yes" ; then
5099 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5100fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005101if test "$attr" = "yes" ; then
5102 echo "CONFIG_ATTR=y" >> $config_host_mak
5103fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005104if test "$libattr" = "yes" ; then
5105 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5106fi
Meador Inge983eef52012-02-24 14:00:42 +05305107if test "$virtfs" = "yes" ; then
5108 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005109fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005110if test "$vhost_scsi" = "yes" ; then
5111 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5112fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005113if test "$vhost_net" = "yes" ; then
5114 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5115fi
ths77755342008-11-27 15:45:16 +00005116if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005117 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005118fi
aliguoribf9298b2008-12-05 20:05:26 +00005119if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005120 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005121fi
aliguoriceb42de2009-04-07 18:43:28 +00005122if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005123 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005124fi
aurel32f652e6a2008-12-16 10:43:48 +00005125if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005126 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005127fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005128if test "$signalfd" = "yes" ; then
5129 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5130fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005131if test "$tcg_interpreter" = "yes" ; then
5132 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5133fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005134if test "$fdatasync" = "yes" ; then
5135 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5136fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005137if test "$madvise" = "yes" ; then
5138 echo "CONFIG_MADVISE=y" >> $config_host_mak
5139fi
5140if test "$posix_madvise" = "yes" ; then
5141 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5142fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005143if test "$sigev_thread_id" = "yes" ; then
5144 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5145fi
bellard97a847b2003-08-10 21:36:04 +00005146
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005147if test "$spice" = "yes" ; then
5148 echo "CONFIG_SPICE=y" >> $config_host_mak
5149fi
5150
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005151if test "$smartcard" = "yes" ; then
5152 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005153fi
5154
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005155if test "$libusb" = "yes" ; then
5156 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5157fi
5158
Hans de Goede69354a82011-07-19 11:04:10 +02005159if test "$usb_redir" = "yes" ; then
5160 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5161fi
5162
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005163if test "$opengl" = "yes" ; then
5164 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005165 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005166 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005167fi
5168
qiaonuohan607dacd2014-02-18 14:11:30 +08005169if test "$lzo" = "yes" ; then
5170 echo "CONFIG_LZO=y" >> $config_host_mak
5171fi
5172
5173if test "$snappy" = "yes" ; then
5174 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5175fi
5176
Peter Wu6b383c02015-01-06 18:48:14 +01005177if test "$bzip2" = "yes" ; then
5178 echo "CONFIG_BZIP2=y" >> $config_host_mak
5179 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5180fi
5181
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005182if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005183 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005184 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5185 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005186fi
5187
Peter Lieven6542aa92014-02-03 10:26:13 +01005188if test "$libnfs" = "yes" ; then
5189 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5190fi
5191
Eduardo Otubof7945732012-08-14 18:44:05 -03005192if test "$seccomp" = "yes"; then
5193 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5194fi
5195
bellard83fb7ad2004-07-05 21:25:26 +00005196# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005197if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005198 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005199fi
5200
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005201if test "$zero_malloc" = "yes" ; then
5202 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5203fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005204if test "$localtime_r" = "yes" ; then
5205 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5206fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005207if test "$qom_cast_debug" = "yes" ; then
5208 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5209fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005210if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005211 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005212 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5213 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005214fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005215
Peter Maydell7c2acc72013-04-08 12:11:27 +01005216echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005217if test "$coroutine_pool" = "yes" ; then
5218 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5219else
5220 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5221fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305222
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305223if test "$open_by_handle_at" = "yes" ; then
5224 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5225fi
5226
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305227if test "$linux_magic_h" = "yes" ; then
5228 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5229fi
5230
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005231if test "$pragma_diagnostic_available" = "yes" ; then
5232 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005233fi
5234
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005235if test "$valgrind_h" = "yes" ; then
5236 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5237fi
5238
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005239if test "$has_environ" = "yes" ; then
5240 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5241fi
5242
Richard Henderson76a347e2012-12-28 14:17:02 -08005243if test "$cpuid_h" = "yes" ; then
5244 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5245fi
5246
Richard Hendersonf5401662013-02-16 12:46:59 -08005247if test "$int128" = "yes" ; then
5248 echo "CONFIG_INT128=y" >> $config_host_mak
5249fi
5250
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005251if test "$getauxval" = "yes" ; then
5252 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5253fi
5254
Bharata B Raoeb100392012-09-24 14:42:45 +05305255if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005256 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005257 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5258 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305259fi
5260
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305261if test "$glusterfs_discard" = "yes" ; then
5262 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5263fi
5264
Bharata B Rao7c815372013-12-21 14:51:25 +05305265if test "$glusterfs_zerofill" = "yes" ; then
5266 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5267fi
5268
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005269if test "$archipelago" = "yes" ; then
5270 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5271 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5272fi
5273
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005274if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005275 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005276 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5277 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005278fi
5279
Jeff Cody4f18b782013-10-30 10:44:39 -04005280if test "$vhdx" = "yes" ; then
5281 echo "CONFIG_VHDX=y" >> $config_host_mak
5282fi
5283
blueswir168063642008-11-22 21:03:55 +00005284# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005285if test "$libusb" = "yes"; then
5286 echo "HOST_USB=libusb legacy" >> $config_host_mak
5287else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005288 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005289fi
blueswir168063642008-11-22 21:03:55 +00005290
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005291# TPM passthrough support?
5292if test "$tpm" = "yes"; then
5293 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5294 if test "$tpm_passthrough" = "yes"; then
5295 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5296 fi
5297fi
5298
Lluís Vilanova5b808272014-05-27 15:02:14 +02005299echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5300if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005301 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305302fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005303if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005304 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5305 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005306 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005307fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005308if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005309 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5310fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005311if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005312 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5313fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005314if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005315 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5316 if test "$trace_backend_stap" = "yes" ; then
5317 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5318 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005319fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005320if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005321 if test "$linux" = "yes" ; then
5322 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005323 else
Stewart Smith21684af2014-01-24 12:39:10 +11005324 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005325 fi
5326fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005327echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5328
Michael R. Hines2da776d2013-07-22 10:01:54 -04005329if test "$rdma" = "yes" ; then
5330 echo "CONFIG_RDMA=y" >> $config_host_mak
5331fi
5332
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005333# Hold two types of flag:
5334# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5335# a thread we have a handle to
5336# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5337# platform
5338if test "$pthread_setname_np" = "yes" ; then
5339 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5340 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5341fi
5342
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005343if test "$tcg_interpreter" = "yes"; then
5344 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5345elif test "$ARCH" = "sparc64" ; then
5346 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5347elif test "$ARCH" = "s390x" ; then
5348 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005349elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005350 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005351elif test "$ARCH" = "ppc64" ; then
5352 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005353else
5354 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5355fi
5356QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5357
Juan Quintela98ec69a2009-07-16 18:34:18 +02005358echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005359echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005360echo "MAKE=$make" >> $config_host_mak
5361echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005362echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5363echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005364if test -n "$libtool"; then
5365 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5366 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5367else
5368 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5369 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5370fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005371echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005372echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005373if $iasl -h > /dev/null 2>&1; then
5374 echo "IASL=$iasl" >> $config_host_mak
5375fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005376echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005377echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005378echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005379echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005380echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005381echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005382echo "AS=$as" >> $config_host_mak
5383echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005384echo "OBJCOPY=$objcopy" >> $config_host_mak
5385echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005386echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005387echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005388echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005389echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005390echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005391echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005392echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005393if test "$sparse" = "yes" ; then
5394 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005395 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005396 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005397 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5398 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5399fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005400if test "$cross_prefix" != ""; then
5401 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5402else
5403 echo "AUTOCONF_HOST := " >> $config_host_mak
5404fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005405echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005406echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005407echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005408echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005409echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005410echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005411echo "DSOSUF=$DSOSUF" >> $config_host_mak
5412echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005413echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005414echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5415echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005416echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005417echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005418if test "$gcov" = "yes" ; then
5419 echo "CONFIG_GCOV=y" >> $config_host_mak
5420 echo "GCOV=$gcov_tool" >> $config_host_mak
5421fi
Juan Quintela804edf22009-07-27 16:12:49 +02005422
Peter Maydell6efd7512011-11-30 11:59:04 +00005423# use included Linux headers
5424if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005425 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005426 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005427 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005428 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005429 ;;
5430 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005431 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005432 ;;
5433 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005434 linux_arch=s390
5435 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005436 aarch64)
5437 linux_arch=arm64
5438 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005439 mips64)
5440 linux_arch=mips
5441 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005442 *)
5443 # For most CPUs the kernel architecture name and QEMU CPU name match.
5444 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005445 ;;
5446 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005447 # For non-KVM architectures we will not have asm headers
5448 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5449 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5450 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005451fi
5452
bellard1d14ffa2005-10-30 18:58:22 +00005453for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005454target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005455config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005456target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005457target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005458
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005459case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005460 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 +02005461 target_bigendian=yes
5462 ;;
5463esac
bellard97a847b2003-08-10 21:36:04 +00005464target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005465target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005466target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005467target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005468case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005469 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005470 target_softmmu="yes"
5471 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005472 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005473 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005474 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005475 fi
pbrook9e407a82007-05-26 16:38:53 +00005476 target_user_only="yes"
5477 target_linux_user="yes"
5478 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005479 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005480 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005481 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005482 fi
blueswir184778502008-10-26 20:33:16 +00005483 target_user_only="yes"
5484 target_bsd_user="yes"
5485 ;;
pbrook9e407a82007-05-26 16:38:53 +00005486 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005487 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005488 exit 1
5489 ;;
5490esac
ths831b7822007-01-18 20:06:33 +00005491
bellard97a847b2003-08-10 21:36:04 +00005492mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005493echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005494
pbrooke5fe0c52006-06-11 13:32:59 +00005495bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005496interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005497gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005498
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005499TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005500TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005501TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005502
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005503case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005504 i386)
aurel322408a522008-04-20 20:19:44 +00005505 ;;
5506 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005507 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005508 ;;
5509 alpha)
aurel322408a522008-04-20 20:19:44 +00005510 ;;
5511 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005512 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005513 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005514 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005515 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005516 aarch64)
5517 TARGET_BASE_ARCH=arm
5518 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005519 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 +01005520 ;;
aurel322408a522008-04-20 20:19:44 +00005521 cris)
aurel322408a522008-04-20 20:19:44 +00005522 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005523 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005524 ;;
aurel322408a522008-04-20 20:19:44 +00005525 m68k)
aurel322408a522008-04-20 20:19:44 +00005526 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005527 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005528 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005529 microblaze|microblazeel)
5530 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005531 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005532 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005533 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005534 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005535 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005536 ;;
5537 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005538 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005539 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005540 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005541 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005542 ;;
5543 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005544 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005545 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005546 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005547 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005548 moxie)
5549 ;;
Jia Liue67db062012-07-20 15:50:39 +08005550 or32)
5551 TARGET_ARCH=openrisc
5552 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005553 ;;
aurel322408a522008-04-20 20:19:44 +00005554 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005555 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005556 ;;
5557 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005558 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005559 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005560 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005561 ;;
5562 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005563 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005564 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005565 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005566 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005567 ppc64le)
5568 TARGET_ARCH=ppc64
5569 TARGET_BASE_ARCH=ppc
5570 TARGET_ABI_DIR=ppc
5571 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5572 ;;
aurel322408a522008-04-20 20:19:44 +00005573 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005574 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005575 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005576 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005577 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005578 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005579 ;;
5580 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005581 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005582 bflt="yes"
5583 ;;
5584 sparc)
aurel322408a522008-04-20 20:19:44 +00005585 ;;
5586 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005587 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005588 ;;
5589 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005590 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005591 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005592 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005593 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005594 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005595 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005596 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 +01005597 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005598 tilegx)
5599 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005600 tricore)
5601 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005602 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005603 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005604 xtensa|xtensaeb)
5605 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005606 ;;
aurel322408a522008-04-20 20:19:44 +00005607 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005608 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005609 ;;
5610esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005611# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5612if [ "$TARGET_BASE_ARCH" = "" ]; then
5613 TARGET_BASE_ARCH=$TARGET_ARCH
5614fi
5615
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005616symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5617
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005618upper() {
5619 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5620}
5621
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005622target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005623echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005624echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005625echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005626if [ "$TARGET_ABI_DIR" = "" ]; then
5627 TARGET_ABI_DIR=$TARGET_ARCH
5628fi
Juan Quintela25be2102009-10-07 02:41:00 +02005629echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005630if [ "$HOST_VARIANT_DIR" != "" ]; then
5631 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5632fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005633case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005634 i386|x86_64)
5635 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005636 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005637 if test "$xen_pci_passthrough" = yes; then
5638 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5639 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005640 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005641 ;;
5642 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005643esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005644case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005645 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005646 # Make sure the target and host cpus are compatible
5647 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005648 \( "$target_name" = "$cpu" -o \
5649 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5650 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5651 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5652 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005653 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005654 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005655 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5656 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5657 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005658 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005659 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005660 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5661 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005662 fi
5663esac
bellardde83cd02003-06-15 20:25:43 +00005664if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005665 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005666fi
5667if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005668 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005669fi
bellard997344f2003-10-27 21:10:39 +00005670if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005671 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005672 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005673fi
ths831b7822007-01-18 20:06:33 +00005674if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005675 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005676fi
pbrook56aebc82008-10-11 17:55:29 +00005677list=""
5678if test ! -z "$gdb_xml_files" ; then
5679 for x in $gdb_xml_files; do
5680 list="$list $source_path/gdb-xml/$x"
5681 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005682 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005683fi
bellardde83cd02003-06-15 20:25:43 +00005684
pbrooke5fe0c52006-06-11 13:32:59 +00005685if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005686 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005687fi
blueswir184778502008-10-26 20:33:16 +00005688if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005689 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005690fi
bellard5b0753e2005-03-01 21:37:28 +00005691
Juan Quintela4afddb52009-08-03 14:46:45 +02005692# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005693
Juan Quintela4afddb52009-08-03 14:46:45 +02005694cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005695ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005696
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005697disas_config() {
5698 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5699 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5700}
5701
Juan Quintela64656022009-08-03 14:46:53 +02005702for i in $ARCH $TARGET_BASE_ARCH ; do
5703 case "$i" in
5704 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005705 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005706 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005707 aarch64)
5708 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005709 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005710 fi
5711 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005712 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005713 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005714 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005715 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005716 fi
Juan Quintela64656022009-08-03 14:46:53 +02005717 ;;
5718 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005719 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005720 ;;
5721 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005722 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005723 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005724 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005725 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005726 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005727 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005728 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005729 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005730 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005731 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005732 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005733 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005734 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005735 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005736 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005737 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005738 ;;
5739 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005740 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005741 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005742 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005743 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005744 ;;
Jia Liue67db062012-07-20 15:50:39 +08005745 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005746 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005747 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005748 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005749 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005750 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005751 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005752 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005753 ;;
5754 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005755 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005756 ;;
5757 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005758 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005759 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005760 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005761 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005762 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005763 esac
5764done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005765if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005766 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005767fi
Juan Quintela64656022009-08-03 14:46:53 +02005768
Juan Quintela6ee71262009-08-03 14:46:47 +02005769case "$ARCH" in
5770alpha)
5771 # Ensure there's only a single GP
5772 cflags="-msmall-data $cflags"
5773;;
5774esac
5775
Juan Quintelad02c1db2009-08-03 14:46:50 +02005776if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005777 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005778 if test "$target_linux_user" = "yes" ; then
5779 cflags="-p $cflags"
5780 ldflags="-p $ldflags"
5781 fi
5782 if test "$target_softmmu" = "yes" ; then
5783 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005784 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005785 fi
5786fi
5787
Juan Quintela9b8e1112009-08-03 14:46:46 +02005788if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005789 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005790fi
Juan Quintelafa282482009-07-22 22:37:39 +02005791
Juan Quintela25be2102009-10-07 02:41:00 +02005792echo "LDFLAGS+=$ldflags" >> $config_target_mak
5793echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005794
bellard97a847b2003-08-10 21:36:04 +00005795done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005796
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005797if [ "$pixman" = "internal" ]; then
5798 echo "config-host.h: subdir-pixman" >> $config_host_mak
5799fi
5800
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005801if [ "$dtc_internal" = "yes" ]; then
5802 echo "config-host.h: subdir-dtc" >> $config_host_mak
5803fi
5804
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005805if test "$numa" = "yes"; then
5806 echo "CONFIG_NUMA=y" >> $config_host_mak
5807fi
5808
John Snowfd0e6052015-03-25 18:57:39 -04005809if test "$ccache_cpp2" = "yes"; then
5810 echo "export CCACHE_CPP2=y" >> $config_host_mak
5811fi
5812
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005813# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005814DIRS="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 +04005815DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005816DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005817DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005818DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005819FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5820FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005821FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005822FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005823FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005824FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005825FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005826FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005827for bios_file in \
5828 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005829 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005830 $source_path/pc-bios/*.rom \
5831 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005832 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005833 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005834 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005835 $source_path/pc-bios/palcode-*
5836do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005837 FILES="$FILES pc-bios/`basename $bios_file`"
5838done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005839for test_file in `find $source_path/tests/acpi-test-data -type f`
5840do
5841 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5842done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005843mkdir -p $DIRS
5844for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005845 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005846 symlink "$source_path/$f" "$f"
5847 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005848done
Paul Brook1ad21342009-05-19 16:17:58 +01005849
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005850# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005851for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005852 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005853 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005854 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005855 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005856 echo "CC=$cc" >> $config_mak
5857 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005858 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005859 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005860 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005861 echo "LD=$ld" >> $config_mak
5862done
5863
Max Reitz76c75602014-05-24 23:24:56 +02005864# set up qemu-iotests in this build directory
5865iotests_common_env="tests/qemu-iotests/common.env"
5866iotests_check="tests/qemu-iotests/check"
5867
5868echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5869echo >> "$iotests_common_env"
5870echo "export PYTHON='$python'" >> "$iotests_common_env"
5871
5872if [ ! -e "$iotests_check" ]; then
5873 symlink "$source_path/$iotests_check" "$iotests_check"
5874fi
5875
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005876# Save the configure command line for later reuse.
5877cat <<EOD >config.status
5878#!/bin/sh
5879# Generated by configure.
5880# Run this file to recreate the current configuration.
5881# Compiler output produced by configure, useful for debugging
5882# configure, is in config.log if it exists.
5883EOD
5884printf "exec" >>config.status
5885printf " '%s'" "$0" "$@" >>config.status
5886echo >>config.status
5887chmod +x config.status
5888
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005889rm -r "$TMPDIR1"