blob: 10ca25c9547d5238d2e2cea658c2bc2ba8d8f26d [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
John Snow5e4dfd32015-10-28 13:56:40 -040011# Don't allow CCACHE, if present, to use cached results of compile tests!
12export CCACHE_RECACHE=yes
13
Peter Maydell8cd05ab2014-05-23 17:07:24 +010014# Temporary directory used for files created while
15# configure runs. Since it is in the build directory
16# we can safely blow away any previous version of it
17# (and we need not jump through hoops to try to delete
18# it when configure exits.)
19TMPDIR1="config-temp"
20rm -rf "${TMPDIR1}"
21mkdir -p "${TMPDIR1}"
22if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
bellard7d132992003-03-06 23:23:54 +000025fi
26
Peter Maydell8cd05ab2014-05-23 17:07:24 +010027TMPB="qemu-conf"
28TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050029TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000030TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Don Slutz66518bf2014-01-02 21:12:46 -050031TMPL="${TMPDIR1}/${TMPB}.lo"
32TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010033TMPE="${TMPDIR1}/${TMPB}.exe"
bellard7d132992003-03-06 23:23:54 +000034
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020035rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000036
Peter Maydellb48e3612011-11-23 17:26:44 +000037# Print a helpful header at the top of config.log
38echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000039printf "# Configured with:" >> config.log
40printf " '%s'" "$0" "$@" >> config.log
41echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000042echo "#" >> config.log
43
Peter Maydell76ad07a2013-04-08 12:11:26 +010044error_exit() {
45 echo
46 echo "ERROR: $1"
47 while test -n "$2"; do
48 echo " $2"
49 shift
50 done
51 echo
52 exit 1
53}
54
Peter Maydell9c83ffd2014-02-25 18:27:49 +000055do_compiler() {
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
58 local compiler="$1"
59 shift
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010062 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
67 return 0
68 fi
69 # Don't bother rerunning the compile if we were already using -Werror
70 case "$*" in
71 *-Werror*)
72 return 0
73 ;;
74 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000075 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010077 error_exit "configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010081}
82
Peter Maydell9c83ffd2014-02-25 18:27:49 +000083do_cc() {
84 do_compiler "$cc" "$@"
85}
86
87do_cxx() {
88 do_compiler "$cxx" "$@"
89}
90
91update_cxxflags() {
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
95 QEMU_CXXFLAGS=
96 for arg in $QEMU_CFLAGS; do
97 case $arg in
98 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
99 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
100 ;;
101 *)
102 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
103 ;;
104 esac
105 done
106}
107
Juan Quintela52166aa2009-08-03 14:46:03 +0200108compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400109 local_cflags="$1"
110 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200111}
112
113compile_prog() {
114 local_cflags="$1"
115 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100116 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200117}
118
Don Slutz66518bf2014-01-02 21:12:46 -0500119do_libtool() {
120 local mode=$1
121 shift
122 # Run the compiler, capturing its output to the log.
123 echo $libtool $mode --tag=CC $cc "$@" >> config.log
124 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
125 # Test passed. If this is an --enable-werror build, rerun
126 # the test with -Werror and bail out if it fails. This
127 # makes warning-generating-errors in configure test code
128 # obvious to developers.
129 if test "$werror" != "yes"; then
130 return 0
131 fi
132 # Don't bother rerunning the compile if we were already using -Werror
133 case "$*" in
134 *-Werror*)
135 return 0
136 ;;
137 esac
138 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
139 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
140 error_exit "configure test passed without -Werror but failed with -Werror." \
141 "This is probably a bug in the configure script. The failing command" \
142 "will be at the bottom of config.log." \
143 "You can run configure with --disable-werror to bypass this check."
144}
145
146libtool_prog() {
147 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
148 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
149}
150
Paolo Bonzini11568d62010-12-23 11:43:58 +0100151# symbolically link $1 to $2. Portable version of "ln -sf".
152symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100153 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800154 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100155 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100156}
157
Loïc Minier0dba6192010-01-28 21:26:51 +0000158# check whether a command is available to this shell (may be either an
159# executable or a builtin)
160has() {
161 type "$1" >/dev/null 2>&1
162}
163
164# search for an executable in PATH
165path_of() {
166 local_command="$1"
167 local_ifs="$IFS"
168 local_dir=""
169
170 # pathname has a dir component?
171 if [ "${local_command#*/}" != "$local_command" ]; then
172 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
173 echo "$local_command"
174 return 0
175 fi
176 fi
177 if [ -z "$local_command" ]; then
178 return 1
179 fi
180
181 IFS=:
182 for local_dir in $PATH; do
183 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
184 echo "$local_dir/$local_command"
185 IFS="${local_ifs:-$(printf ' \t\n')}"
186 return 0
187 fi
188 done
189 # not found
190 IFS="${local_ifs:-$(printf ' \t\n')}"
191 return 1
192}
193
Lluís Vilanova5b808272014-05-27 15:02:14 +0200194have_backend () {
195 echo "$trace_backends" | grep "$1" >/dev/null
196}
197
bellard7d132992003-03-06 23:23:54 +0000198# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100199source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200200cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300201iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000202interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000203static="no"
bellard7d132992003-03-06 23:23:54 +0000204cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000205audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800206block_drv_rw_whitelist=""
207block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000208host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200209libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200210libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200211audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400212audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200213cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500214libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100215debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100216stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000217
Stefan Weilafb63eb2012-09-26 22:04:38 +0200218# Don't accept a target_list environment variable.
219unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100220
221# Default value for a variable defining feature "foo".
222# * foo="no" feature will only be used if --enable-foo arg is given
223# * foo="" feature will be searched for, and if found, will be used
224# unless --disable-foo is given
225# * foo="yes" this value will only be set by --enable-foo flag.
226# feature will searched for,
227# if not found, configure exits with error
228#
229# Always add --enable-foo and --disable-foo command line args.
230# Distributions want to ensure that several features are compiled in, and it
231# is impossible without a --enable-foo that exits if a feature is not found.
232
233bluez=""
234brlapi=""
235curl=""
236curses=""
237docs=""
238fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100239netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200240pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100241sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000242sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530243virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100244vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100245sparse="no"
246uuid=""
247vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100248vnc_sasl=""
249vnc_jpeg=""
250vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100251xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000252xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000253xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100254linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500255cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100256attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200257libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100258xfs=""
259
Bradd41a75a2011-07-26 23:11:26 -0400260vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000261vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400262kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400263rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100264gprof="no"
265debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100266debug="no"
John Snowb553a042015-11-03 15:43:42 -0500267fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100268strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200269tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100270bigendian="no"
271mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000272gcov="no"
273gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100274EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800275DSOSUF=".so"
276LDFLAGS_SHARED="-shared"
277modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100278prefix="/usr/local"
279mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300280datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300281qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100282bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300283libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400284libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200285includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100286sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300287local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100288confsuffix="/qemu"
289slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100290oss_lib=""
291bsd="no"
292linux="no"
293solaris="no"
294profiler="no"
295cocoa="no"
296softmmu="yes"
297linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100298bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100299aix="no"
300blobs="yes"
301pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200302pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100303zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200304qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200305trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100306trace_file="trace"
307spice=""
308rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200309smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100310libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200311usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100312opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300313zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200314lzo=""
315snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100316bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400317guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400318guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500319guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300320guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400321vss_win32_sdk=""
322win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100323want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100324libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100325libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100326coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200327coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300328seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530329glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530330glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530331glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100332archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600333gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200334gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200335gtk_gl="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100336gnutls=""
337gnutls_hash=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100338nettle=""
339gcrypt=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100340vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200341virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400342tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100343libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400344vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800345numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800346tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200347jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100348
aliguoriac0df512008-12-29 17:14:15 +0000349# parse CC options first
350for opt do
351 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
352 case "$opt" in
353 --cross-prefix=*) cross_prefix="$optarg"
354 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100355 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000356 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400357 --cxx=*) CXX="$optarg"
358 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100359 --source-path=*) source_path="$optarg"
360 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200361 --cpu=*) cpu="$optarg"
362 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100363 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100364 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200365 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100366 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100367 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200368 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100369 --enable-debug-info) debug_info="yes"
370 ;;
371 --disable-debug-info) debug_info="no"
372 ;;
aliguoriac0df512008-12-29 17:14:15 +0000373 esac
374done
aliguoriac0df512008-12-29 17:14:15 +0000375# OS specific
376# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100377# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000378
Peter Maydelle49d0212012-12-07 15:39:13 +0000379# Preferred compiler:
380# ${CC} (if set)
381# ${cross_prefix}gcc (if cross-prefix specified)
382# system compiler
383if test -z "${CC}${cross_prefix}"; then
384 cc="$host_cc"
385else
386 cc="${CC-${cross_prefix}gcc}"
387fi
388
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400389if test -z "${CXX}${cross_prefix}"; then
390 cxx="c++"
391else
392 cxx="${CXX-${cross_prefix}g++}"
393fi
394
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500395ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000396as="${AS-${cross_prefix}as}"
397cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500398objcopy="${OBJCOPY-${cross_prefix}objcopy}"
399ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400400libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200401nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500402strip="${STRIP-${cross_prefix}strip}"
403windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300404pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
405query_pkg_config() {
406 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
407}
408pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500409sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000410sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000411
Peter Maydell45d285a2013-10-21 21:03:06 +0100412# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
413ARFLAGS="${ARFLAGS-rv}"
414
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200415# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000416QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400417QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100418QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200419QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200420QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100421if test "$debug_info" = "yes"; then
422 CFLAGS="-g $CFLAGS"
423 LDFLAGS="-g $LDFLAGS"
424fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200425
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100426# make source path absolute
427source_path=`cd "$source_path"; pwd`
428
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300429# running configure in the source tree?
430# we know that's the case if configure is there.
431if test -f "./configure"; then
432 pwd_is_source_path="y"
433else
434 pwd_is_source_path="n"
435fi
436
aliguoriac0df512008-12-29 17:14:15 +0000437check_define() {
438cat > $TMPC <<EOF
439#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000440#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000441#endif
442int main(void) { return 0; }
443EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200444 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000445}
446
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200447check_include() {
448cat > $TMPC <<EOF
449#include <$1>
450int main(void) { return 0; }
451EOF
452 compile_object
453}
454
John Snow93b25862015-03-25 18:57:37 -0400455write_c_skeleton() {
456 cat > $TMPC <<EOF
457int main(void) { return 0; }
458EOF
459}
460
Peter Maydellbbea4052012-08-14 15:35:34 +0100461if check_define __linux__ ; then
462 targetos="Linux"
463elif check_define _WIN32 ; then
464 targetos='MINGW32'
465elif check_define __OpenBSD__ ; then
466 targetos='OpenBSD'
467elif check_define __sun__ ; then
468 targetos='SunOS'
469elif check_define __HAIKU__ ; then
470 targetos='Haiku'
471else
472 targetos=`uname -s`
473fi
474
475# Some host OSes need non-standard checks for which CPU to use.
476# Note that these checks are broken for cross-compilation: if you're
477# cross-compiling to one of these OSes then you'll need to specify
478# the correct CPU with the --cpu option.
479case $targetos in
480Darwin)
481 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
482 # run 64-bit userspace code.
483 # If the user didn't specify a CPU explicitly and the kernel says this is
484 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
485 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
486 cpu="x86_64"
487 fi
488 ;;
489SunOS)
490 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
491 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
492 cpu="x86_64"
493 fi
494esac
495
Juan Quintela2ff6b912009-08-03 14:45:55 +0200496if test ! -z "$cpu" ; then
497 # command line argument
498 :
499elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000500 cpu="i386"
501elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700502 if check_define __ILP32__ ; then
503 cpu="x32"
504 else
505 cpu="x86_64"
506 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000507elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000508 if check_define __arch64__ ; then
509 cpu="sparc64"
510 else
511 cpu="sparc"
512 fi
malcfdf7ed92009-01-14 18:39:52 +0000513elif check_define _ARCH_PPC ; then
514 if check_define _ARCH_PPC64 ; then
515 cpu="ppc64"
516 else
517 cpu="ppc"
518 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200519elif check_define __mips__ ; then
520 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200521elif check_define __ia64__ ; then
522 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200523elif check_define __s390__ ; then
524 if check_define __s390x__ ; then
525 cpu="s390x"
526 else
527 cpu="s390"
528 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100529elif check_define __arm__ ; then
530 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100531elif check_define __aarch64__ ; then
532 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400533elif check_define __hppa__ ; then
534 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000535else
malcfdf7ed92009-01-14 18:39:52 +0000536 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000537fi
538
Peter Maydell359bc952011-12-24 13:07:25 +0000539ARCH=
540# Normalise host CPU name and set ARCH.
541# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000542case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700543 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200544 cpu="$cpu"
545 ;;
bellard7d132992003-03-06 23:23:54 +0000546 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000547 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000548 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000549 x86_64|amd64)
550 cpu="x86_64"
551 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100552 armv*b|armv*l|arm)
553 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000554 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100555 aarch64)
556 cpu="aarch64"
557 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200558 mips*)
559 cpu="mips"
560 ;;
blueswir131422552007-04-16 18:27:06 +0000561 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000562 cpu="sparc"
563 ;;
bellard7d132992003-03-06 23:23:54 +0000564 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000565 # This will result in either an error or falling back to TCI later
566 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000567 ;;
568esac
Peter Maydell359bc952011-12-24 13:07:25 +0000569if test -z "$ARCH"; then
570 ARCH="$cpu"
571fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200572
bellard7d132992003-03-06 23:23:54 +0000573# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200574
Stacey Sonadfc3e92014-06-08 09:57:22 -0700575# host *BSD for user mode
576HOST_VARIANT_DIR=""
577
bellard7d132992003-03-06 23:23:54 +0000578case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000579CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200580 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200581 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200582 audio_possible_drivers="sdl"
583 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000584;;
bellard67b915a2004-03-31 23:37:16 +0000585MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200586 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200587 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200588 if check_include dsound.h; then
589 audio_drv_list="dsound"
590 else
591 audio_drv_list=""
592 fi
bellard67b915a2004-03-31 23:37:16 +0000593;;
ths5c40d2b2007-06-23 16:03:36 +0000594GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100595 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200596 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200597 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000598;;
bellard7d3505c2004-05-12 19:32:15 +0000599FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200600 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100601 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200603 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100604 # needed for kinfo_getvmmap(3) in libutil.h
605 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100606 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700607 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000608;;
blueswir1c5e97232009-03-07 20:06:23 +0000609DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200610 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100611 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200613 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700614 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000615;;
bellard7d3505c2004-05-12 19:32:15 +0000616NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200617 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100618 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200619 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200620 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200621 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700622 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000623;;
624OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200625 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100626 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400627 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200628 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700629 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000630;;
bellard83fb7ad2004-07-05 21:25:26 +0000631Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200632 bsd="yes"
633 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800634 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200635 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200636 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200637 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200638 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200639 cocoa="yes"
640 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200641 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200643 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100644 # Disable attempts to use ObjectiveC features in os/object.h since they
645 # won't work when we're compiling with gcc as a C compiler.
646 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700647 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000648;;
bellardec530c82006-04-25 22:36:06 +0000649SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200650 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100651 make="${MAKE-gmake}"
652 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000653 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400654 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200655 needs_libsunmath="no"
656 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200657 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
658 if test "$solarisrev" -le 9 ; then
659 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
660 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200661 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
662 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
663 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200664 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100665 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
666 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
667 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
668 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200669 fi
thsef18c882007-09-16 22:12:39 +0000670 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200671 fi
672 if test -f /usr/include/sys/soundcard.h ; then
673 audio_drv_list="oss"
674 fi
675 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000676# needed for CMSG_ macros in sys/socket.h
677 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
678# needed for TIOCWIN* defines in termios.h
679 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200680 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200681 solarisnetlibs="-lsocket -lnsl -lresolv"
682 LIBS="$solarisnetlibs $LIBS"
683 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000684;;
malcb29fe3e2008-11-18 01:42:22 +0000685AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200686 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100687 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000688;;
Andreas Färber179cf402010-09-20 00:50:43 +0200689Haiku)
690 haiku="yes"
691 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
692 LIBS="-lposix_error_mapper -lnetwork $LIBS"
693;;
bellard1d14ffa2005-10-30 18:58:22 +0000694*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200695 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200696 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200697 linux="yes"
698 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200699 kvm="yes"
700 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000701 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000702 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000703;;
bellard7d132992003-03-06 23:23:54 +0000704esac
705
bellard7d3505c2004-05-12 19:32:15 +0000706if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000707 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200708 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000709 fi
bellard7d3505c2004-05-12 19:32:15 +0000710fi
711
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100712: ${make=${MAKE-make}}
713: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100714: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400715: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100716
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100717# Default objcc to clang if available, otherwise use CC
718if has clang; then
719 objcc=clang
720else
721 objcc="$cc"
722fi
723
Juan Quintela3457a3f2009-08-03 14:46:07 +0200724if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200725 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800726 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200727 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100728 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
729 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100730 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400731 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100732 if compile_prog "" "-liberty" ; then
733 LIBS="-liberty $LIBS"
734 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200735 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200736 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300737 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300738 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200739 bindir="\${prefix}"
740 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200741 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200742 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200743 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200744fi
745
Anthony Liguori487fefd2009-06-11 13:28:25 -0500746werror=""
bellard85aa5182007-11-11 20:17:03 +0000747
bellard7d132992003-03-06 23:23:54 +0000748for opt do
pbrooka46e4032006-04-29 23:05:22 +0000749 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000750 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000751 --help|-h) show_help=yes
752 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400753 --version|-V) exec cat $source_path/VERSION
754 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000755 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000756 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000757 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000758 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100759 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000760 ;;
aliguoriac0df512008-12-29 17:14:15 +0000761 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000762 ;;
aliguoriac0df512008-12-29 17:14:15 +0000763 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000764 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000765 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000766 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400767 --cxx=*)
768 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200769 --iasl=*) iasl="$optarg"
770 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100771 --objcc=*) objcc="$optarg"
772 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000773 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000774 ;;
pbrook6a882642006-04-17 13:57:12 +0000775 --install=*) install="$optarg"
776 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000777 --python=*) python="$optarg"
778 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000779 --gcov=*) gcov_tool="$optarg"
780 ;;
Brade2d88302011-09-02 16:53:28 -0400781 --smbd=*) smbd="$optarg"
782 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200783 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000784 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200785 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000786 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100787 --enable-debug-info)
788 ;;
789 --disable-debug-info)
790 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800791 --enable-modules)
792 modules="yes"
793 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000794 --disable-modules)
795 modules="no"
796 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200797 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000798 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000799 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000800 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200801 --enable-trace-backends=*) trace_backends="$optarg"
802 ;;
803 # XXX: backwards compatibility
804 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100805 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100806 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100807 ;;
bellard7d132992003-03-06 23:23:54 +0000808 --enable-gprof) gprof="yes"
809 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000810 --enable-gcov) gcov="yes"
811 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100812 --static)
813 static="yes"
814 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300815 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000816 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200817 --mandir=*) mandir="$optarg"
818 ;;
819 --bindir=*) bindir="$optarg"
820 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300821 --libdir=*) libdir="$optarg"
822 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400823 --libexecdir=*) libexecdir="$optarg"
824 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200825 --includedir=*) includedir="$optarg"
826 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300827 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200828 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300829 --with-confsuffix=*) confsuffix="$optarg"
830 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300831 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200832 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100833 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600834 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300835 --localstatedir=*) local_statedir="$optarg"
836 ;;
837 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400838 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
839 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
840 # These switches are silently ignored, for compatibility with
841 # autoconf-generated configure scripts. This allows QEMU's
842 # configure to be used by RPM and similar macros that set
843 # lots of directory switches by default.
844 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200845 --with-system-pixman) pixman="system"
846 ;;
847 --without-system-pixman) pixman="internal"
848 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100849 --without-pixman) pixman="none"
850 ;;
bellard97a847b2003-08-10 21:36:04 +0000851 --disable-sdl) sdl="no"
852 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200853 --enable-sdl) sdl="yes"
854 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000855 --with-sdlabi=*) sdlabi="$optarg"
856 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200857 --disable-qom-cast-debug) qom_cast_debug="no"
858 ;;
859 --enable-qom-cast-debug) qom_cast_debug="yes"
860 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530861 --disable-virtfs) virtfs="no"
862 ;;
863 --enable-virtfs) virtfs="yes"
864 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100865 --disable-vnc) vnc="no"
866 ;;
867 --enable-vnc) vnc="yes"
868 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000869 --oss-lib=*) oss_lib="$optarg"
870 ;;
malc0c58ac12008-06-25 21:04:05 +0000871 --audio-drv-list=*) audio_drv_list="$optarg"
872 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800873 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
874 ;;
875 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100876 ;;
aurel32f8393942009-04-13 18:45:38 +0000877 --enable-debug-tcg) debug_tcg="yes"
878 ;;
879 --disable-debug-tcg) debug_tcg="no"
880 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100881 --enable-debug)
882 # Enable debugging options that aren't excessively noisy
883 debug_tcg="yes"
884 debug="yes"
885 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500886 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100887 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000888 --enable-sparse) sparse="yes"
889 ;;
890 --disable-sparse) sparse="no"
891 ;;
aliguori1625af82009-04-05 17:41:02 +0000892 --disable-strip) strip_opt="no"
893 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000894 --disable-vnc-sasl) vnc_sasl="no"
895 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200896 --enable-vnc-sasl) vnc_sasl="yes"
897 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200898 --disable-vnc-jpeg) vnc_jpeg="no"
899 ;;
900 --enable-vnc-jpeg) vnc_jpeg="yes"
901 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200902 --disable-vnc-png) vnc_png="no"
903 ;;
904 --enable-vnc-png) vnc_png="yes"
905 ;;
bellard443f1372004-06-04 11:13:20 +0000906 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000907 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200908 --disable-uuid) uuid="no"
909 ;;
910 --enable-uuid) uuid="yes"
911 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000912 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000913 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200914 --enable-vde) vde="yes"
915 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100916 --disable-netmap) netmap="no"
917 ;;
918 --enable-netmap) netmap="yes"
919 ;;
aliguorie37630c2009-04-22 15:19:10 +0000920 --disable-xen) xen="no"
921 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200922 --enable-xen) xen="yes"
923 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000924 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
925 ;;
926 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
927 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000928 --disable-brlapi) brlapi="no"
929 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200930 --enable-brlapi) brlapi="yes"
931 ;;
balrogfb599c92008-09-28 23:49:55 +0000932 --disable-bluez) bluez="no"
933 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200934 --enable-bluez) bluez="yes"
935 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000936 --disable-kvm) kvm="no"
937 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200938 --enable-kvm) kvm="yes"
939 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200940 --disable-tcg-interpreter) tcg_interpreter="no"
941 ;;
942 --enable-tcg-interpreter) tcg_interpreter="yes"
943 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500944 --disable-cap-ng) cap_ng="no"
945 ;;
946 --enable-cap-ng) cap_ng="yes"
947 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100948 --disable-spice) spice="no"
949 ;;
950 --enable-spice) spice="yes"
951 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100952 --disable-libiscsi) libiscsi="no"
953 ;;
954 --enable-libiscsi) libiscsi="yes"
955 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100956 --disable-libnfs) libnfs="no"
957 ;;
958 --enable-libnfs) libnfs="yes"
959 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000960 --enable-profiler) profiler="yes"
961 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400962 --disable-cocoa) cocoa="no"
963 ;;
malcc2de5c92008-06-28 19:13:06 +0000964 --enable-cocoa)
965 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000966 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000967 ;;
pbrookcad25d62006-03-19 16:31:11 +0000968 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000969 ;;
pbrookcad25d62006-03-19 16:31:11 +0000970 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000971 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000972 --disable-user)
973 linux_user="no" ;
974 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000975 ;;
976 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000977 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000978 ;;
ths831b7822007-01-18 20:06:33 +0000979 --enable-linux-user) linux_user="yes"
980 ;;
blueswir184778502008-10-26 20:33:16 +0000981 --disable-bsd-user) bsd_user="no"
982 ;;
983 --enable-bsd-user) bsd_user="yes"
984 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200985 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300986 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200987 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300988 ;;
bellard85aa5182007-11-11 20:17:03 +0000989 --enable-werror) werror="yes"
990 ;;
991 --disable-werror) werror="no"
992 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100993 --enable-stack-protector) stack_protector="yes"
994 ;;
995 --disable-stack-protector) stack_protector="no"
996 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000997 --disable-curses) curses="no"
998 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200999 --enable-curses) curses="yes"
1000 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001001 --disable-curl) curl="no"
1002 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001003 --enable-curl) curl="yes"
1004 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001005 --disable-fdt) fdt="no"
1006 ;;
1007 --enable-fdt) fdt="yes"
1008 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001009 --disable-linux-aio) linux_aio="no"
1010 ;;
1011 --enable-linux-aio) linux_aio="yes"
1012 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001013 --disable-attr) attr="no"
1014 ;;
1015 --enable-attr) attr="yes"
1016 ;;
ths77755342008-11-27 15:45:16 +00001017 --disable-blobs) blobs="no"
1018 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001019 --with-pkgversion=*) pkgversion=" ($optarg)"
1020 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001021 --with-coroutine=*) coroutine="$optarg"
1022 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001023 --disable-coroutine-pool) coroutine_pool="no"
1024 ;;
1025 --enable-coroutine-pool) coroutine_pool="yes"
1026 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001027 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001028 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001029 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001030 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001031 --disable-vhost-net) vhost_net="no"
1032 ;;
1033 --enable-vhost-net) vhost_net="yes"
1034 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001035 --disable-vhost-scsi) vhost_scsi="no"
1036 ;;
1037 --enable-vhost-scsi) vhost_scsi="yes"
1038 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001039 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001040 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001041 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001042 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001043 --disable-rbd) rbd="no"
1044 ;;
1045 --enable-rbd) rbd="yes"
1046 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001047 --disable-xfsctl) xfs="no"
1048 ;;
1049 --enable-xfsctl) xfs="yes"
1050 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001051 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001052 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001053 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001054 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001055 --disable-libusb) libusb="no"
1056 ;;
1057 --enable-libusb) libusb="yes"
1058 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001059 --disable-usb-redir) usb_redir="no"
1060 ;;
1061 --enable-usb-redir) usb_redir="yes"
1062 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001063 --disable-zlib-test) zlib="no"
1064 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001065 --disable-lzo) lzo="no"
1066 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001067 --enable-lzo) lzo="yes"
1068 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001069 --disable-snappy) snappy="no"
1070 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001071 --enable-snappy) snappy="yes"
1072 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001073 --disable-bzip2) bzip2="no"
1074 ;;
1075 --enable-bzip2) bzip2="yes"
1076 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001077 --enable-guest-agent) guest_agent="yes"
1078 ;;
1079 --disable-guest-agent) guest_agent="no"
1080 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001081 --enable-guest-agent-msi) guest_agent_msi="yes"
1082 ;;
1083 --disable-guest-agent-msi) guest_agent_msi="no"
1084 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001085 --with-vss-sdk) vss_win32_sdk=""
1086 ;;
1087 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1088 ;;
1089 --without-vss-sdk) vss_win32_sdk="no"
1090 ;;
1091 --with-win-sdk) win_sdk=""
1092 ;;
1093 --with-win-sdk=*) win_sdk="$optarg"
1094 ;;
1095 --without-win-sdk) win_sdk="no"
1096 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001097 --enable-tools) want_tools="yes"
1098 ;;
1099 --disable-tools) want_tools="no"
1100 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001101 --enable-seccomp) seccomp="yes"
1102 ;;
1103 --disable-seccomp) seccomp="no"
1104 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301105 --disable-glusterfs) glusterfs="no"
1106 ;;
1107 --enable-glusterfs) glusterfs="yes"
1108 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001109 --disable-archipelago) archipelago="no"
1110 ;;
1111 --enable-archipelago) archipelago="yes"
1112 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001113 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1114 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001115 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001116 --disable-gtk) gtk="no"
1117 ;;
1118 --enable-gtk) gtk="yes"
1119 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001120 --disable-gnutls) gnutls="no"
1121 ;;
1122 --enable-gnutls) gnutls="yes"
1123 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001124 --disable-nettle) nettle="no"
1125 ;;
1126 --enable-nettle) nettle="yes"
1127 ;;
1128 --disable-gcrypt) gcrypt="no"
1129 ;;
1130 --enable-gcrypt) gcrypt="yes"
1131 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001132 --enable-rdma) rdma="yes"
1133 ;;
1134 --disable-rdma) rdma="no"
1135 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001136 --with-gtkabi=*) gtkabi="$optarg"
1137 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001138 --disable-vte) vte="no"
1139 ;;
1140 --enable-vte) vte="yes"
1141 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001142 --disable-virglrenderer) virglrenderer="no"
1143 ;;
1144 --enable-virglrenderer) virglrenderer="yes"
1145 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001146 --disable-tpm) tpm="no"
1147 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001148 --enable-tpm) tpm="yes"
1149 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001150 --disable-libssh2) libssh2="no"
1151 ;;
1152 --enable-libssh2) libssh2="yes"
1153 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001154 --enable-vhdx) vhdx="yes"
1155 ;;
1156 --disable-vhdx) vhdx="no"
1157 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001158 --disable-numa) numa="no"
1159 ;;
1160 --enable-numa) numa="yes"
1161 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001162 --disable-tcmalloc) tcmalloc="no"
1163 ;;
1164 --enable-tcmalloc) tcmalloc="yes"
1165 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001166 --disable-jemalloc) jemalloc="no"
1167 ;;
1168 --enable-jemalloc) jemalloc="yes"
1169 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001170 *)
1171 echo "ERROR: unknown option $opt"
1172 echo "Try '$0 --help' for more information"
1173 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001174 ;;
bellard7d132992003-03-06 23:23:54 +00001175 esac
1176done
1177
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001178if ! has $python; then
1179 error_exit "Python not found. Use --python=/path/to/python"
1180fi
1181
1182# Note that if the Python conditional here evaluates True we will exit
1183# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001184if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1185 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001186 "Note that Python 3 or later is not yet supported." \
1187 "Use --python=/path/to/python to specify a supported Python."
1188fi
1189
Markus Armbrusterfec21032015-09-04 21:53:03 +02001190# Suppress writing compiled files
1191python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001192
bellard40293e52008-01-31 11:32:10 +00001193case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001194 ppc)
1195 CPU_CFLAGS="-m32"
1196 LDFLAGS="-m32 $LDFLAGS"
1197 ;;
1198 ppc64)
1199 CPU_CFLAGS="-m64"
1200 LDFLAGS="-m64 $LDFLAGS"
1201 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001202 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001203 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001204 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001205 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001206 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001207 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001208 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001209 ;;
ths76d83bd2007-11-18 21:22:10 +00001210 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001211 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001212 LDFLAGS="-m31 $LDFLAGS"
1213 ;;
1214 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001215 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001216 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001217 ;;
bellard40293e52008-01-31 11:32:10 +00001218 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001219 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001220 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001221 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001222 ;;
1223 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001224 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001225 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001226 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001227 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001228 x32)
1229 CPU_CFLAGS="-mx32"
1230 LDFLAGS="-mx32 $LDFLAGS"
1231 cc_i386='$(CC) -m32'
1232 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001233 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001234esac
1235
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001236QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1237EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1238
Peter Maydell60e0df22011-05-03 14:50:13 +01001239default_target_list=""
1240
Peter Maydell6e92f822013-05-20 16:16:15 +01001241mak_wilds=""
1242
1243if [ "$softmmu" = "yes" ]; then
1244 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001245fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001246if [ "$linux_user" = "yes" ]; then
1247 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001248fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001249if [ "$bsd_user" = "yes" ]; then
1250 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001251fi
1252
Peter Maydell6e92f822013-05-20 16:16:15 +01001253for config in $mak_wilds; do
1254 default_target_list="${default_target_list} $(basename "$config" .mak)"
1255done
1256
pbrookaf5db582006-04-08 14:26:41 +00001257if test x"$show_help" = x"yes" ; then
1258cat << EOF
1259
1260Usage: configure [options]
1261Options: [defaults in brackets after descriptions]
1262
Stefan Weil08fb77e2013-12-18 22:09:39 +01001263Standard options:
1264 --help print this message
1265 --prefix=PREFIX install in PREFIX [$prefix]
1266 --interp-prefix=PREFIX where to find shared libraries, etc.
1267 use %M for cpu name [$interp_prefix]
1268 --target-list=LIST set target list (default: build everything)
1269$(echo Available targets: $default_target_list | \
1270 fold -s -w 53 | sed -e 's/^/ /')
1271
1272Advanced options (experts only):
1273 --source-path=PATH path of source code [$source_path]
1274 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1275 --cc=CC use C compiler CC [$cc]
1276 --iasl=IASL use ACPI compiler IASL [$iasl]
1277 --host-cc=CC use C compiler CC [$host_cc] for code run at
1278 build time
1279 --cxx=CXX use C++ compiler CXX [$cxx]
1280 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1281 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1282 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1283 --make=MAKE use specified make [$make]
1284 --install=INSTALL use specified install [$install]
1285 --python=PYTHON use specified python [$python]
1286 --smbd=SMBD use specified smbd [$smbd]
1287 --static enable static build [$static]
1288 --mandir=PATH install man pages in PATH
1289 --datadir=PATH install firmware in PATH$confsuffix
1290 --docdir=PATH install documentation in PATH$confsuffix
1291 --bindir=PATH install binaries in PATH
1292 --libdir=PATH install libraries in PATH
1293 --sysconfdir=PATH install config in PATH$confsuffix
1294 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001295 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001296 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001297 --disable-strip disable stripping binaries
1298 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001299 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001300 --audio-drv-list=LIST set audio drivers list:
1301 Available drivers: $audio_possible_drivers
1302 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1303 --block-drv-rw-whitelist=L
1304 set block driver read-write whitelist
1305 (affects only QEMU, not qemu-img)
1306 --block-drv-ro-whitelist=L
1307 set block driver read-only whitelist
1308 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001309 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001310 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1311 --with-trace-file=NAME Full PATH,NAME of file to store traces
1312 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001313 --disable-slirp disable SLIRP userspace network connectivity
1314 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1315 --oss-lib path to OSS library
1316 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001317 --with-coroutine=BACKEND coroutine backend. Supported options:
1318 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001319 --enable-gcov enable test coverage analysis with gcov
1320 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001321 --disable-blobs disable installing provided firmware blobs
1322 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1323 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1324
1325Optional features, enabled with --enable-FEATURE and
1326disabled with --disable-FEATURE, default is enabled if available:
1327
1328 system all system emulation targets
1329 user supported user emulation targets
1330 linux-user all linux usermode emulation targets
1331 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001332 docs build documentation
1333 guest-agent build the QEMU Guest Agent
1334 guest-agent-msi build guest agent Windows MSI installation package
1335 pie Position Independent Executables
1336 modules modules support
1337 debug-tcg TCG debugging (default is disabled)
1338 debug-info debugging information
1339 sparse sparse checker
1340
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001341 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001342 nettle nettle cryptography support
1343 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001344 sdl SDL UI
1345 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1346 gtk gtk UI
1347 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1348 vte vte support for the gtk UI
1349 curses curses UI
1350 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001351 vnc-sasl SASL encryption for VNC server
1352 vnc-jpeg JPEG lossy compression for VNC server
1353 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001354 cocoa Cocoa UI (Mac OS X only)
1355 virtfs VirtFS
1356 xen xen backend driver support
1357 xen-pci-passthrough
1358 brlapi BrlAPI (Braile)
1359 curl curl connectivity
1360 fdt fdt device tree
1361 bluez bluez stack connectivity
1362 kvm KVM acceleration support
1363 rdma RDMA-based migration support
1364 uuid uuid support
1365 vde support for vde network
1366 netmap support for netmap network
1367 linux-aio Linux AIO support
1368 cap-ng libcap-ng support
1369 attr attr and xattr support
1370 vhost-net vhost-net acceleration support
1371 spice spice
1372 rbd rados block device (rbd)
1373 libiscsi iscsi support
1374 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001375 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001376 libusb libusb (for usb passthrough)
1377 usb-redir usb network redirection support
1378 lzo support of lzo compression library
1379 snappy support of snappy compression library
1380 bzip2 support of bzip2 compression library
1381 (for reading bzip2-compressed dmg images)
1382 seccomp seccomp support
1383 coroutine-pool coroutine freelist (better performance)
1384 glusterfs GlusterFS backend
1385 archipelago Archipelago backend
1386 tpm TPM support
1387 libssh2 ssh block device support
1388 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001389 numa libnuma support
1390 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001391 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001392
1393NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001394EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001395exit 0
pbrookaf5db582006-04-08 14:26:41 +00001396fi
1397
Peter Maydell359bc952011-12-24 13:07:25 +00001398# Now we have handled --enable-tcg-interpreter and know we're not just
1399# printing the help message, bail out if the host CPU isn't supported.
1400if test "$ARCH" = "unknown"; then
1401 if test "$tcg_interpreter" = "yes" ; then
1402 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1403 ARCH=tci
1404 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001405 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001406 fi
1407fi
1408
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001409# Consult white-list to determine whether to enable werror
1410# by default. Only enable by default for git builds
1411z_version=`cut -f3 -d. $source_path/VERSION`
1412
1413if test -z "$werror" ; then
1414 if test -d "$source_path/.git" -a \
1415 "$linux" = "yes" ; then
1416 werror="yes"
1417 else
1418 werror="no"
1419 fi
1420fi
1421
Paolo Bonzini8d050952010-12-23 11:43:52 +01001422# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001423write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001424if compile_object ; then
1425 : C compiler works ok
1426else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001427 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001428fi
1429
Peter Maydell98b21dc2014-02-20 15:10:16 +00001430# Check that the C++ compiler exists and works with the C compiler
1431if has $cxx; then
1432 cat > $TMPC <<EOF
1433int c_function(void);
1434int main(void) { return c_function(); }
1435EOF
1436
1437 compile_object
1438
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001439 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001440extern "C" {
1441 int c_function(void);
1442}
1443int c_function(void) { return 42; }
1444EOF
1445
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001446 update_cxxflags
1447
1448 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001449 # C++ compiler $cxx works ok with C compiler $cc
1450 :
1451 else
1452 echo "C++ compiler $cxx does not work with C compiler $cc"
1453 echo "Disabling C++ specific optional code"
1454 cxx=
1455 fi
1456else
1457 echo "No C++ compiler available; disabling C++ specific optional code"
1458 cxx=
1459fi
1460
Paolo Bonzini8d050952010-12-23 11:43:52 +01001461gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1462gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1463gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001464gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001465gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001466gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001467# Note that we do not add -Werror to gcc_flags here, because that would
1468# enable it for all configure tests. If a configure test failed due
1469# to -Werror this would just silently disable some features,
1470# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001471
1472cc_has_warning_flag() {
1473 write_c_skeleton;
1474
Peter Maydella1d29d62012-10-27 22:19:07 +01001475 # Use the positive sense of the flag when testing for -Wno-wombat
1476 # support (gcc will happily accept the -Wno- form of unknown
1477 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001478 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1479 compile_prog "-Werror $optflag" ""
1480}
1481
1482for flag in $gcc_flags; do
1483 if cc_has_warning_flag $flag ; then
1484 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001485 fi
1486done
1487
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001488if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001489 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001490 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001491 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001492 # We need to check both a compile and a link, since some compiler
1493 # setups fail only on a .c->.o compile and some only at link time
1494 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1495 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001496 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1497 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001498 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001499 break
1500 fi
1501 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001502 if test "$stack_protector" = yes; then
1503 if test $sp_on = 0; then
1504 error_exit "Stack protector not supported"
1505 fi
1506 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001507fi
1508
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001509# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1510# large functions that use global variables. The bug is in all releases of
1511# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1512# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1513cat > $TMPC << EOF
1514#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1515int main(void) { return 0; }
1516#else
1517#error No bug in this compiler.
1518#endif
1519EOF
1520if compile_prog "-Werror -fno-gcse" "" ; then
1521 TRANSLATE_OPT_CFLAGS=-fno-gcse
1522fi
1523
Avi Kivity40d64442011-11-15 20:12:17 +02001524if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001525 if test "$modules" = "yes" ; then
1526 error_exit "static and modules are mutually incompatible"
1527 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001528 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001529 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001530 else
1531 pie="no"
1532 fi
1533fi
1534
Emilio G. Cota768b7852015-04-29 13:09:02 +02001535# Unconditional check for compiler __thread support
1536 cat > $TMPC << EOF
1537static __thread int tls_var;
1538int main(void) { return tls_var; }
1539EOF
1540
1541if ! compile_prog "-Werror" "" ; then
1542 error_exit "Your compiler does not support the __thread specifier for " \
1543 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1544fi
1545
Avi Kivity40d64442011-11-15 20:12:17 +02001546if test "$pie" = ""; then
1547 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001548 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001549 ;;
1550 *)
1551 pie="no"
1552 ;;
1553 esac
1554fi
1555
1556if test "$pie" != "no" ; then
1557 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001558
1559#ifdef __linux__
1560# define THREAD __thread
1561#else
1562# define THREAD
1563#endif
1564
1565static THREAD int tls_var;
1566
1567int main(void) { return tls_var; }
1568
Avi Kivity40d64442011-11-15 20:12:17 +02001569EOF
1570 if compile_prog "-fPIE -DPIE" "-pie"; then
1571 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1572 LDFLAGS="-pie $LDFLAGS"
1573 pie="yes"
1574 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1575 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1576 fi
1577 else
1578 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001579 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001580 else
1581 echo "Disabling PIE due to missing toolchain support"
1582 pie="no"
1583 fi
1584 fi
Brad46eef332013-12-10 19:49:08 -05001585
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001586 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001587 CFLAGS_NOPIE="-fno-pie"
1588 LDFLAGS_NOPIE="-nopie"
1589 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001590fi
1591
Don Slutz66518bf2014-01-02 21:12:46 -05001592# check for broken gcc and libtool in RHEL5
1593if test -n "$libtool" -a "$pie" != "no" ; then
1594 cat > $TMPC <<EOF
1595
1596void *f(unsigned char *buf, int len);
1597void *g(unsigned char *buf, int len);
1598
1599void *
1600f(unsigned char *buf, int len)
1601{
1602 return (void*)0L;
1603}
1604
1605void *
1606g(unsigned char *buf, int len)
1607{
1608 return f(buf, len);
1609}
1610
1611EOF
1612 if ! libtool_prog; then
1613 echo "Disabling libtool due to broken toolchain support"
1614 libtool=
1615 fi
1616fi
1617
Paolo Bonzini09dada42013-04-17 16:26:47 +02001618##########################################
1619# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1620# use i686 as default anyway, but for those that don't, an explicit
1621# specification is necessary
1622
1623if test "$cpu" = "i386"; then
1624 cat > $TMPC << EOF
1625static int sfaa(int *ptr)
1626{
1627 return __sync_fetch_and_and(ptr, 0);
1628}
1629
1630int main(void)
1631{
1632 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001633 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001634 sfaa(&val);
1635 return val;
1636}
1637EOF
1638 if ! compile_prog "" "" ; then
1639 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1640 fi
1641fi
1642
1643#########################################
bellardec530c82006-04-25 22:36:06 +00001644# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001645
bellardec530c82006-04-25 22:36:06 +00001646if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001647 if has $install; then
1648 :
1649 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001650 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1651 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1652 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001653 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001654 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001655 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1656 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1657 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001658 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001659 if has ar; then
1660 :
1661 else
bellardec530c82006-04-25 22:36:06 +00001662 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001663 error_exit "No path includes ar" \
1664 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001665 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001666 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001667 fi
ths5fafdf22007-09-16 21:08:06 +00001668fi
bellardec530c82006-04-25 22:36:06 +00001669
Stefan Weilafb63eb2012-09-26 22:04:38 +02001670if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001671 target_list="$default_target_list"
1672else
1673 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001674fi
Peter Maydell25b48332013-05-20 16:16:16 +01001675
1676# Check that we recognised the target name; this allows a more
1677# friendly error message than if we let it fall through.
1678for target in $target_list; do
1679 case " $default_target_list " in
1680 *" $target "*)
1681 ;;
1682 *)
1683 error_exit "Unknown target name '$target'"
1684 ;;
1685 esac
1686done
1687
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001688# see if system emulation was really requested
1689case " $target_list " in
1690 *"-softmmu "*) softmmu=yes
1691 ;;
1692 *) softmmu=no
1693 ;;
1694esac
bellard5327cf42005-01-10 23:18:50 +00001695
Juan Quintela249247c2009-08-12 18:20:25 +02001696feature_not_found() {
1697 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001698 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001699
Peter Maydell76ad07a2013-04-08 12:11:26 +01001700 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001701 "configure was not able to find it." \
1702 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001703}
1704
bellard7d132992003-03-06 23:23:54 +00001705# ---
1706# big/little endian test
1707cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001708short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1709short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1710extern int foo(short *, short *);
1711int main(int argc, char *argv[]) {
1712 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001713}
1714EOF
1715
Mike Frysinger61cc9192013-06-30 23:30:18 -04001716if compile_object ; then
1717 if grep -q BiGeNdIaN $TMPO ; then
1718 bigendian="yes"
1719 elif grep -q LiTtLeEnDiAn $TMPO ; then
1720 bigendian="no"
1721 else
1722 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001723 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001724else
1725 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001726fi
1727
Juan Quintelab0a47e72009-08-12 18:29:49 +02001728##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001729# cocoa implies not SDL or GTK
1730# (the cocoa UI code currently assumes it is always the active UI
1731# and doesn't interact well with other UI frontend code)
1732if test "$cocoa" = "yes"; then
1733 if test "$sdl" = "yes"; then
1734 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1735 fi
1736 if test "$gtk" = "yes"; then
1737 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1738 fi
1739 gtk=no
1740 sdl=no
1741fi
1742
1743##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001744# L2TPV3 probe
1745
1746cat > $TMPC <<EOF
1747#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001748#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001749int main(void) { return sizeof(struct mmsghdr); }
1750EOF
1751if compile_prog "" "" ; then
1752 l2tpv3=yes
1753else
1754 l2tpv3=no
1755fi
1756
1757##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001758# MinGW / Mingw-w64 localtime_r/gmtime_r check
1759
1760if test "$mingw32" = "yes"; then
1761 # Some versions of MinGW / Mingw-w64 lack localtime_r
1762 # and gmtime_r entirely.
1763 #
1764 # Some versions of Mingw-w64 define a macro for
1765 # localtime_r/gmtime_r.
1766 #
1767 # Some versions of Mingw-w64 will define functions
1768 # for localtime_r/gmtime_r, but only if you have
1769 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1770 # though, unistd.h and pthread.h both define
1771 # that for you.
1772 #
1773 # So this #undef localtime_r and #include <unistd.h>
1774 # are not in fact redundant.
1775cat > $TMPC << EOF
1776#include <unistd.h>
1777#include <time.h>
1778#undef localtime_r
1779int main(void) { localtime_r(NULL, NULL); return 0; }
1780EOF
1781 if compile_prog "" "" ; then
1782 localtime_r="yes"
1783 else
1784 localtime_r="no"
1785 fi
1786fi
1787
1788##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001789# pkg-config probe
1790
1791if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001792 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001793fi
1794
1795##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001796# NPTL probe
1797
Peter Maydell24cb36a2013-07-16 18:45:00 +01001798if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001799 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001800#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001801#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001802int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001803#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1804#error bork
1805#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001806 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001807}
1808EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001809 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001810 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001811 fi
pbrookbd0c5662008-05-29 14:34:11 +00001812fi
1813
bellard11d9f692004-04-02 20:55:59 +00001814##########################################
balrogac629222008-10-11 09:56:04 +00001815# zlib check
1816
Alon Levy1ece9902011-07-26 12:30:40 +03001817if test "$zlib" != "no" ; then
1818 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001819#include <zlib.h>
1820int main(void) { zlibVersion(); return 0; }
1821EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001822 if compile_prog "" "-lz" ; then
1823 :
1824 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001825 error_exit "zlib check failed" \
1826 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001827 fi
balrogac629222008-10-11 09:56:04 +00001828fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001829LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001830
1831##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001832# lzo check
1833
1834if test "$lzo" != "no" ; then
1835 cat > $TMPC << EOF
1836#include <lzo/lzo1x.h>
1837int main(void) { lzo_version(); return 0; }
1838EOF
1839 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001840 libs_softmmu="$libs_softmmu -llzo2"
1841 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001842 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001843 if test "$lzo" = "yes"; then
1844 feature_not_found "liblzo2" "Install liblzo2 devel"
1845 fi
1846 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001847 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001848fi
1849
1850##########################################
1851# snappy check
1852
1853if test "$snappy" != "no" ; then
1854 cat > $TMPC << EOF
1855#include <snappy-c.h>
1856int main(void) { snappy_max_compressed_length(4096); return 0; }
1857EOF
1858 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001859 libs_softmmu="$libs_softmmu -lsnappy"
1860 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001861 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001862 if test "$snappy" = "yes"; then
1863 feature_not_found "libsnappy" "Install libsnappy devel"
1864 fi
1865 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001866 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001867fi
1868
1869##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001870# bzip2 check
1871
1872if test "$bzip2" != "no" ; then
1873 cat > $TMPC << EOF
1874#include <bzlib.h>
1875int main(void) { BZ2_bzlibVersion(); return 0; }
1876EOF
1877 if compile_prog "" "-lbz2" ; then
1878 bzip2="yes"
1879 else
1880 if test "$bzip2" = "yes"; then
1881 feature_not_found "libbzip2" "Install libbzip2 devel"
1882 fi
1883 bzip2="no"
1884 fi
1885fi
1886
1887##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001888# libseccomp check
1889
1890if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001891 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1892 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001893 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001894 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001895 seccomp="yes"
1896 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001897 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001898 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001899 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001900 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001901 fi
1902fi
1903##########################################
aliguorie37630c2009-04-22 15:19:10 +00001904# xen probe
1905
Juan Quintelafc321b42009-08-12 18:29:55 +02001906if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001907 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001908
Stefan Weil50ced5b2011-12-17 09:27:39 +01001909 # First we test whether Xen headers and libraries are available.
1910 # If no, we are done and there is no Xen support.
1911 # If yes, more tests are run to detect the Xen version.
1912
1913 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001914 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001915#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001916int main(void) {
1917 return 0;
1918}
1919EOF
1920 if ! compile_prog "" "$xen_libs" ; then
1921 # Xen not found
1922 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001923 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001924 fi
1925 xen=no
1926
1927 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001928 elif
1929 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001930#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00001931#include <stdint.h>
1932int main(void) {
1933 xc_interface *xc = NULL;
1934 xen_domain_handle_t handle;
1935 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1936 return 0;
1937}
1938EOF
1939 compile_prog "" "$xen_libs"
1940 then
1941 xen_ctrl_version=470
1942 xen=yes
1943
1944 # Xen 4.6
1945 elif
1946 cat > $TMPC <<EOF &&
1947#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001948#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001949#include <stdint.h>
1950#include <xen/hvm/hvm_info_table.h>
1951#if !defined(HVM_MAX_VCPUS)
1952# error HVM_MAX_VCPUS not defined
1953#endif
1954int main(void) {
1955 xc_interface *xc;
1956 xs_daemon_open();
1957 xc = xc_interface_open(0, 0, 0);
1958 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1959 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001960 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001961 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001962 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04001963 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001964 return 0;
1965}
1966EOF
1967 compile_prog "" "$xen_libs"
1968 then
1969 xen_ctrl_version=460
1970 xen=yes
1971
1972 # Xen 4.5
1973 elif
1974 cat > $TMPC <<EOF &&
1975#include <xenctrl.h>
1976#include <xenstore.h>
1977#include <stdint.h>
1978#include <xen/hvm/hvm_info_table.h>
1979#if !defined(HVM_MAX_VCPUS)
1980# error HVM_MAX_VCPUS not defined
1981#endif
1982int main(void) {
1983 xc_interface *xc;
1984 xs_daemon_open();
1985 xc = xc_interface_open(0, 0, 0);
1986 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1987 xc_gnttab_open(NULL, 0);
1988 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1989 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001990 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1991 return 0;
1992}
1993EOF
1994 compile_prog "" "$xen_libs"
1995 then
1996 xen_ctrl_version=450
1997 xen=yes
1998
1999 elif
2000 cat > $TMPC <<EOF &&
2001#include <xenctrl.h>
2002#include <xenstore.h>
2003#include <stdint.h>
2004#include <xen/hvm/hvm_info_table.h>
2005#if !defined(HVM_MAX_VCPUS)
2006# error HVM_MAX_VCPUS not defined
2007#endif
2008int main(void) {
2009 xc_interface *xc;
2010 xs_daemon_open();
2011 xc = xc_interface_open(0, 0, 0);
2012 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2013 xc_gnttab_open(NULL, 0);
2014 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2015 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002016 return 0;
2017}
2018EOF
2019 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002020 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002021 xen_ctrl_version=420
2022 xen=yes
2023
Peter Maydell69deef02012-08-02 18:30:26 +01002024 elif
2025 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00002026#include <xenctrl.h>
2027#include <xs.h>
2028#include <stdint.h>
2029#include <xen/hvm/hvm_info_table.h>
2030#if !defined(HVM_MAX_VCPUS)
2031# error HVM_MAX_VCPUS not defined
2032#endif
2033int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00002034 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01002035 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002036 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2037 xc_gnttab_open(NULL, 0);
2038 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002039 return 0;
2040}
aliguorie37630c2009-04-22 15:19:10 +00002041EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01002042 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002043 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002044 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02002045 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002046
2047 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01002048 elif
2049 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002050#include <xenctrl.h>
2051#include <xs.h>
2052#include <stdint.h>
2053#include <xen/hvm/hvm_info_table.h>
2054#if !defined(HVM_MAX_VCPUS)
2055# error HVM_MAX_VCPUS not defined
2056#endif
2057int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01002058 struct xen_add_to_physmap xatp = {
2059 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2060 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002061 xs_daemon_open();
2062 xc_interface_open();
2063 xc_gnttab_open();
2064 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002065 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002066 return 0;
2067}
2068EOF
2069 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002070 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002071 xen_ctrl_version=400
2072 xen=yes
2073
Anthony PERARDb87de242011-05-24 14:34:20 +01002074 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002075 elif
2076 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002077#include <xenctrl.h>
2078#include <xs.h>
2079int main(void) {
2080 struct xen_add_to_physmap xatp = {
2081 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2082 };
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 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2088 return 0;
2089}
2090EOF
2091 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002092 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002093 xen_ctrl_version=340
2094 xen=yes
2095
2096 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002097 elif
2098 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002099#include <xenctrl.h>
2100#include <xs.h>
2101int main(void) {
2102 xs_daemon_open();
2103 xc_interface_open();
2104 xc_gnttab_open();
2105 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2106 return 0;
2107}
2108EOF
2109 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002110 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002111 xen_ctrl_version=330
2112 xen=yes
2113
Stefan Weil50ced5b2011-12-17 09:27:39 +01002114 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002115 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002116 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002117 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002118 fi
2119 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002120 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002121
2122 if test "$xen" = yes; then
2123 libs_softmmu="$xen_libs $libs_softmmu"
2124 fi
aliguorie37630c2009-04-22 15:19:10 +00002125fi
2126
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002127if test "$xen_pci_passthrough" != "no"; then
2128 if test "$xen" = "yes" && test "$linux" = "yes" &&
2129 test "$xen_ctrl_version" -ge 340; then
2130 xen_pci_passthrough=yes
2131 else
2132 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002133 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002134 error_exit "User requested feature Xen PCI Passthrough" \
2135 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002136 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002137 error_exit "User requested feature Xen PCI Passthrough" \
2138 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002139 fi
2140 xen_pci_passthrough=no
2141 fi
2142fi
2143
aliguorie37630c2009-04-22 15:19:10 +00002144##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002145# libtool probe
2146
Brad3f534582011-08-13 20:30:14 -04002147if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002148 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002149fi
2150
Peter Maydell8e515b12013-05-04 21:57:51 +01002151# MacOSX ships with a libtool which isn't the GNU one; weed this
2152# out by checking whether libtool supports the --version switch
2153if test -n "$libtool"; then
2154 if ! "$libtool" --version >/dev/null 2>&1; then
2155 libtool=
2156 fi
2157fi
2158
Alon Levy44dc0ca2011-05-15 11:51:28 +03002159##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002160# Sparse probe
2161if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002162 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002163 sparse=yes
2164 else
2165 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002166 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002167 fi
2168 sparse=no
2169 fi
2170fi
2171
2172##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002173# X11 probe
2174x11_cflags=
2175x11_libs=-lX11
2176if $pkg_config --exists "x11"; then
2177 x11_cflags=`$pkg_config --cflags x11`
2178 x11_libs=`$pkg_config --libs x11`
2179fi
2180
2181##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002182# GTK probe
2183
Stefan Weil9e04c682014-05-17 16:29:18 +02002184if test "$gtkabi" = ""; then
2185 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2186 # Use 3.0 as a fallback if that is available.
2187 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2188 gtkabi=2.0
2189 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2190 gtkabi=3.0
2191 else
2192 gtkabi=2.0
2193 fi
2194fi
2195
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002196if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002197 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002198 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002199 if test "$gtkabi" = "3.0" ; then
2200 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002201 else
2202 gtkversion="2.18.0"
2203 fi
2204 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2205 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2206 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002207 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002208 gtk_cflags="$gtk_cflags $x11_cflags"
2209 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002210 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002211 libs_softmmu="$gtk_libs $libs_softmmu"
2212 gtk="yes"
2213 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002214 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002215 else
2216 gtk="no"
2217 fi
2218fi
2219
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002220
2221##########################################
2222# GNUTLS probe
2223
Peter Maydell37371292015-07-24 18:28:08 +01002224gnutls_works() {
2225 # Unfortunately some distros have bad pkg-config information for gnutls
2226 # such that it claims to exist but you get a compiler error if you try
2227 # to use the options returned by --libs. Specifically, Ubuntu for --static
2228 # builds doesn't work:
2229 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2230 #
2231 # So sanity check the cflags/libs before assuming gnutls can be used.
2232 if ! $pkg_config --exists "gnutls"; then
2233 return 1
2234 fi
2235
2236 write_c_skeleton
2237 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2238}
2239
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002240gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002241gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002242if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002243 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002244 gnutls_cflags=`$pkg_config --cflags gnutls`
2245 gnutls_libs=`$pkg_config --libs gnutls`
2246 libs_softmmu="$gnutls_libs $libs_softmmu"
2247 libs_tools="$gnutls_libs $libs_tools"
2248 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2249 gnutls="yes"
2250
2251 # gnutls_hash_init requires >= 2.9.10
2252 if $pkg_config --exists "gnutls >= 2.9.10"; then
2253 gnutls_hash="yes"
2254 else
2255 gnutls_hash="no"
2256 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002257
2258 if $pkg_config --exists 'gnutls >= 3.0'; then
2259 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002260 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002261 elif $pkg_config --exists 'gnutls >= 2.12'; then
2262 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002263 *gcrypt*)
2264 gnutls_gcrypt=yes
2265 gnutls_nettle=no
2266 ;;
2267 *nettle*)
2268 gnutls_gcrypt=no
2269 gnutls_nettle=yes
2270 ;;
2271 *)
2272 gnutls_gcrypt=yes
2273 gnutls_nettle=no
2274 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002275 esac
2276 else
2277 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002278 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002279 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002280 elif test "$gnutls" = "yes"; then
2281 feature_not_found "gnutls" "Install gnutls devel"
2282 else
2283 gnutls="no"
2284 gnutls_hash="no"
2285 fi
2286else
2287 gnutls_hash="no"
2288fi
2289
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002290
2291# If user didn't give a --disable/enable-gcrypt flag,
2292# then mark as disabled if user requested nettle
2293# explicitly, or if gnutls links to nettle
2294if test -z "$gcrypt"
2295then
2296 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2297 then
2298 gcrypt="no"
2299 fi
2300fi
2301
2302# If user didn't give a --disable/enable-nettle flag,
2303# then mark as disabled if user requested gcrypt
2304# explicitly, or if gnutls links to gcrypt
2305if test -z "$nettle"
2306then
2307 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2308 then
2309 nettle="no"
2310 fi
2311fi
2312
2313has_libgcrypt_config() {
2314 if ! has "libgcrypt-config"
2315 then
2316 return 1
2317 fi
2318
2319 if test -n "$cross_prefix"
2320 then
2321 host=`libgcrypt-config --host`
2322 if test "$host-" != $cross_prefix
2323 then
2324 return 1
2325 fi
2326 fi
2327
2328 return 0
2329}
2330
2331if test "$gcrypt" != "no"; then
2332 if has_libgcrypt_config; then
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002333 gcrypt_cflags=`libgcrypt-config --cflags`
2334 gcrypt_libs=`libgcrypt-config --libs`
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002335 # Debian has remove -lgpg-error from libgcrypt-config
2336 # as it "spreads unnecessary dependencies" which in
2337 # turn breaks static builds...
2338 if test "$static" = "yes"
2339 then
2340 gcrypt_libs="$gcrypt_libs -lgpg-error"
2341 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002342 libs_softmmu="$gcrypt_libs $libs_softmmu"
2343 libs_tools="$gcrypt_libs $libs_tools"
2344 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002345 gcrypt="yes"
2346 if test -z "$nettle"; then
2347 nettle="no"
2348 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002349 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002350 if test "$gcrypt" = "yes"; then
2351 feature_not_found "gcrypt" "Install gcrypt devel"
2352 else
2353 gcrypt="no"
2354 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002355 fi
2356fi
2357
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002358
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002359if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002360 if $pkg_config --exists "nettle"; then
2361 nettle_cflags=`$pkg_config --cflags nettle`
2362 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002363 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002364 libs_softmmu="$nettle_libs $libs_softmmu"
2365 libs_tools="$nettle_libs $libs_tools"
2366 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002367 nettle="yes"
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002368 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002369 if test "$nettle" = "yes"; then
2370 feature_not_found "nettle" "Install nettle devel"
2371 else
2372 nettle="no"
2373 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002374 fi
2375fi
2376
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002377if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2378then
2379 error_exit "Only one of gcrypt & nettle can be enabled"
2380fi
2381
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002382##########################################
2383# libtasn1 - only for the TLS creds/session test suite
2384
2385tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002386tasn1_cflags=""
2387tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002388if $pkg_config --exists "libtasn1"; then
2389 tasn1_cflags=`$pkg_config --cflags libtasn1`
2390 tasn1_libs=`$pkg_config --libs libtasn1`
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002391else
2392 tasn1=no
2393fi
2394
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002395
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002396##########################################
2397# VTE probe
2398
2399if test "$vte" != "no"; then
2400 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002401 vtepackage="vte-2.90"
2402 vteversion="0.32.0"
2403 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002404 vtepackage="vte"
2405 vteversion="0.24.0"
2406 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002407 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2408 vte_cflags=`$pkg_config --cflags $vtepackage`
2409 vte_libs=`$pkg_config --libs $vtepackage`
2410 libs_softmmu="$vte_libs $libs_softmmu"
2411 vte="yes"
2412 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002413 if test "$gtkabi" = "3.0"; then
2414 feature_not_found "vte" "Install libvte-2.90 devel"
2415 else
2416 feature_not_found "vte" "Install libvte devel"
2417 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002418 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002419 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002420 fi
2421fi
2422
2423##########################################
bellard11d9f692004-04-02 20:55:59 +00002424# SDL probe
2425
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002426# Look for sdl configuration program (pkg-config or sdl-config). Try
2427# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002428
2429if test $sdlabi = "2.0"; then
2430 sdl_config=$sdl2_config
2431 sdlname=sdl2
2432 sdlconfigname=sdl2_config
2433else
2434 sdlname=sdl
2435 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002436fi
2437
Dave Airlie47c03742013-12-10 14:05:51 +10002438if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2439 sdl_config=$sdlconfigname
2440fi
2441
2442if $pkg_config $sdlname --exists; then
2443 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002444 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002445elif has ${sdl_config}; then
2446 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002447 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002448else
2449 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002450 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002451 fi
2452 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002453fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002454if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002455 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2456fi
bellard11d9f692004-04-02 20:55:59 +00002457
Paolo Bonzini9316f802010-01-13 09:52:55 +01002458sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002459if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002460 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002461#include <SDL.h>
2462#undef main /* We don't want SDL to override our main() */
2463int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2464EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002465 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002466 if test "$static" = "yes" ; then
2467 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2468 else
2469 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2470 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002471 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002472 if test "$_sdlversion" -lt 121 ; then
2473 sdl_too_old=yes
2474 else
Peter Maydella30878e2015-08-14 16:10:52 +01002475 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002476 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002477
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002478 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002479 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002480 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002481 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2482 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002483 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002484 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002485 :
2486 else
2487 sdl=no
2488 fi
2489 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002490 else # sdl not found
2491 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002492 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002493 fi
2494 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002495 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002496fi
bellard11d9f692004-04-02 20:55:59 +00002497
aliguori5368a422009-03-03 17:37:21 +00002498if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002499 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002500#include <SDL.h>
2501#if defined(SDL_VIDEO_DRIVER_X11)
2502#include <X11/XKBlib.h>
2503#else
2504#error No x11 support
2505#endif
2506int main(void) { return 0; }
2507EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002508 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2509 sdl_cflags="$sdl_cflags $x11_cflags"
2510 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002511 fi
Juan Quintela07056672009-08-03 14:46:27 +02002512 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002513fi
2514
ths8f28f3f2007-01-05 21:25:54 +00002515##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002516# RDMA needs OpenFabrics libraries
2517if test "$rdma" != "no" ; then
2518 cat > $TMPC <<EOF
2519#include <rdma/rdma_cma.h>
2520int main(void) { return 0; }
2521EOF
2522 rdma_libs="-lrdmacm -libverbs"
2523 if compile_prog "" "$rdma_libs" ; then
2524 rdma="yes"
2525 libs_softmmu="$libs_softmmu $rdma_libs"
2526 else
2527 if test "$rdma" = "yes" ; then
2528 error_exit \
2529 " OpenFabrics librdmacm/libibverbs not present." \
2530 " Your options:" \
2531 " (1) Fast: Install infiniband packages from your distro." \
2532 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2533 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2534 fi
2535 rdma="no"
2536 fi
2537fi
2538
ths8d5d2d42007-08-25 01:37:51 +00002539
2540##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002541# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002542if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002543 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002544#include <sasl/sasl.h>
2545#include <stdio.h>
2546int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2547EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002548 # Assuming Cyrus-SASL installed in /usr prefix
2549 vnc_sasl_cflags=""
2550 vnc_sasl_libs="-lsasl2"
2551 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2552 vnc_sasl=yes
2553 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002554 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002555 else
2556 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002557 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002558 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002559 vnc_sasl=no
2560 fi
aliguori2f9606b2009-03-06 20:27:28 +00002561fi
2562
2563##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002564# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002565if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002566cat > $TMPC <<EOF
2567#include <stdio.h>
2568#include <jpeglib.h>
2569int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2570EOF
2571 vnc_jpeg_cflags=""
2572 vnc_jpeg_libs="-ljpeg"
2573 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2574 vnc_jpeg=yes
2575 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002576 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002577 else
2578 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002579 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002580 fi
2581 vnc_jpeg=no
2582 fi
2583fi
2584
2585##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002586# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002587if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002588cat > $TMPC <<EOF
2589//#include <stdio.h>
2590#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002591#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002592int main(void) {
2593 png_structp png_ptr;
2594 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002595 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002596}
2597EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002598 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002599 vnc_png_cflags=`$pkg_config libpng --cflags`
2600 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002601 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002602 vnc_png_cflags=""
2603 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002604 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002605 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2606 vnc_png=yes
2607 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002608 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002609 else
2610 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002611 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002612 fi
2613 vnc_png=no
2614 fi
2615fi
2616
2617##########################################
aliguori76655d62009-03-06 20:27:37 +00002618# fnmatch() probe, used for ACL routines
2619fnmatch="no"
2620cat > $TMPC << EOF
2621#include <fnmatch.h>
2622int main(void)
2623{
2624 fnmatch("foo", "foo", 0);
2625 return 0;
2626}
2627EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002628if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002629 fnmatch="yes"
2630fi
2631
2632##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002633# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002634# Note that on some systems (notably MacOSX) no extra library
2635# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002636if test "$uuid" != "no" ; then
2637 uuid_libs="-luuid"
2638 cat > $TMPC << EOF
2639#include <uuid/uuid.h>
2640int main(void)
2641{
2642 uuid_t my_uuid;
2643 uuid_generate(my_uuid);
2644 return 0;
2645}
2646EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002647 if compile_prog "" "" ; then
2648 uuid="yes"
2649 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002650 uuid="yes"
2651 libs_softmmu="$uuid_libs $libs_softmmu"
2652 libs_tools="$uuid_libs $libs_tools"
2653 else
2654 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002655 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002656 fi
2657 uuid=no
2658 fi
2659fi
2660
Jeff Cody4f18b782013-10-30 10:44:39 -04002661if test "$vhdx" = "yes" ; then
2662 if test "$uuid" = "no" ; then
2663 error_exit "uuid required for VHDX support"
2664 fi
2665elif test "$vhdx" != "no" ; then
2666 if test "$uuid" = "yes" ; then
2667 vhdx=yes
2668 else
2669 vhdx=no
2670 fi
2671fi
2672
Stefan Weilee682d22009-10-01 20:10:37 +02002673##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002674# xfsctl() probe, used for raw-posix
2675if test "$xfs" != "no" ; then
2676 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002677#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002678#include <xfs/xfs.h>
2679int main(void)
2680{
2681 xfsctl(NULL, 0, 0, NULL);
2682 return 0;
2683}
2684EOF
2685 if compile_prog "" "" ; then
2686 xfs="yes"
2687 else
2688 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002689 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002690 fi
2691 xfs=no
2692 fi
2693fi
2694
2695##########################################
ths8a16d272008-07-19 09:56:24 +00002696# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002697if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002698 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002699 cat > $TMPC << EOF
2700#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002701int main(void)
2702{
2703 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002704 char s[] = "";
2705 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002706 return 0;
2707}
ths8a16d272008-07-19 09:56:24 +00002708EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002709 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002710 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002711 libs_softmmu="$vde_libs $libs_softmmu"
2712 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002713 else
2714 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002715 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002716 fi
2717 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002718 fi
ths8a16d272008-07-19 09:56:24 +00002719fi
2720
2721##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002722# netmap support probe
2723# Apart from looking for netmap headers, we make sure that the host API version
2724# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2725# a minor/major version number. Minor new features will be marked with values up
2726# to 15, and if something happens that requires a change to the backend we will
2727# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002728if test "$netmap" != "no" ; then
2729 cat > $TMPC << EOF
2730#include <inttypes.h>
2731#include <net/if.h>
2732#include <net/netmap.h>
2733#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002734#if (NETMAP_API < 11) || (NETMAP_API > 15)
2735#error
2736#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002737int main(void) { return 0; }
2738EOF
2739 if compile_prog "" "" ; then
2740 netmap=yes
2741 else
2742 if test "$netmap" = "yes" ; then
2743 feature_not_found "netmap"
2744 fi
2745 netmap=no
2746 fi
2747fi
2748
2749##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002750# libcap-ng library probe
2751if test "$cap_ng" != "no" ; then
2752 cap_libs="-lcap-ng"
2753 cat > $TMPC << EOF
2754#include <cap-ng.h>
2755int main(void)
2756{
2757 capng_capability_to_name(CAPNG_EFFECTIVE);
2758 return 0;
2759}
2760EOF
2761 if compile_prog "" "$cap_libs" ; then
2762 cap_ng=yes
2763 libs_tools="$cap_libs $libs_tools"
2764 else
2765 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002766 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002767 fi
2768 cap_ng=no
2769 fi
2770fi
2771
2772##########################################
malcc2de5c92008-06-28 19:13:06 +00002773# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002774
malcc2de5c92008-06-28 19:13:06 +00002775audio_drv_probe()
2776{
2777 drv=$1
2778 hdr=$2
2779 lib=$3
2780 exp=$4
2781 cfl=$5
2782 cat > $TMPC << EOF
2783#include <$hdr>
2784int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002785EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002786 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002787 :
2788 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002789 error_exit "$drv check failed" \
2790 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002791 fi
2792}
2793
malc2fa7d3b2008-07-29 12:58:44 +00002794audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002795for drv in $audio_drv_list; do
2796 case $drv in
2797 alsa)
2798 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002799 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002800 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002801 ;;
2802
malcb8e59f12008-07-02 21:03:08 +00002803 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002804 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2805 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2806 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002807 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002808 ;;
2809
Juan Quintela997e6902009-08-03 14:46:29 +02002810 coreaudio)
2811 libs_softmmu="-framework CoreAudio $libs_softmmu"
2812 ;;
2813
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002814 dsound)
2815 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002816 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002817 ;;
2818
2819 oss)
2820 libs_softmmu="$oss_lib $libs_softmmu"
2821 ;;
2822
2823 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002824 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2825 ;;
2826
malce4c63a62008-07-19 16:15:16 +00002827 *)
malc1c9b2a52008-07-19 16:57:30 +00002828 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002829 error_exit "Unknown driver '$drv' selected" \
2830 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002831 }
2832 ;;
malcc2de5c92008-06-28 19:13:06 +00002833 esac
2834done
ths8f28f3f2007-01-05 21:25:54 +00002835
balrog4d3b6f62008-02-10 16:33:14 +00002836##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002837# BrlAPI probe
2838
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002839if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002840 brlapi_libs="-lbrlapi"
2841 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002842#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002843#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002844int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2845EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002846 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002847 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002848 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002849 else
2850 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002851 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002852 fi
2853 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002854 fi
2855fi
aurel322e4d9fb2008-04-08 06:01:02 +00002856
2857##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002858# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002859if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002860 if test "$mingw32" = "yes" ; then
2861 curses_list="-lpdcurses"
2862 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002863 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002864 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002865 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002866 cat > $TMPC << EOF
2867#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002868int main(void) {
2869 const char *s = curses_version();
2870 resize_term(0, 0);
2871 return s != 0;
2872}
balrog4d3b6f62008-02-10 16:33:14 +00002873EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002874 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002875 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002876 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002877 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002878 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002879 libs_softmmu="$curses_lib $libs_softmmu"
2880 break
2881 fi
2882 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002883 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002884 if test "$curses_found" = "yes" ; then
2885 curses=yes
2886 else
2887 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002888 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002889 fi
2890 curses=no
2891 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002892fi
balrog4d3b6f62008-02-10 16:33:14 +00002893
blueswir1414f0da2008-08-15 18:20:52 +00002894##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002895# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002896if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002897 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002898 curlconfig="$pkg_config libcurl"
2899 else
2900 curlconfig=curl-config
2901 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002902 cat > $TMPC << EOF
2903#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002904int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002905EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002906 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2907 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002908 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002909 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002910 else
2911 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002912 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002913 fi
2914 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002915 fi
2916fi # test "$curl"
2917
2918##########################################
balrogfb599c92008-09-28 23:49:55 +00002919# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002920if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002921 cat > $TMPC << EOF
2922#include <bluetooth/bluetooth.h>
2923int main(void) { return bt_error(0); }
2924EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002925 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2926 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002927 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002928 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002929 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002930 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002931 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002932 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002933 fi
balroge820e3f2008-09-30 02:27:44 +00002934 bluez="no"
2935 fi
balrogfb599c92008-09-28 23:49:55 +00002936fi
2937
2938##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002939# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002940
John Snowf40685c2015-05-22 14:13:42 -04002941glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002942glib_modules=gthread-2.0
2943if test "$modules" = yes; then
2944 glib_modules="$glib_modules gmodule-2.0"
2945fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002946
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002947for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002948 if $pkg_config --atleast-version=$glib_req_ver $i; then
2949 glib_cflags=`$pkg_config --cflags $i`
2950 glib_libs=`$pkg_config --libs $i`
2951 CFLAGS="$glib_cflags $CFLAGS"
2952 LIBS="$glib_libs $LIBS"
2953 libs_qga="$glib_libs $libs_qga"
2954 else
2955 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2956 fi
2957done
2958
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002959# g_test_trap_subprocess added in 2.38. Used by some tests.
2960glib_subprocess=yes
2961if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2962 glib_subprocess=no
2963fi
2964
John Snowbbbf2e02015-03-25 18:57:38 -04002965# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2966cat > $TMPC << EOF
2967#include <glib.h>
2968int main(void) { return 0; }
2969EOF
2970if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2971 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2972 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2973 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2974 fi
2975fi
2976
Fam Zhenge26110c2014-02-10 14:48:57 +08002977##########################################
2978# SHA command probe for modules
2979if test "$modules" = yes; then
2980 shacmd_probe="sha1sum sha1 shasum"
2981 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002982 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002983 shacmd="$c"
2984 break
2985 fi
2986 done
2987 if test "$shacmd" = ""; then
2988 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2989 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002990fi
2991
2992##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002993# pixman support probe
2994
2995if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002996 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2997 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002998 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002999 pixman="system"
3000 else
3001 pixman="internal"
3002 fi
3003fi
Robert Schiele74880fe2012-12-04 16:58:08 +01003004if test "$pixman" = "none"; then
3005 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003006 error_exit "pixman disabled but system emulation or tools build" \
3007 "enabled. You can turn off pixman only if you also" \
3008 "disable all system emulation targets and the tools" \
3009 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01003010 fi
3011 pixman_cflags=
3012 pixman_libs=
3013elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08003014 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02003015 pixman_cflags=`$pkg_config --cflags pixman-1`
3016 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003017else
3018 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003019 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003020 " (1) Preferred: Install the pixman devel package (any recent" \
3021 " distro should have packages as Xorg needs pixman too)." \
3022 " (2) Fetch the pixman submodule, using:" \
3023 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003024 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003025 mkdir -p pixman/pixman
3026 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3027 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003028fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003029
3030##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303031# libcap probe
3032
3033if test "$cap" != "no" ; then
3034 cat > $TMPC <<EOF
3035#include <stdio.h>
3036#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003037int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303038EOF
3039 if compile_prog "" "-lcap" ; then
3040 cap=yes
3041 else
3042 cap=no
3043 fi
3044fi
3045
3046##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003047# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003048PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003049
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003050pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003051cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003052#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003053static void *f(void *p) { return NULL; }
3054int main(void) {
3055 pthread_t thread;
3056 pthread_create(&thread, 0, f, 0);
3057 return 0;
3058}
blueswir1414f0da2008-08-15 18:20:52 +00003059EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003060if compile_prog "" "" ; then
3061 pthread=yes
3062else
3063 for pthread_lib in $PTHREADLIBS_LIST; do
3064 if compile_prog "" "$pthread_lib" ; then
3065 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003066 found=no
3067 for lib_entry in $LIBS; do
3068 if test "$lib_entry" = "$pthread_lib"; then
3069 found=yes
3070 break
3071 fi
3072 done
3073 if test "$found" = "no"; then
3074 LIBS="$pthread_lib $LIBS"
3075 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003076 break
3077 fi
3078 done
3079fi
blueswir1414f0da2008-08-15 18:20:52 +00003080
Anthony Liguori4617e592009-08-25 17:21:56 -05003081if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003082 error_exit "pthread check failed" \
3083 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003084fi
3085
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003086# check for pthread_setname_np
3087pthread_setname_np=no
3088cat > $TMPC << EOF
3089#include <pthread.h>
3090
3091static void *f(void *p) { return NULL; }
3092int main(void)
3093{
3094 pthread_t thread;
3095 pthread_create(&thread, 0, f, 0);
3096 pthread_setname_np(thread, "QEMU");
3097 return 0;
3098}
3099EOF
3100if compile_prog "" "$pthread_lib" ; then
3101 pthread_setname_np=yes
3102fi
3103
aliguoribf9298b2008-12-05 20:05:26 +00003104##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003105# rbd probe
3106if test "$rbd" != "no" ; then
3107 cat > $TMPC <<EOF
3108#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003109#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003110int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003111 rados_t cluster;
3112 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003113 return 0;
3114}
3115EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003116 rbd_libs="-lrbd -lrados"
3117 if compile_prog "" "$rbd_libs" ; then
3118 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003119 else
3120 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003121 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003122 fi
3123 rbd=no
3124 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003125fi
3126
3127##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003128# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003129min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003130if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003131 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003132 libssh2_cflags=`$pkg_config libssh2 --cflags`
3133 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003134 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003135 else
3136 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003137 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003138 fi
3139 libssh2=no
3140 fi
3141fi
3142
3143##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003144# libssh2_sftp_fsync probe
3145
3146if test "$libssh2" = "yes"; then
3147 cat > $TMPC <<EOF
3148#include <stdio.h>
3149#include <libssh2.h>
3150#include <libssh2_sftp.h>
3151int main(void) {
3152 LIBSSH2_SESSION *session;
3153 LIBSSH2_SFTP *sftp;
3154 LIBSSH2_SFTP_HANDLE *sftp_handle;
3155 session = libssh2_session_init ();
3156 sftp = libssh2_sftp_init (session);
3157 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3158 libssh2_sftp_fsync (sftp_handle);
3159 return 0;
3160}
3161EOF
3162 # libssh2_cflags/libssh2_libs defined in previous test.
3163 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3164 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3165 fi
3166fi
3167
3168##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003169# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003170
3171if test "$linux_aio" != "no" ; then
3172 cat > $TMPC <<EOF
3173#include <libaio.h>
3174#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003175#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003176int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3177EOF
3178 if compile_prog "" "-laio" ; then
3179 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003180 else
3181 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003182 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003183 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003184 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003185 fi
3186fi
3187
3188##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003189# TPM passthrough is only on x86 Linux
3190
3191if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3192 tpm_passthrough=$tpm
3193else
3194 tpm_passthrough=no
3195fi
3196
3197##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003198# attr probe
3199
3200if test "$attr" != "no" ; then
3201 cat > $TMPC <<EOF
3202#include <stdio.h>
3203#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003204#ifdef CONFIG_LIBATTR
3205#include <attr/xattr.h>
3206#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003207#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003208#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003209int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3210EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003211 if compile_prog "" "" ; then
3212 attr=yes
3213 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003214 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003215 attr=yes
3216 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003217 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003218 else
3219 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003220 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003221 fi
3222 attr=no
3223 fi
3224fi
3225
3226##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003227# iovec probe
3228cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003229#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003230#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003231#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003232int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003233EOF
3234iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003235if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003236 iovec=yes
3237fi
3238
aurel32f652e6a2008-12-16 10:43:48 +00003239##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003240# preadv probe
3241cat > $TMPC <<EOF
3242#include <sys/types.h>
3243#include <sys/uio.h>
3244#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003245int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003246EOF
3247preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003248if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003249 preadv=yes
3250fi
3251
3252##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003253# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003254# fdt support is mandatory for at least some target architectures,
3255# so insist on it if we're building those system emulators.
3256fdt_required=no
3257for target in $target_list; do
3258 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003259 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003260 fdt_required=yes
3261 ;;
3262 esac
3263done
3264
3265if test "$fdt_required" = "yes"; then
3266 if test "$fdt" = "no"; then
3267 error_exit "fdt disabled but some requested targets require it." \
3268 "You can turn off fdt only if you also disable all the system emulation" \
3269 "targets which need it (by specifying a cut down --target-list)."
3270 fi
3271 fdt=yes
3272fi
3273
Juan Quintela2df87df2009-08-12 18:29:54 +02003274if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003275 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003276 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003277 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003278 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003279#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003280#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003281int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003282EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003283 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003284 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003285 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003286 elif test -d ${source_path}/dtc/libfdt ; then
3287 # have submodule DTC - use it
3288 fdt=yes
3289 dtc_internal="yes"
3290 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003291 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003292 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3293 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003294 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003295 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3296 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3297 elif test "$fdt" = "yes" ; then
3298 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003299 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003300 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003301 " (2) Fetch the DTC submodule, using:" \
3302 " git submodule update --init dtc"
3303 else
3304 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003305 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003306 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003307 fi
3308fi
3309
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003310libs_softmmu="$libs_softmmu $fdt_libs"
3311
Michael Walle20ff0752011-03-07 23:32:39 +01003312##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003313# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003314
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003315if test "$opengl" != "no" ; then
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003316 opengl_pkgs="epoxy"
3317 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003318 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3319 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003320 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003321 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3322 gtk_gl="yes"
3323 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003324 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003325 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003326 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003327 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003328 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003329 opengl_libs=""
3330 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003331 fi
3332fi
3333
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003334
3335##########################################
3336# archipelago probe
3337if test "$archipelago" != "no" ; then
3338 cat > $TMPC <<EOF
3339#include <stdio.h>
3340#include <xseg/xseg.h>
3341#include <xseg/protocol.h>
3342int main(void) {
3343 xseg_initialize();
3344 return 0;
3345}
3346EOF
3347 archipelago_libs=-lxseg
3348 if compile_prog "" "$archipelago_libs"; then
3349 archipelago="yes"
3350 libs_tools="$archipelago_libs $libs_tools"
3351 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003352
3353 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3354 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3355 echo "license and therefore prevent redistribution."
3356 echo
3357 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003358 else
3359 if test "$archipelago" = "yes" ; then
3360 feature_not_found "Archipelago backend support" "Install libxseg devel"
3361 fi
3362 archipelago="no"
3363 fi
3364fi
3365
3366
Bharata B Raoeb100392012-09-24 14:42:45 +05303367##########################################
3368# glusterfs probe
3369if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003370 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303371 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003372 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3373 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003374 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303375 glusterfs_discard="yes"
3376 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303377 if $pkg_config --atleast-version=6 glusterfs-api; then
3378 glusterfs_zerofill="yes"
3379 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303380 else
3381 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003382 feature_not_found "GlusterFS backend support" \
3383 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303384 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303385 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303386 fi
3387fi
3388
aurel3239386ac2009-04-15 19:48:17 +00003389# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003390# emulator. This is done because older glibc versions don't
3391# have syscall stubs for these implemented. In that case we
3392# don't provide them even if kernel supports them.
3393#
3394inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003395cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003396#include <sys/inotify.h>
3397
3398int
3399main(void)
3400{
3401 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003402 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003403}
3404EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003405if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003406 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003407fi
3408
Riku Voipioc05c7a72010-03-26 15:25:11 +00003409inotify1=no
3410cat > $TMPC << EOF
3411#include <sys/inotify.h>
3412
3413int
3414main(void)
3415{
3416 /* try to start inotify */
3417 return inotify_init1(0);
3418}
3419EOF
3420if compile_prog "" "" ; then
3421 inotify1=yes
3422fi
3423
Riku Voipioebc996f2009-04-21 15:01:51 +03003424# check if utimensat and futimens are supported
3425utimens=no
3426cat > $TMPC << EOF
3427#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003428#include <stddef.h>
3429#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003430#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003431
3432int main(void)
3433{
3434 utimensat(AT_FDCWD, "foo", NULL, 0);
3435 futimens(0, NULL);
3436 return 0;
3437}
3438EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003439if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003440 utimens=yes
3441fi
3442
Riku Voipio099d6b02009-05-05 12:10:04 +03003443# check if pipe2 is there
3444pipe2=no
3445cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003446#include <unistd.h>
3447#include <fcntl.h>
3448
3449int main(void)
3450{
3451 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003452 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003453}
3454EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003455if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003456 pipe2=yes
3457fi
3458
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003459# check if accept4 is there
3460accept4=no
3461cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003462#include <sys/socket.h>
3463#include <stddef.h>
3464
3465int main(void)
3466{
3467 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3468 return 0;
3469}
3470EOF
3471if compile_prog "" "" ; then
3472 accept4=yes
3473fi
3474
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303475# check if tee/splice is there. vmsplice was added same time.
3476splice=no
3477cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303478#include <unistd.h>
3479#include <fcntl.h>
3480#include <limits.h>
3481
3482int main(void)
3483{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003484 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303485 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3486 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3487 return 0;
3488}
3489EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003490if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303491 splice=yes
3492fi
3493
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003494##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003495# libnuma probe
3496
3497if test "$numa" != "no" ; then
3498 cat > $TMPC << EOF
3499#include <numa.h>
3500int main(void) { return numa_available(); }
3501EOF
3502
3503 if compile_prog "" "-lnuma" ; then
3504 numa=yes
3505 libs_softmmu="-lnuma $libs_softmmu"
3506 else
3507 if test "$numa" = "yes" ; then
3508 feature_not_found "numa" "install numactl devel"
3509 fi
3510 numa=no
3511 fi
3512fi
3513
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003514if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3515 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3516 exit 1
3517fi
3518
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003519##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003520# tcmalloc probe
3521
3522if test "$tcmalloc" = "yes" ; then
3523 cat > $TMPC << EOF
3524#include <stdlib.h>
3525int main(void) { malloc(1); return 0; }
3526EOF
3527
3528 if compile_prog "" "-ltcmalloc" ; then
3529 LIBS="-ltcmalloc $LIBS"
3530 else
3531 feature_not_found "tcmalloc" "install gperftools devel"
3532 fi
3533fi
3534
3535##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003536# jemalloc probe
3537
3538if test "$jemalloc" = "yes" ; then
3539 cat > $TMPC << EOF
3540#include <stdlib.h>
3541int main(void) { malloc(1); return 0; }
3542EOF
3543
3544 if compile_prog "" "-ljemalloc" ; then
3545 LIBS="-ljemalloc $LIBS"
3546 else
3547 feature_not_found "jemalloc" "install jemalloc devel"
3548 fi
3549fi
3550
3551##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003552# signalfd probe
3553signalfd="no"
3554cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003555#include <unistd.h>
3556#include <sys/syscall.h>
3557#include <signal.h>
3558int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3559EOF
3560
3561if compile_prog "" "" ; then
3562 signalfd=yes
3563fi
3564
Riku Voipioc2882b92009-08-12 15:08:24 +03003565# check if eventfd is supported
3566eventfd=no
3567cat > $TMPC << EOF
3568#include <sys/eventfd.h>
3569
3570int main(void)
3571{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003572 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003573}
3574EOF
3575if compile_prog "" "" ; then
3576 eventfd=yes
3577fi
3578
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003579# check if memfd is supported
3580memfd=no
3581cat > $TMPC << EOF
3582#include <sys/memfd.h>
3583
3584int main(void)
3585{
3586 return memfd_create("foo", MFD_ALLOW_SEALING);
3587}
3588EOF
3589if compile_prog "" "" ; then
3590 memfd=yes
3591fi
3592
3593
3594
Ulrich Hechtd0927932009-09-17 20:22:14 +03003595# check for fallocate
3596fallocate=no
3597cat > $TMPC << EOF
3598#include <fcntl.h>
3599
3600int main(void)
3601{
3602 fallocate(0, 0, 0, 0);
3603 return 0;
3604}
3605EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003606if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003607 fallocate=yes
3608fi
3609
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003610# check for fallocate hole punching
3611fallocate_punch_hole=no
3612cat > $TMPC << EOF
3613#include <fcntl.h>
3614#include <linux/falloc.h>
3615
3616int main(void)
3617{
3618 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3619 return 0;
3620}
3621EOF
3622if compile_prog "" "" ; then
3623 fallocate_punch_hole=yes
3624fi
3625
Denis V. Lunevb953f072015-01-30 11:42:14 +03003626# check that fallocate supports range zeroing inside the file
3627fallocate_zero_range=no
3628cat > $TMPC << EOF
3629#include <fcntl.h>
3630#include <linux/falloc.h>
3631
3632int main(void)
3633{
3634 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3635 return 0;
3636}
3637EOF
3638if compile_prog "" "" ; then
3639 fallocate_zero_range=yes
3640fi
3641
Kevin Wolfed911432014-09-29 17:12:59 +02003642# check for posix_fallocate
3643posix_fallocate=no
3644cat > $TMPC << EOF
3645#include <fcntl.h>
3646
3647int main(void)
3648{
3649 posix_fallocate(0, 0, 0);
3650 return 0;
3651}
3652EOF
3653if compile_prog "" "" ; then
3654 posix_fallocate=yes
3655fi
3656
Peter Maydellc727f472011-01-06 11:05:10 +00003657# check for sync_file_range
3658sync_file_range=no
3659cat > $TMPC << EOF
3660#include <fcntl.h>
3661
3662int main(void)
3663{
3664 sync_file_range(0, 0, 0, 0);
3665 return 0;
3666}
3667EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003668if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003669 sync_file_range=yes
3670fi
3671
Peter Maydelldace20d2011-01-10 13:11:24 +00003672# check for linux/fiemap.h and FS_IOC_FIEMAP
3673fiemap=no
3674cat > $TMPC << EOF
3675#include <sys/ioctl.h>
3676#include <linux/fs.h>
3677#include <linux/fiemap.h>
3678
3679int main(void)
3680{
3681 ioctl(0, FS_IOC_FIEMAP, 0);
3682 return 0;
3683}
3684EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003685if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003686 fiemap=yes
3687fi
3688
Ulrich Hechtd0927932009-09-17 20:22:14 +03003689# check for dup3
3690dup3=no
3691cat > $TMPC << EOF
3692#include <unistd.h>
3693
3694int main(void)
3695{
3696 dup3(0, 0, 0);
3697 return 0;
3698}
3699EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003700if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003701 dup3=yes
3702fi
3703
Alex Bligh4e0c6522013-08-21 16:02:43 +01003704# check for ppoll support
3705ppoll=no
3706cat > $TMPC << EOF
3707#include <poll.h>
3708
3709int main(void)
3710{
3711 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3712 ppoll(&pfd, 1, 0, 0);
3713 return 0;
3714}
3715EOF
3716if compile_prog "" "" ; then
3717 ppoll=yes
3718fi
3719
Alex Blighcd758dd2013-08-21 16:02:44 +01003720# check for prctl(PR_SET_TIMERSLACK , ... ) support
3721prctl_pr_set_timerslack=no
3722cat > $TMPC << EOF
3723#include <sys/prctl.h>
3724
3725int main(void)
3726{
3727 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3728 return 0;
3729}
3730EOF
3731if compile_prog "" "" ; then
3732 prctl_pr_set_timerslack=yes
3733fi
3734
Peter Maydell3b6edd12011-02-15 18:35:05 +00003735# check for epoll support
3736epoll=no
3737cat > $TMPC << EOF
3738#include <sys/epoll.h>
3739
3740int main(void)
3741{
3742 epoll_create(0);
3743 return 0;
3744}
3745EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003746if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003747 epoll=yes
3748fi
3749
3750# epoll_create1 and epoll_pwait are later additions
3751# so we must check separately for their presence
3752epoll_create1=no
3753cat > $TMPC << EOF
3754#include <sys/epoll.h>
3755
3756int main(void)
3757{
Peter Maydell19e83f62011-04-26 16:56:40 +01003758 /* Note that we use epoll_create1 as a value, not as
3759 * a function being called. This is necessary so that on
3760 * old SPARC glibc versions where the function was present in
3761 * the library but not declared in the header file we will
3762 * fail the configure check. (Otherwise we will get a compiler
3763 * warning but not an error, and will proceed to fail the
3764 * qemu compile where we compile with -Werror.)
3765 */
Blue Swirlc075a722012-08-09 20:21:25 +00003766 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003767}
3768EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003769if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003770 epoll_create1=yes
3771fi
3772
3773epoll_pwait=no
3774cat > $TMPC << EOF
3775#include <sys/epoll.h>
3776
3777int main(void)
3778{
3779 epoll_pwait(0, 0, 0, 0, 0);
3780 return 0;
3781}
3782EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003783if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003784 epoll_pwait=yes
3785fi
3786
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003787# check for sendfile support
3788sendfile=no
3789cat > $TMPC << EOF
3790#include <sys/sendfile.h>
3791
3792int main(void)
3793{
3794 return sendfile(0, 0, 0, 0);
3795}
3796EOF
3797if compile_prog "" "" ; then
3798 sendfile=yes
3799fi
3800
Riku Voipio51834342014-06-22 11:25:42 +01003801# check for timerfd support (glibc 2.8 and newer)
3802timerfd=no
3803cat > $TMPC << EOF
3804#include <sys/timerfd.h>
3805
3806int main(void)
3807{
3808 return(timerfd_create(CLOCK_REALTIME, 0));
3809}
3810EOF
3811if compile_prog "" "" ; then
3812 timerfd=yes
3813fi
3814
Riku Voipio9af5c902014-08-12 15:58:57 +03003815# check for setns and unshare support
3816setns=no
3817cat > $TMPC << EOF
3818#include <sched.h>
3819
3820int main(void)
3821{
3822 int ret;
3823 ret = setns(0, 0);
3824 ret = unshare(0);
3825 return ret;
3826}
3827EOF
3828if compile_prog "" "" ; then
3829 setns=yes
3830fi
3831
pbrookcc8ae6d2006-04-23 17:57:59 +00003832# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003833if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003834 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003835 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003836 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003837 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003838 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003839 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003840 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003841 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003842fi
3843
Stefan Weilf514f412009-10-11 12:44:07 +02003844# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003845byteswap_h=no
3846cat > $TMPC << EOF
3847#include <byteswap.h>
3848int main(void) { return bswap_32(0); }
3849EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003850if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003851 byteswap_h=yes
3852fi
3853
Stefan Weil75f13592013-01-05 12:17:38 +01003854# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003855bswap_h=no
3856cat > $TMPC << EOF
3857#include <sys/endian.h>
3858#include <sys/types.h>
3859#include <machine/bswap.h>
3860int main(void) { return bswap32(0); }
3861EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003862if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003863 bswap_h=yes
3864fi
3865
aliguorida93a1f2008-12-12 20:02:52 +00003866##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003867# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003868if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003869 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003870 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003871 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3872 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003873 else
3874 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003875 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003876 fi
3877 libiscsi="no"
3878 fi
3879fi
3880
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003881##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003882# Do we need libm
3883cat > $TMPC << EOF
3884#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003885int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003886EOF
3887if compile_prog "" "" ; then
3888 :
3889elif compile_prog "" "-lm" ; then
3890 LIBS="-lm $LIBS"
3891 libs_qga="-lm $libs_qga"
3892else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003893 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003894fi
3895
3896##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003897# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003898# uClibc provides 2 versions of clock_gettime(), one with realtime
3899# support and one without. This means that the clock_gettime() don't
3900# need -lrt. We still need it for timer_create() so we check for this
3901# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003902cat > $TMPC <<EOF
3903#include <signal.h>
3904#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003905int main(void) {
3906 timer_create(CLOCK_REALTIME, NULL, NULL);
3907 return clock_gettime(CLOCK_REALTIME, NULL);
3908}
aliguorida93a1f2008-12-12 20:02:52 +00003909EOF
3910
Juan Quintela52166aa2009-08-03 14:46:03 +02003911if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003912 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003913# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003914elif compile_prog "" "$pthread_lib -lrt" ; then
3915 LIBS="$LIBS -lrt"
3916 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003917fi
3918
Blue Swirl31ff5042009-09-12 12:33:07 +00003919if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003920 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003921 libs_softmmu="-lutil $libs_softmmu"
3922fi
3923
Blue Swirlde5071c2009-09-12 09:58:46 +00003924##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003925# spice probe
3926if test "$spice" != "no" ; then
3927 cat > $TMPC << EOF
3928#include <spice.h>
3929int main(void) { spice_server_new(); return 0; }
3930EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003931 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3932 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003933 if $pkg_config --atleast-version=0.12.0 spice-server && \
3934 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003935 compile_prog "$spice_cflags" "$spice_libs" ; then
3936 spice="yes"
3937 libs_softmmu="$libs_softmmu $spice_libs"
3938 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003939 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3940 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003941 else
3942 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003943 feature_not_found "spice" \
3944 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003945 fi
3946 spice="no"
3947 fi
3948fi
3949
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003950# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003951smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003952if test "$smartcard" != "no"; then
3953 if $pkg_config libcacard; then
3954 libcacard_cflags=$($pkg_config --cflags libcacard)
3955 libcacard_libs=$($pkg_config --libs libcacard)
3956 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3957 libs_softmmu="$libs_softmmu $libcacard_libs"
3958 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003959 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003960 if test "$smartcard" = "yes"; then
3961 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003962 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003963 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003964 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003965fi
3966
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003967# check for libusb
3968if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003969 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003970 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003971 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3972 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003973 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3974 libs_softmmu="$libs_softmmu $libusb_libs"
3975 else
3976 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003977 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003978 fi
3979 libusb="no"
3980 fi
3981fi
3982
Hans de Goede69354a82011-07-19 11:04:10 +02003983# check for usbredirparser for usb network redirection support
3984if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003985 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003986 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003987 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3988 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003989 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003990 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003991 else
3992 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003993 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003994 fi
3995 usb_redir="no"
3996 fi
3997fi
3998
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003999##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004000# check if we have VSS SDK headers for win
4001
4002if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4003 case "$vss_win32_sdk" in
4004 "") vss_win32_include="-I$source_path" ;;
4005 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4006 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4007 vss_win32_include="-I$source_path/.sdk/vss"
4008 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4009 ;;
4010 *) vss_win32_include="-I$vss_win32_sdk"
4011 esac
4012 cat > $TMPC << EOF
4013#define __MIDL_user_allocate_free_DEFINED__
4014#include <inc/win2003/vss.h>
4015int main(void) { return VSS_CTX_BACKUP; }
4016EOF
4017 if compile_prog "$vss_win32_include" "" ; then
4018 guest_agent_with_vss="yes"
4019 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4020 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004021 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004022 else
4023 if test "$vss_win32_sdk" != "" ; then
4024 echo "ERROR: Please download and install Microsoft VSS SDK:"
4025 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4026 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4027 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4028 echo "ERROR: The headers are extracted in the directory \`inc'."
4029 feature_not_found "VSS support"
4030 fi
4031 guest_agent_with_vss="no"
4032 fi
4033fi
4034
4035##########################################
4036# lookup Windows platform SDK (if not specified)
4037# The SDK is needed only to build .tlb (type library) file of guest agent
4038# VSS provider from the source. It is usually unnecessary because the
4039# pre-compiled .tlb file is included.
4040
4041if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4042 if test -z "$win_sdk"; then
4043 programfiles="$PROGRAMFILES"
4044 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4045 if test -n "$programfiles"; then
4046 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4047 else
4048 feature_not_found "Windows SDK"
4049 fi
4050 elif test "$win_sdk" = "no"; then
4051 win_sdk=""
4052 fi
4053fi
4054
4055##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004056# check if mingw environment provides a recent ntddscsi.h
4057if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4058 cat > $TMPC << EOF
4059#include <windows.h>
4060#include <ntddscsi.h>
4061int main(void) {
4062#if !defined(IOCTL_SCSI_GET_ADDRESS)
4063#error Missing required ioctl definitions
4064#endif
4065 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4066 return addr.Lun;
4067}
4068EOF
4069 if compile_prog "" "" ; then
4070 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004071 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004072 fi
4073fi
4074
4075##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004076# virgl renderer probe
4077
4078if test "$virglrenderer" != "no" ; then
4079 cat > $TMPC << EOF
4080#include <virglrenderer.h>
4081int main(void) { virgl_renderer_poll(); return 0; }
4082EOF
4083 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4084 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4085 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4086 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4087 virglrenderer="yes"
4088 else
4089 if test "$virglrenderer" = "yes" ; then
4090 feature_not_found "virglrenderer"
4091 fi
4092 virglrenderer="no"
4093 fi
4094fi
4095
4096##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004097# check if we have fdatasync
4098
4099fdatasync=no
4100cat > $TMPC << EOF
4101#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004102int main(void) {
4103#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4104return fdatasync(0);
4105#else
Stefan Weile172fe12012-04-06 21:33:20 +02004106#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004107#endif
4108}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004109EOF
4110if compile_prog "" "" ; then
4111 fdatasync=yes
4112fi
4113
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004114##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004115# check if we have madvise
4116
4117madvise=no
4118cat > $TMPC << EOF
4119#include <sys/types.h>
4120#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004121#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004122int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4123EOF
4124if compile_prog "" "" ; then
4125 madvise=yes
4126fi
4127
4128##########################################
4129# check if we have posix_madvise
4130
4131posix_madvise=no
4132cat > $TMPC << EOF
4133#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004134#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004135int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4136EOF
4137if compile_prog "" "" ; then
4138 posix_madvise=yes
4139fi
4140
4141##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004142# check if we have usable SIGEV_THREAD_ID
4143
4144sigev_thread_id=no
4145cat > $TMPC << EOF
4146#include <signal.h>
4147int main(void) {
4148 struct sigevent ev;
4149 ev.sigev_notify = SIGEV_THREAD_ID;
4150 ev._sigev_un._tid = 0;
4151 asm volatile("" : : "g"(&ev));
4152 return 0;
4153}
4154EOF
4155if compile_prog "" "" ; then
4156 sigev_thread_id=yes
4157fi
4158
4159##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004160# check if trace backend exists
4161
Lluís Vilanova5b808272014-05-27 15:02:14 +02004162$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004163if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004164 error_exit "invalid trace backends" \
4165 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004166fi
4167
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004168##########################################
4169# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004170if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004171 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004172#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004173int main(void) { return 0; }
4174EOF
4175 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004176 if $pkg_config lttng-ust --exists; then
4177 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4178 else
4179 lttng_ust_libs="-llttng-ust"
4180 fi
4181 if $pkg_config liburcu-bp --exists; then
4182 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4183 else
4184 urcu_bp_libs="-lurcu-bp"
4185 fi
4186
4187 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4188 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004189 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004190 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004191 fi
4192fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004193
4194##########################################
4195# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004196if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004197 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004198 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004199 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004200 trace_backend_stap="no"
4201 if has 'stap' ; then
4202 trace_backend_stap="yes"
4203 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004204fi
4205
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004206##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004207# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304208
Peter Maydell7c2acc72013-04-08 12:11:27 +01004209# We prefer ucontext, but it's not always possible. The fallback
4210# is sigcontext. gthread is not selectable except explicitly, because
4211# it is not functional enough to run QEMU proper. (It is occasionally
4212# useful for debugging purposes.) On Windows the only valid backend
4213# is the Windows-specific one.
4214
4215ucontext_works=no
4216if test "$darwin" != "yes"; then
4217 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304218#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004219#ifdef __stub_makecontext
4220#error Ignoring glibc stub makecontext which will always fail
4221#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004222int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304223EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004224 if compile_prog "" "" ; then
4225 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304226 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004227fi
4228
4229if test "$coroutine" = ""; then
4230 if test "$mingw32" = "yes"; then
4231 coroutine=win32
4232 elif test "$ucontext_works" = "yes"; then
4233 coroutine=ucontext
4234 else
4235 coroutine=sigaltstack
4236 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004237else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004238 case $coroutine in
4239 windows)
4240 if test "$mingw32" != "yes"; then
4241 error_exit "'windows' coroutine backend only valid for Windows"
4242 fi
4243 # Unfortunately the user visible backend name doesn't match the
4244 # coroutine-*.c filename for this case, so we have to adjust it here.
4245 coroutine=win32
4246 ;;
4247 ucontext)
4248 if test "$ucontext_works" != "yes"; then
4249 feature_not_found "ucontext"
4250 fi
4251 ;;
4252 gthread|sigaltstack)
4253 if test "$mingw32" = "yes"; then
4254 error_exit "only the 'windows' coroutine backend is valid for Windows"
4255 fi
4256 ;;
4257 *)
4258 error_exit "unknown coroutine backend $coroutine"
4259 ;;
4260 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304261fi
4262
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004263if test "$coroutine_pool" = ""; then
4264 if test "$coroutine" = "gthread"; then
4265 coroutine_pool=no
4266 else
4267 coroutine_pool=yes
4268 fi
4269fi
4270if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4271 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4272fi
4273
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304274##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304275# check if we have open_by_handle_at
4276
Stefan Weil4e1797f2012-06-18 22:11:06 +02004277open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304278cat > $TMPC << EOF
4279#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004280#if !defined(AT_EMPTY_PATH)
4281# error missing definition
4282#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004283int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004284#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304285EOF
4286if compile_prog "" "" ; then
4287 open_by_handle_at=yes
4288fi
4289
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304290########################################
4291# check if we have linux/magic.h
4292
4293linux_magic_h=no
4294cat > $TMPC << EOF
4295#include <linux/magic.h>
4296int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004297 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304298}
4299EOF
4300if compile_prog "" "" ; then
4301 linux_magic_h=yes
4302fi
4303
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004304########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004305# check whether we can disable warning option with a pragma (this is needed
4306# to silence warnings in the headers of some versions of external libraries).
4307# This test has to be compiled with -Werror as otherwise an unknown pragma is
4308# only a warning.
4309#
4310# If we can't selectively disable warning in the code, disable -Werror so that
4311# the build doesn't fail anyway.
4312
Peter Maydell06d71fa2012-07-30 16:13:07 +01004313pragma_disable_unused_but_set=no
4314cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004315#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004316#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004317#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004318#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004319
Peter Maydell06d71fa2012-07-30 16:13:07 +01004320int main(void) {
4321 return 0;
4322}
4323EOF
4324if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004325 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004326else
4327 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004328fi
4329
4330########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004331# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004332
4333valgrind_h=no
4334cat > $TMPC << EOF
4335#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004336int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004337 return 0;
4338}
4339EOF
4340if compile_prog "" "" ; then
4341 valgrind_h=yes
4342fi
4343
4344########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004345# check if environ is declared
4346
4347has_environ=no
4348cat > $TMPC << EOF
4349#include <unistd.h>
4350int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004351 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004352 return 0;
4353}
4354EOF
4355if compile_prog "" "" ; then
4356 has_environ=yes
4357fi
4358
Richard Henderson76a347e2012-12-28 14:17:02 -08004359########################################
4360# check if cpuid.h is usable.
4361
4362cpuid_h=no
4363cat > $TMPC << EOF
4364#include <cpuid.h>
4365int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004366 unsigned a, b, c, d;
4367 int max = __get_cpuid_max(0, 0);
4368
4369 if (max >= 1) {
4370 __cpuid(1, a, b, c, d);
4371 }
4372
4373 if (max >= 7) {
4374 __cpuid_count(7, 0, a, b, c, d);
4375 }
4376
4377 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004378}
4379EOF
4380if compile_prog "" "" ; then
4381 cpuid_h=yes
4382fi
4383
Richard Hendersonf5401662013-02-16 12:46:59 -08004384########################################
4385# check if __[u]int128_t is usable.
4386
4387int128=no
4388cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004389#if defined(__clang_major__) && defined(__clang_minor__)
4390# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4391# error __int128_t does not work in CLANG before 3.2
4392# endif
4393#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004394__int128_t a;
4395__uint128_t b;
4396int main (void) {
4397 a = a + b;
4398 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004399 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004400 return 0;
4401}
4402EOF
4403if compile_prog "" "" ; then
4404 int128=yes
4405fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004406
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004407########################################
4408# check if getauxval is available.
4409
4410getauxval=no
4411cat > $TMPC << EOF
4412#include <sys/auxv.h>
4413int main(void) {
4414 return getauxval(AT_HWCAP) == 0;
4415}
4416EOF
4417if compile_prog "" "" ; then
4418 getauxval=yes
4419fi
4420
John Snowfd0e6052015-03-25 18:57:39 -04004421########################################
4422# check if ccache is interfering with
4423# semantic analysis of macros
4424
John Snow5e4dfd32015-10-28 13:56:40 -04004425unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004426ccache_cpp2=no
4427cat > $TMPC << EOF
4428static const int Z = 1;
4429#define fn() ({ Z; })
4430#define TAUT(X) ((X) == Z)
4431#define PAREN(X, Y) (X == Y)
4432#define ID(X) (X)
4433int main(int argc, char *argv[])
4434{
4435 int x = 0, y = 0;
4436 x = ID(x);
4437 x = fn();
4438 fn();
4439 if (PAREN(x, y)) return 0;
4440 if (TAUT(Z)) return 0;
4441 return 0;
4442}
4443EOF
4444
4445if ! compile_object "-Werror"; then
4446 ccache_cpp2=yes
4447fi
4448
John Snowb553a042015-11-03 15:43:42 -05004449#################################################
4450# clang does not support glibc + FORTIFY_SOURCE.
4451
4452if test "$fortify_source" != "no"; then
4453 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4454 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004455 elif test -n "$cxx" &&
4456 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004457 fortify_source="no";
4458 else
4459 fortify_source="yes"
4460 fi
4461fi
4462
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304463##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004464# End of CC checks
4465# After here, no more $cc or $ld runs
4466
Blue Swirl1d728c32012-05-01 18:45:39 +00004467if test "$gcov" = "yes" ; then
4468 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4469 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004470elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004471 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004472elif test "$debug" = "no"; then
4473 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004474fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004475
Peter Lieven6542aa92014-02-03 10:26:13 +01004476##########################################
4477# Do we have libnfs
4478if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004479 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004480 libnfs="yes"
4481 libnfs_libs=$($pkg_config --libs libnfs)
4482 LIBS="$LIBS $libnfs_libs"
4483 else
4484 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004485 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004486 fi
4487 libnfs="no"
4488 fi
4489fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004490
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004491# Disable zero malloc errors for official releases unless explicitly told to
4492# enable/disable
4493if test -z "$zero_malloc" ; then
4494 if test "$z_version" = "50" ; then
4495 zero_malloc="no"
4496 else
4497 zero_malloc="yes"
4498 fi
4499fi
4500
Peter Maydell6ca026c2012-07-18 15:10:18 +01004501# Now we've finished running tests it's OK to add -Werror to the compiler flags
4502if test "$werror" = "yes"; then
4503 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4504fi
4505
Juan Quintelae86ecd42009-08-03 14:45:59 +02004506if test "$solaris" = "no" ; then
4507 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004508 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004509 fi
4510fi
4511
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004512# test if pod2man has --utf8 option
4513if pod2man --help | grep -q utf8; then
4514 POD2MAN="pod2man --utf8"
4515else
4516 POD2MAN="pod2man"
4517fi
4518
Blue Swirl952afb72010-09-19 08:36:34 +00004519# Use ASLR, no-SEH and DEP if available
4520if test "$mingw32" = "yes" ; then
4521 for flag in --dynamicbase --no-seh --nxcompat; do
4522 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4523 LDFLAGS="-Wl,$flag $LDFLAGS"
4524 fi
4525 done
4526fi
4527
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004528qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004529qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004530qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004531qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004532
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004533tools=""
4534if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004535 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004536 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4537 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004538 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004539 fi
4540fi
4541if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304542 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004543 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4544 virtfs=yes
4545 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4546 else
4547 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004548 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304549 fi
Andreas Färber17500372012-05-01 01:12:03 +02004550 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004551 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304552 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004553fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004554
4555# Probe for guest agent support/options
4556
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004557if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004558 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004559 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004560 guest_agent=yes
4561 elif [ "$guest_agent" != yes ]; then
4562 guest_agent=no
4563 else
4564 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004565 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004566fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004567
Michael Roth9d6bc272015-08-26 10:49:13 -05004568# Guest agent Window MSI package
4569
4570if test "$guest_agent" != yes; then
4571 if test "$guest_agent_msi" = yes; then
4572 error_exit "MSI guest agent package requires guest agent enabled"
4573 fi
4574 guest_agent_msi=no
4575elif test "$mingw32" != "yes"; then
4576 if test "$guest_agent_msi" = "yes"; then
4577 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4578 fi
4579 guest_agent_msi=no
4580elif ! has wixl; then
4581 if test "$guest_agent_msi" = "yes"; then
4582 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4583 fi
4584 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004585else
4586 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4587 # disabled explicitly
4588 if test "$guest_agent_msi" != "no"; then
4589 guest_agent_msi=yes
4590 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004591fi
4592
Michael Roth1a349042015-08-26 11:14:31 -05004593if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004594 if test "$guest_agent_with_vss" = "yes"; then
4595 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4596 fi
4597
4598 if test "$QEMU_GA_MANUFACTURER" = ""; then
4599 QEMU_GA_MANUFACTURER=QEMU
4600 fi
4601
4602 if test "$QEMU_GA_DISTRO" = ""; then
4603 QEMU_GA_DISTRO=Linux
4604 fi
4605
4606 if test "$QEMU_GA_VERSION" = ""; then
4607 QEMU_GA_VERSION=`cat $source_path/VERSION`
4608 fi
4609
4610 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4611
4612 case "$cpu" in
4613 x86_64)
4614 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4615 ;;
4616 i386)
4617 QEMU_GA_MSI_ARCH="-D Arch=32"
4618 ;;
4619 *)
4620 error_exit "CPU $cpu not supported for building installation package"
4621 ;;
4622 esac
4623fi
4624
Paolo Bonzinica35f782010-05-26 16:08:29 +02004625# Mac OS X ships with a broken assembler
4626roms=
4627if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4628 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4629 "$softmmu" = yes ; then
4630 roms="optionrom"
4631fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004632if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004633 roms="$roms spapr-rtas"
4634fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004635
Christian Borntraeger9933c302013-04-23 01:23:03 +00004636if test "$cpu" = "s390x" ; then
4637 roms="$roms s390-ccw"
4638fi
4639
Richard Henderson964c6fa2013-06-21 19:10:16 -07004640# Probe for the need for relocating the user-only binary.
4641if test "$pie" = "no" ; then
4642 textseg_addr=
4643 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004644 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4645 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004646 textseg_addr=0x60000000
4647 ;;
4648 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004649 # A 256M aligned address, high in the address space, with enough
4650 # room for the code_gen_buffer above it before the stack.
4651 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004652 ;;
4653 esac
4654 if [ -n "$textseg_addr" ]; then
4655 cat > $TMPC <<EOF
4656 int main(void) { return 0; }
4657EOF
4658 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4659 if ! compile_prog "" "$textseg_ldflags"; then
4660 # In case ld does not support -Ttext-segment, edit the default linker
4661 # script via sed to set the .text start addr. This is needed on FreeBSD
4662 # at least.
4663 $ld --verbose | sed \
4664 -e '1,/==================================================/d' \
4665 -e '/==================================================/,$d' \
4666 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4667 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4668 textseg_ldflags="-Wl,-T../config-host.ld"
4669 fi
4670 fi
4671fi
4672
Jan Kiszka50e12062014-10-02 10:03:55 +02004673# prepend pixman and ftd flags after all config tests are done
4674QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4675libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004676
bellard43ce4df2003-06-09 19:53:12 +00004677echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004678echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004679echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004680echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004681echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004682echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004683echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004684echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004685if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004686echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004687echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004688echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004689else
4690echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004691echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004692fi
bellard5a671352003-10-01 00:13:48 +00004693echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004694echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004695echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004696echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004697echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004698echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004699echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004700echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004701echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004702echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004703echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004704echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004705if test "$slirp" = "yes" ; then
4706 echo "smbd $smbd"
4707fi
Fam Zheng17969262014-02-10 14:48:56 +08004708echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004709echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004710echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004711echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004712echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004713echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004714echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004715echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004716echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004717echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004718if test "$darwin" = "yes" ; then
4719 echo "Cocoa support $cocoa"
4720fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004721echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004722echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004723echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004724echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004725echo "GNUTLS support $gnutls"
4726echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004727echo "libgcrypt $gcrypt"
4728echo "nettle $nettle ${nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004729echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004730echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004731echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004732echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004733echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004734echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004735echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004736echo "Block whitelist (rw) $block_drv_rw_whitelist"
4737echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304738echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004739echo "VNC support $vnc"
4740if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004741 echo "VNC SASL support $vnc_sasl"
4742 echo "VNC JPEG support $vnc_jpeg"
4743 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004744fi
blueswir131422552007-04-16 18:27:06 +00004745if test -n "$sparc_cpu"; then
4746 echo "Target Sparc Arch $sparc_cpu"
4747fi
aliguorie37630c2009-04-22 15:19:10 +00004748echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004749if test "$xen" = "yes" ; then
4750 echo "xen ctrl version $xen_ctrl_version"
4751fi
aurel322e4d9fb2008-04-08 06:01:02 +00004752echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004753echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004754echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004755echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004756echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004757echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004758echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004759echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004760echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004761echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004762echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004763echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004764echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004765echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004766echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004767echo "madvise $madvise"
4768echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004769echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004770echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004771echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004772echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004773echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004774echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004775if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004776echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004777fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004778if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004779echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004780else
4781echo "spice support $spice"
4782fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004783echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004784echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004785echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004786echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004787echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004788echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004789echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004790echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004791echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004792echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004793echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004794echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004795echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004796echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004797echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304798echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004799echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004800echo "gcov $gcov_tool"
4801echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004802echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004803echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004804echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004805echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004806echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004807echo "lzo support $lzo"
4808echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004809echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004810echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004811echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004812echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004813
Stefan Weil1ba16962011-07-29 22:40:45 +02004814if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004815echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004816fi
bellard97a847b2003-08-10 21:36:04 +00004817
Juan Quintela98ec69a2009-07-16 18:34:18 +02004818config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004819
Stefan Weildbd99ae2013-01-01 18:33:44 +01004820echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4821
Juan Quintela98ec69a2009-07-16 18:34:18 +02004822echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004823echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004824
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004825echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004826echo "prefix=$prefix" >> $config_host_mak
4827echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004828echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004829echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004830echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004831echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004832echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004833echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004834echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4835echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004836echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004837if test "$mingw32" = "no" ; then
4838 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4839fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004840echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004841echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4842echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004843echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004844echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004845
Juan Quintela98ec69a2009-07-16 18:34:18 +02004846echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004847
aurel32f8393942009-04-13 18:45:38 +00004848if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004849 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004850fi
aliguori1625af82009-04-05 17:41:02 +00004851if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004852 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004853fi
bellard7d132992003-03-06 23:23:54 +00004854if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004855 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004856fi
bellard67b915a2004-03-31 23:37:16 +00004857if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004858 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004859 rc_version=`cat $source_path/VERSION`
4860 version_major=${rc_version%%.*}
4861 rc_version=${rc_version#*.}
4862 version_minor=${rc_version%%.*}
4863 rc_version=${rc_version#*.}
4864 version_subminor=${rc_version%%.*}
4865 version_micro=0
4866 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4867 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004868 if test "$guest_agent_with_vss" = "yes" ; then
4869 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004870 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004871 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4872 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004873 if test "$guest_agent_ntddscsi" = "yes" ; then
4874 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4875 fi
Michael Roth1a349042015-08-26 11:14:31 -05004876 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004877 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4878 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4879 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4880 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4881 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4882 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4883 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4884 fi
pbrook210fa552007-02-27 21:04:49 +00004885else
Juan Quintela35f4df22009-07-27 16:13:07 +02004886 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004887fi
blueswir1128ab2f2008-08-15 18:33:42 +00004888
Mark McLoughlindffcb712009-10-22 17:49:11 +01004889if test "$linux" = "yes" ; then
4890 echo "CONFIG_LINUX=y" >> $config_host_mak
4891fi
4892
bellard83fb7ad2004-07-05 21:25:26 +00004893if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004894 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004895fi
malcb29fe3e2008-11-18 01:42:22 +00004896
4897if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004898 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004899fi
4900
bellardec530c82006-04-25 22:36:06 +00004901if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004902 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004903 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004904 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004905 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004906 fi
bellardec530c82006-04-25 22:36:06 +00004907fi
Andreas Färber179cf402010-09-20 00:50:43 +02004908if test "$haiku" = "yes" ; then
4909 echo "CONFIG_HAIKU=y" >> $config_host_mak
4910fi
bellard97a847b2003-08-10 21:36:04 +00004911if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004912 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004913fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004914if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004915 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004916fi
bellardc20709a2004-04-21 23:27:19 +00004917if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004918 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004919 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004920fi
ths8a16d272008-07-19 09:56:24 +00004921if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004922 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004923fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004924if test "$netmap" = "yes" ; then
4925 echo "CONFIG_NETMAP=y" >> $config_host_mak
4926fi
Gonglei015a33b2014-07-01 20:58:08 +08004927if test "$l2tpv3" = "yes" ; then
4928 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4929fi
Corey Bryant47e98652012-01-26 09:42:26 -05004930if test "$cap_ng" = "yes" ; then
4931 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4932fi
Juan Quintela2358a492009-07-27 16:13:25 +02004933echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004934for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004935 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004936 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004937done
Juan Quintela67f86e82009-08-03 14:46:59 +02004938if test "$audio_pt_int" = "yes" ; then
4939 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4940fi
malcd5631632009-10-10 01:13:41 +04004941if test "$audio_win_int" = "yes" ; then
4942 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4943fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004944echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4945echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004946if test "$vnc" = "yes" ; then
4947 echo "CONFIG_VNC=y" >> $config_host_mak
4948fi
aliguori2f9606b2009-03-06 20:27:28 +00004949if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004950 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004951fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004952if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004953 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004954fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004955if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004956 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004957fi
aliguori76655d62009-03-06 20:27:37 +00004958if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004959 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004960fi
Stefan Weilee682d22009-10-01 20:10:37 +02004961if test "$uuid" = "yes" ; then
4962 echo "CONFIG_UUID=y" >> $config_host_mak
4963fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004964if test "$xfs" = "yes" ; then
4965 echo "CONFIG_XFS=y" >> $config_host_mak
4966fi
pbrookb1a550a2006-04-16 13:28:56 +00004967qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004968echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004969echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004970echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004971echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004972if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004973 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004974fi
Fam Zheng17969262014-02-10 14:48:56 +08004975if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004976 # $shacmd can generate a hash started with digit, which the compiler doesn't
4977 # like as an symbol. So prefix it with an underscore
4978 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004979 echo "CONFIG_MODULES=y" >> $config_host_mak
4980fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004981if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004982 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004983 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004984 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004985fi
4986if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004987 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004988fi
4989if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004990 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004991fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004992if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004993 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004994fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004995if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004996 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004997fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004998if test "$accept4" = "yes" ; then
4999 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5000fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305001if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005002 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305003fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005004if test "$eventfd" = "yes" ; then
5005 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5006fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005007if test "$memfd" = "yes" ; then
5008 echo "CONFIG_MEMFD=y" >> $config_host_mak
5009fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005010if test "$fallocate" = "yes" ; then
5011 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5012fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005013if test "$fallocate_punch_hole" = "yes" ; then
5014 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5015fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005016if test "$fallocate_zero_range" = "yes" ; then
5017 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5018fi
Kevin Wolfed911432014-09-29 17:12:59 +02005019if test "$posix_fallocate" = "yes" ; then
5020 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5021fi
Peter Maydellc727f472011-01-06 11:05:10 +00005022if test "$sync_file_range" = "yes" ; then
5023 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5024fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005025if test "$fiemap" = "yes" ; then
5026 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5027fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005028if test "$dup3" = "yes" ; then
5029 echo "CONFIG_DUP3=y" >> $config_host_mak
5030fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005031if test "$ppoll" = "yes" ; then
5032 echo "CONFIG_PPOLL=y" >> $config_host_mak
5033fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005034if test "$prctl_pr_set_timerslack" = "yes" ; then
5035 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5036fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005037if test "$epoll" = "yes" ; then
5038 echo "CONFIG_EPOLL=y" >> $config_host_mak
5039fi
5040if test "$epoll_create1" = "yes" ; then
5041 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5042fi
5043if test "$epoll_pwait" = "yes" ; then
5044 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5045fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005046if test "$sendfile" = "yes" ; then
5047 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5048fi
Riku Voipio51834342014-06-22 11:25:42 +01005049if test "$timerfd" = "yes" ; then
5050 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5051fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005052if test "$setns" = "yes" ; then
5053 echo "CONFIG_SETNS=y" >> $config_host_mak
5054fi
aurel323b3f24a2009-04-15 16:12:13 +00005055if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005056 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005057fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005058if test "$inotify1" = "yes" ; then
5059 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5060fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005061if test "$byteswap_h" = "yes" ; then
5062 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5063fi
5064if test "$bswap_h" = "yes" ; then
5065 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5066fi
Alexander Graf769ce762009-05-11 17:41:42 +02005067if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005068 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005069 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005070 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005071fi
aurel322e4d9fb2008-04-08 06:01:02 +00005072if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005073 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005074fi
balrogfb599c92008-09-28 23:49:55 +00005075if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005076 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005077 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005078fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005079if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005080 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5081fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005082echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005083if test "$gtk" = "yes" ; then
5084 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005085 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005086 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005087 if test "$gtk_gl" = "yes" ; then
5088 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5089 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005090fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005091if test "$gnutls" = "yes" ; then
5092 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5093fi
5094if test "$gnutls_hash" = "yes" ; then
5095 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5096fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005097if test "$gcrypt" = "yes" ; then
5098 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005099fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005100if test "$nettle" = "yes" ; then
5101 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005102 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005103fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005104if test "$tasn1" = "yes" ; then
5105 echo "CONFIG_TASN1=y" >> $config_host_mak
5106fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005107if test "$vte" = "yes" ; then
5108 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005109 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5110fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005111if test "$virglrenderer" = "yes" ; then
5112 echo "CONFIG_VIRGL=y" >> $config_host_mak
5113 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5114 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5115fi
aliguorie37630c2009-04-22 15:19:10 +00005116if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005117 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005118 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00005119fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005120if test "$linux_aio" = "yes" ; then
5121 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5122fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005123if test "$attr" = "yes" ; then
5124 echo "CONFIG_ATTR=y" >> $config_host_mak
5125fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005126if test "$libattr" = "yes" ; then
5127 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5128fi
Meador Inge983eef52012-02-24 14:00:42 +05305129if test "$virtfs" = "yes" ; then
5130 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005131fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005132if test "$vhost_scsi" = "yes" ; then
5133 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5134fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005135if test "$vhost_net" = "yes" ; then
5136 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5137fi
ths77755342008-11-27 15:45:16 +00005138if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005139 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005140fi
aliguoribf9298b2008-12-05 20:05:26 +00005141if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005142 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005143fi
aliguoriceb42de2009-04-07 18:43:28 +00005144if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005145 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005146fi
aurel32f652e6a2008-12-16 10:43:48 +00005147if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005148 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005149fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005150if test "$signalfd" = "yes" ; then
5151 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5152fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005153if test "$tcg_interpreter" = "yes" ; then
5154 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5155fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005156if test "$fdatasync" = "yes" ; then
5157 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5158fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005159if test "$madvise" = "yes" ; then
5160 echo "CONFIG_MADVISE=y" >> $config_host_mak
5161fi
5162if test "$posix_madvise" = "yes" ; then
5163 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5164fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005165if test "$sigev_thread_id" = "yes" ; then
5166 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5167fi
bellard97a847b2003-08-10 21:36:04 +00005168
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005169if test "$spice" = "yes" ; then
5170 echo "CONFIG_SPICE=y" >> $config_host_mak
5171fi
5172
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005173if test "$smartcard" = "yes" ; then
5174 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005175fi
5176
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005177if test "$libusb" = "yes" ; then
5178 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5179fi
5180
Hans de Goede69354a82011-07-19 11:04:10 +02005181if test "$usb_redir" = "yes" ; then
5182 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5183fi
5184
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005185if test "$opengl" = "yes" ; then
5186 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005187 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005188 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005189fi
5190
qiaonuohan607dacd2014-02-18 14:11:30 +08005191if test "$lzo" = "yes" ; then
5192 echo "CONFIG_LZO=y" >> $config_host_mak
5193fi
5194
5195if test "$snappy" = "yes" ; then
5196 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5197fi
5198
Peter Wu6b383c02015-01-06 18:48:14 +01005199if test "$bzip2" = "yes" ; then
5200 echo "CONFIG_BZIP2=y" >> $config_host_mak
5201 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5202fi
5203
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005204if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005205 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005206 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5207 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005208fi
5209
Peter Lieven6542aa92014-02-03 10:26:13 +01005210if test "$libnfs" = "yes" ; then
5211 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5212fi
5213
Eduardo Otubof7945732012-08-14 18:44:05 -03005214if test "$seccomp" = "yes"; then
5215 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5216fi
5217
bellard83fb7ad2004-07-05 21:25:26 +00005218# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005219if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005220 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005221fi
5222
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005223if test "$zero_malloc" = "yes" ; then
5224 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5225fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005226if test "$localtime_r" = "yes" ; then
5227 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5228fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005229if test "$qom_cast_debug" = "yes" ; then
5230 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5231fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005232if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005233 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005234 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5235 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005236fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005237
Peter Maydell7c2acc72013-04-08 12:11:27 +01005238echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005239if test "$coroutine_pool" = "yes" ; then
5240 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5241else
5242 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5243fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305244
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305245if test "$open_by_handle_at" = "yes" ; then
5246 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5247fi
5248
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305249if test "$linux_magic_h" = "yes" ; then
5250 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5251fi
5252
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005253if test "$pragma_diagnostic_available" = "yes" ; then
5254 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005255fi
5256
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005257if test "$valgrind_h" = "yes" ; then
5258 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5259fi
5260
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005261if test "$has_environ" = "yes" ; then
5262 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5263fi
5264
Richard Henderson76a347e2012-12-28 14:17:02 -08005265if test "$cpuid_h" = "yes" ; then
5266 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5267fi
5268
Richard Hendersonf5401662013-02-16 12:46:59 -08005269if test "$int128" = "yes" ; then
5270 echo "CONFIG_INT128=y" >> $config_host_mak
5271fi
5272
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005273if test "$getauxval" = "yes" ; then
5274 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5275fi
5276
Bharata B Raoeb100392012-09-24 14:42:45 +05305277if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005278 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005279 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5280 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305281fi
5282
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305283if test "$glusterfs_discard" = "yes" ; then
5284 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5285fi
5286
Bharata B Rao7c815372013-12-21 14:51:25 +05305287if test "$glusterfs_zerofill" = "yes" ; then
5288 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5289fi
5290
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005291if test "$archipelago" = "yes" ; then
5292 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5293 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5294fi
5295
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005296if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005297 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005298 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5299 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005300fi
5301
Jeff Cody4f18b782013-10-30 10:44:39 -04005302if test "$vhdx" = "yes" ; then
5303 echo "CONFIG_VHDX=y" >> $config_host_mak
5304fi
5305
blueswir168063642008-11-22 21:03:55 +00005306# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005307if test "$libusb" = "yes"; then
5308 echo "HOST_USB=libusb legacy" >> $config_host_mak
5309else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005310 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005311fi
blueswir168063642008-11-22 21:03:55 +00005312
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005313# TPM passthrough support?
5314if test "$tpm" = "yes"; then
5315 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5316 if test "$tpm_passthrough" = "yes"; then
5317 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5318 fi
5319fi
5320
Lluís Vilanova5b808272014-05-27 15:02:14 +02005321echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5322if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005323 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305324fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005325if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005326 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5327 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005328 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005329fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005330if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005331 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5332fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005333if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005334 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5335fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005336if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005337 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5338 if test "$trace_backend_stap" = "yes" ; then
5339 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5340 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005341fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005342if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005343 if test "$linux" = "yes" ; then
5344 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005345 else
Stewart Smith21684af2014-01-24 12:39:10 +11005346 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005347 fi
5348fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005349echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5350
Michael R. Hines2da776d2013-07-22 10:01:54 -04005351if test "$rdma" = "yes" ; then
5352 echo "CONFIG_RDMA=y" >> $config_host_mak
5353fi
5354
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005355# Hold two types of flag:
5356# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5357# a thread we have a handle to
5358# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5359# platform
5360if test "$pthread_setname_np" = "yes" ; then
5361 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5362 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5363fi
5364
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005365if test "$tcg_interpreter" = "yes"; then
5366 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5367elif test "$ARCH" = "sparc64" ; then
5368 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5369elif test "$ARCH" = "s390x" ; then
5370 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005371elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005372 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005373elif test "$ARCH" = "ppc64" ; then
5374 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005375else
5376 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5377fi
5378QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5379
Juan Quintela98ec69a2009-07-16 18:34:18 +02005380echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005381echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005382echo "MAKE=$make" >> $config_host_mak
5383echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005384echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5385echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005386if test -n "$libtool"; then
5387 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5388 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5389else
5390 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5391 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5392fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005393echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005394echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005395if $iasl -h > /dev/null 2>&1; then
5396 echo "IASL=$iasl" >> $config_host_mak
5397fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005398echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005399echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005400echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005401echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005402echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005403echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005404echo "AS=$as" >> $config_host_mak
5405echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005406echo "OBJCOPY=$objcopy" >> $config_host_mak
5407echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005408echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005409echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005410echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005411echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005412echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005413echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005414echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005415if test "$sparse" = "yes" ; then
5416 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005417 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005418 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005419 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5420 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5421fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005422if test "$cross_prefix" != ""; then
5423 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5424else
5425 echo "AUTOCONF_HOST := " >> $config_host_mak
5426fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005427echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005428echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005429echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005430echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005431echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005432echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005433echo "DSOSUF=$DSOSUF" >> $config_host_mak
5434echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005435echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005436echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5437echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005438echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005439echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005440if test "$gcov" = "yes" ; then
5441 echo "CONFIG_GCOV=y" >> $config_host_mak
5442 echo "GCOV=$gcov_tool" >> $config_host_mak
5443fi
Juan Quintela804edf22009-07-27 16:12:49 +02005444
Peter Maydell6efd7512011-11-30 11:59:04 +00005445# use included Linux headers
5446if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005447 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005448 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005449 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005450 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005451 ;;
5452 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005453 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005454 ;;
5455 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005456 linux_arch=s390
5457 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005458 aarch64)
5459 linux_arch=arm64
5460 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005461 mips64)
5462 linux_arch=mips
5463 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005464 *)
5465 # For most CPUs the kernel architecture name and QEMU CPU name match.
5466 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005467 ;;
5468 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005469 # For non-KVM architectures we will not have asm headers
5470 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5471 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5472 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005473fi
5474
bellard1d14ffa2005-10-30 18:58:22 +00005475for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005476target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005477config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005478target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005479target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005480
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005481case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005482 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 +02005483 target_bigendian=yes
5484 ;;
5485esac
bellard97a847b2003-08-10 21:36:04 +00005486target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005487target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005488target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005489target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005490case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005491 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005492 target_softmmu="yes"
5493 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005494 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005495 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005496 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005497 fi
pbrook9e407a82007-05-26 16:38:53 +00005498 target_user_only="yes"
5499 target_linux_user="yes"
5500 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005501 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005502 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005503 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005504 fi
blueswir184778502008-10-26 20:33:16 +00005505 target_user_only="yes"
5506 target_bsd_user="yes"
5507 ;;
pbrook9e407a82007-05-26 16:38:53 +00005508 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005509 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005510 exit 1
5511 ;;
5512esac
ths831b7822007-01-18 20:06:33 +00005513
bellard97a847b2003-08-10 21:36:04 +00005514mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005515echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005516
pbrooke5fe0c52006-06-11 13:32:59 +00005517bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005518interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005519gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005520
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005521TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005522TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005523TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005524
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005525case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005526 i386)
aurel322408a522008-04-20 20:19:44 +00005527 ;;
5528 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005529 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005530 ;;
5531 alpha)
aurel322408a522008-04-20 20:19:44 +00005532 ;;
5533 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005534 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005535 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005536 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005537 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005538 aarch64)
5539 TARGET_BASE_ARCH=arm
5540 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005541 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 +01005542 ;;
aurel322408a522008-04-20 20:19:44 +00005543 cris)
aurel322408a522008-04-20 20:19:44 +00005544 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005545 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005546 ;;
aurel322408a522008-04-20 20:19:44 +00005547 m68k)
aurel322408a522008-04-20 20:19:44 +00005548 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005549 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005550 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005551 microblaze|microblazeel)
5552 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005553 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005554 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005555 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005556 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005557 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005558 ;;
5559 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005560 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005561 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005562 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005563 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005564 ;;
5565 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005566 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005567 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005568 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005569 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005570 moxie)
5571 ;;
Jia Liue67db062012-07-20 15:50:39 +08005572 or32)
5573 TARGET_ARCH=openrisc
5574 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005575 ;;
aurel322408a522008-04-20 20:19:44 +00005576 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005577 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005578 ;;
5579 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005580 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005581 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005582 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005583 ;;
5584 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005585 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005586 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005587 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005588 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005589 ppc64le)
5590 TARGET_ARCH=ppc64
5591 TARGET_BASE_ARCH=ppc
5592 TARGET_ABI_DIR=ppc
5593 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5594 ;;
aurel322408a522008-04-20 20:19:44 +00005595 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005596 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005597 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005598 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005599 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005600 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005601 ;;
5602 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005603 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005604 bflt="yes"
5605 ;;
5606 sparc)
aurel322408a522008-04-20 20:19:44 +00005607 ;;
5608 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005609 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005610 ;;
5611 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005612 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005613 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005614 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005615 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005616 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005617 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005618 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 +01005619 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005620 tilegx)
5621 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005622 tricore)
5623 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005624 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005625 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005626 xtensa|xtensaeb)
5627 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005628 ;;
aurel322408a522008-04-20 20:19:44 +00005629 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005630 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005631 ;;
5632esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005633# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5634if [ "$TARGET_BASE_ARCH" = "" ]; then
5635 TARGET_BASE_ARCH=$TARGET_ARCH
5636fi
5637
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005638symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5639
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005640upper() {
5641 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5642}
5643
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005644target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005645echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005646echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005647echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005648if [ "$TARGET_ABI_DIR" = "" ]; then
5649 TARGET_ABI_DIR=$TARGET_ARCH
5650fi
Juan Quintela25be2102009-10-07 02:41:00 +02005651echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005652if [ "$HOST_VARIANT_DIR" != "" ]; then
5653 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5654fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005655case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005656 i386|x86_64)
5657 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005658 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005659 if test "$xen_pci_passthrough" = yes; then
5660 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5661 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005662 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005663 ;;
5664 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005665esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005666case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005667 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005668 # Make sure the target and host cpus are compatible
5669 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005670 \( "$target_name" = "$cpu" -o \
5671 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5672 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5673 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5674 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005675 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005676 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005677 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5678 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5679 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005680 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005681 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005682 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5683 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005684 fi
5685esac
bellardde83cd02003-06-15 20:25:43 +00005686if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005687 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005688fi
5689if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005690 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005691fi
bellard997344f2003-10-27 21:10:39 +00005692if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005693 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005694 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005695fi
ths831b7822007-01-18 20:06:33 +00005696if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005697 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005698fi
pbrook56aebc82008-10-11 17:55:29 +00005699list=""
5700if test ! -z "$gdb_xml_files" ; then
5701 for x in $gdb_xml_files; do
5702 list="$list $source_path/gdb-xml/$x"
5703 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005704 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005705fi
bellardde83cd02003-06-15 20:25:43 +00005706
pbrooke5fe0c52006-06-11 13:32:59 +00005707if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005708 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005709fi
blueswir184778502008-10-26 20:33:16 +00005710if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005711 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005712fi
bellard5b0753e2005-03-01 21:37:28 +00005713
Juan Quintela4afddb52009-08-03 14:46:45 +02005714# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005715
Juan Quintela4afddb52009-08-03 14:46:45 +02005716cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005717ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005718
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005719disas_config() {
5720 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5721 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5722}
5723
Juan Quintela64656022009-08-03 14:46:53 +02005724for i in $ARCH $TARGET_BASE_ARCH ; do
5725 case "$i" in
5726 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005727 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005728 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005729 aarch64)
5730 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005731 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005732 fi
5733 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005734 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005735 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005736 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005737 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005738 fi
Juan Quintela64656022009-08-03 14:46:53 +02005739 ;;
5740 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005741 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005742 ;;
5743 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005744 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005745 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005746 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005747 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005748 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005749 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005750 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005751 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005752 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005753 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005754 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005755 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005756 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005757 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005758 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005759 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005760 ;;
5761 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005762 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005763 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005764 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005765 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005766 ;;
Jia Liue67db062012-07-20 15:50:39 +08005767 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005768 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005769 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005770 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005771 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005772 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005773 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005774 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005775 ;;
5776 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005777 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005778 ;;
5779 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005780 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005781 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005782 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005783 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005784 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005785 esac
5786done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005787if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005788 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005789fi
Juan Quintela64656022009-08-03 14:46:53 +02005790
Juan Quintela6ee71262009-08-03 14:46:47 +02005791case "$ARCH" in
5792alpha)
5793 # Ensure there's only a single GP
5794 cflags="-msmall-data $cflags"
5795;;
5796esac
5797
Juan Quintelad02c1db2009-08-03 14:46:50 +02005798if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005799 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005800 if test "$target_linux_user" = "yes" ; then
5801 cflags="-p $cflags"
5802 ldflags="-p $ldflags"
5803 fi
5804 if test "$target_softmmu" = "yes" ; then
5805 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005806 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005807 fi
5808fi
5809
Juan Quintela9b8e1112009-08-03 14:46:46 +02005810if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005811 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005812fi
Juan Quintelafa282482009-07-22 22:37:39 +02005813
Juan Quintela25be2102009-10-07 02:41:00 +02005814echo "LDFLAGS+=$ldflags" >> $config_target_mak
5815echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005816
bellard97a847b2003-08-10 21:36:04 +00005817done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005818
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005819if [ "$pixman" = "internal" ]; then
5820 echo "config-host.h: subdir-pixman" >> $config_host_mak
5821fi
5822
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005823if [ "$dtc_internal" = "yes" ]; then
5824 echo "config-host.h: subdir-dtc" >> $config_host_mak
5825fi
5826
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005827if test "$numa" = "yes"; then
5828 echo "CONFIG_NUMA=y" >> $config_host_mak
5829fi
5830
John Snowfd0e6052015-03-25 18:57:39 -04005831if test "$ccache_cpp2" = "yes"; then
5832 echo "export CCACHE_CPP2=y" >> $config_host_mak
5833fi
5834
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005835# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005836DIRS="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 +04005837DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005838DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005839DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005840DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005841FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5842FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005843FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005844FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005845FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005846FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005847FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005848FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005849for bios_file in \
5850 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005851 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005852 $source_path/pc-bios/*.rom \
5853 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005854 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005855 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005856 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005857 $source_path/pc-bios/palcode-*
5858do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005859 FILES="$FILES pc-bios/`basename $bios_file`"
5860done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005861for test_file in `find $source_path/tests/acpi-test-data -type f`
5862do
5863 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5864done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005865mkdir -p $DIRS
5866for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005867 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005868 symlink "$source_path/$f" "$f"
5869 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005870done
Paul Brook1ad21342009-05-19 16:17:58 +01005871
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005872# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005873for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005874 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005875 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005876 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005877 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005878 echo "CC=$cc" >> $config_mak
5879 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005880 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005881 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005882 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005883 echo "LD=$ld" >> $config_mak
5884done
5885
Max Reitz76c75602014-05-24 23:24:56 +02005886# set up qemu-iotests in this build directory
5887iotests_common_env="tests/qemu-iotests/common.env"
5888iotests_check="tests/qemu-iotests/check"
5889
5890echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5891echo >> "$iotests_common_env"
5892echo "export PYTHON='$python'" >> "$iotests_common_env"
5893
5894if [ ! -e "$iotests_check" ]; then
5895 symlink "$source_path/$iotests_check" "$iotests_check"
5896fi
5897
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005898# Save the configure command line for later reuse.
5899cat <<EOD >config.status
5900#!/bin/sh
5901# Generated by configure.
5902# Run this file to recreate the current configuration.
5903# Compiler output produced by configure, useful for debugging
5904# configure, is in config.log if it exists.
5905EOD
5906printf "exec" >>config.status
5907printf " '%s'" "$0" "$@" >>config.status
5908echo >>config.status
5909chmod +x config.status
5910
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005911rm -r "$TMPDIR1"