blob: a1ac1c769922782cae57aed1cc92e0ae05d08ad5 [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
John Snow5e4dfd32015-10-28 13:56:40 -040011# Don't allow CCACHE, if present, to use cached results of compile tests!
12export CCACHE_RECACHE=yes
13
Peter Maydell8cd05ab2014-05-23 17:07:24 +010014# Temporary directory used for files created while
15# configure runs. Since it is in the build directory
16# we can safely blow away any previous version of it
17# (and we need not jump through hoops to try to delete
18# it when configure exits.)
19TMPDIR1="config-temp"
20rm -rf "${TMPDIR1}"
21mkdir -p "${TMPDIR1}"
22if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
bellard7d132992003-03-06 23:23:54 +000025fi
26
Peter Maydell8cd05ab2014-05-23 17:07:24 +010027TMPB="qemu-conf"
28TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050029TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000030TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Don Slutz66518bf2014-01-02 21:12:46 -050031TMPL="${TMPDIR1}/${TMPB}.lo"
32TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010033TMPE="${TMPDIR1}/${TMPB}.exe"
bellard7d132992003-03-06 23:23:54 +000034
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020035rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000036
Peter Maydellb48e3612011-11-23 17:26:44 +000037# Print a helpful header at the top of config.log
38echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000039printf "# Configured with:" >> config.log
40printf " '%s'" "$0" "$@" >> config.log
41echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000042echo "#" >> config.log
43
Peter Maydell76ad07a2013-04-08 12:11:26 +010044error_exit() {
45 echo
46 echo "ERROR: $1"
47 while test -n "$2"; do
48 echo " $2"
49 shift
50 done
51 echo
52 exit 1
53}
54
Peter Maydell9c83ffd2014-02-25 18:27:49 +000055do_compiler() {
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
58 local compiler="$1"
59 shift
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010062 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
67 return 0
68 fi
69 # Don't bother rerunning the compile if we were already using -Werror
70 case "$*" in
71 *-Werror*)
72 return 0
73 ;;
74 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000075 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010077 error_exit "configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010081}
82
Peter Maydell9c83ffd2014-02-25 18:27:49 +000083do_cc() {
84 do_compiler "$cc" "$@"
85}
86
87do_cxx() {
88 do_compiler "$cxx" "$@"
89}
90
91update_cxxflags() {
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
95 QEMU_CXXFLAGS=
96 for arg in $QEMU_CFLAGS; do
97 case $arg in
98 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
99 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
100 ;;
101 *)
102 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
103 ;;
104 esac
105 done
106}
107
Juan Quintela52166aa2009-08-03 14:46:03 +0200108compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400109 local_cflags="$1"
110 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200111}
112
113compile_prog() {
114 local_cflags="$1"
115 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100116 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200117}
118
Don Slutz66518bf2014-01-02 21:12:46 -0500119do_libtool() {
120 local mode=$1
121 shift
122 # Run the compiler, capturing its output to the log.
123 echo $libtool $mode --tag=CC $cc "$@" >> config.log
124 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
125 # Test passed. If this is an --enable-werror build, rerun
126 # the test with -Werror and bail out if it fails. This
127 # makes warning-generating-errors in configure test code
128 # obvious to developers.
129 if test "$werror" != "yes"; then
130 return 0
131 fi
132 # Don't bother rerunning the compile if we were already using -Werror
133 case "$*" in
134 *-Werror*)
135 return 0
136 ;;
137 esac
138 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
139 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
140 error_exit "configure test passed without -Werror but failed with -Werror." \
141 "This is probably a bug in the configure script. The failing command" \
142 "will be at the bottom of config.log." \
143 "You can run configure with --disable-werror to bypass this check."
144}
145
146libtool_prog() {
147 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
148 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
149}
150
Paolo Bonzini11568d62010-12-23 11:43:58 +0100151# symbolically link $1 to $2. Portable version of "ln -sf".
152symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100153 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800154 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100155 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100156}
157
Loïc Minier0dba6192010-01-28 21:26:51 +0000158# check whether a command is available to this shell (may be either an
159# executable or a builtin)
160has() {
161 type "$1" >/dev/null 2>&1
162}
163
164# search for an executable in PATH
165path_of() {
166 local_command="$1"
167 local_ifs="$IFS"
168 local_dir=""
169
170 # pathname has a dir component?
171 if [ "${local_command#*/}" != "$local_command" ]; then
172 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
173 echo "$local_command"
174 return 0
175 fi
176 fi
177 if [ -z "$local_command" ]; then
178 return 1
179 fi
180
181 IFS=:
182 for local_dir in $PATH; do
183 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
184 echo "$local_dir/$local_command"
185 IFS="${local_ifs:-$(printf ' \t\n')}"
186 return 0
187 fi
188 done
189 # not found
190 IFS="${local_ifs:-$(printf ' \t\n')}"
191 return 1
192}
193
Lluís Vilanova5b808272014-05-27 15:02:14 +0200194have_backend () {
195 echo "$trace_backends" | grep "$1" >/dev/null
196}
197
bellard7d132992003-03-06 23:23:54 +0000198# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100199source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200200cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300201iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000202interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000203static="no"
bellard7d132992003-03-06 23:23:54 +0000204cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000205audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800206block_drv_rw_whitelist=""
207block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000208host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200209libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200210libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200211audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400212audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200213cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500214libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100215debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100216stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000217
Stefan Weilafb63eb2012-09-26 22:04:38 +0200218# Don't accept a target_list environment variable.
219unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100220
221# Default value for a variable defining feature "foo".
222# * foo="no" feature will only be used if --enable-foo arg is given
223# * foo="" feature will be searched for, and if found, will be used
224# unless --disable-foo is given
225# * foo="yes" this value will only be set by --enable-foo flag.
226# feature will searched for,
227# if not found, configure exits with error
228#
229# Always add --enable-foo and --disable-foo command line args.
230# Distributions want to ensure that several features are compiled in, and it
231# is impossible without a --enable-foo that exits if a feature is not found.
232
233bluez=""
234brlapi=""
235curl=""
236curses=""
237docs=""
238fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100239netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200240pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100241sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000242sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530243virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100244vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100245sparse="no"
246uuid=""
247vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100248vnc_sasl=""
249vnc_jpeg=""
250vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100251xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000252xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000253xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100254linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500255cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100256attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200257libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100258xfs=""
259
Bradd41a75a2011-07-26 23:11:26 -0400260vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000261vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400262kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400263rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100264gprof="no"
265debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100266debug="no"
John Snowb553a042015-11-03 15:43:42 -0500267fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100268strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200269tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100270bigendian="no"
271mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000272gcov="no"
273gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100274EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800275DSOSUF=".so"
276LDFLAGS_SHARED="-shared"
277modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100278prefix="/usr/local"
279mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300280datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300281qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100282bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300283libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400284libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200285includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100286sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300287local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100288confsuffix="/qemu"
289slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100290oss_lib=""
291bsd="no"
292linux="no"
293solaris="no"
294profiler="no"
295cocoa="no"
296softmmu="yes"
297linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100298bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100299aix="no"
300blobs="yes"
301pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200302pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100303zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200304qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200305trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100306trace_file="trace"
307spice=""
308rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200309smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100310libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200311usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100312opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300313zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200314lzo=""
315snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100316bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400317guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400318guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500319guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300320guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400321vss_win32_sdk=""
322win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100323want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100324libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100325libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100326coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200327coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300328seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530329glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530330glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530331glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100332archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600333gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200334gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200335gtk_gl="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100336gnutls=""
337gnutls_hash=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100338nettle=""
339gcrypt=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100340vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200341virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400342tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100343libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400344vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800345numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800346tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200347jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100348
aliguoriac0df512008-12-29 17:14:15 +0000349# parse CC options first
350for opt do
351 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
352 case "$opt" in
353 --cross-prefix=*) cross_prefix="$optarg"
354 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100355 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000356 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400357 --cxx=*) CXX="$optarg"
358 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100359 --source-path=*) source_path="$optarg"
360 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200361 --cpu=*) cpu="$optarg"
362 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100363 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100364 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200365 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100366 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100367 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200368 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100369 --enable-debug-info) debug_info="yes"
370 ;;
371 --disable-debug-info) debug_info="no"
372 ;;
aliguoriac0df512008-12-29 17:14:15 +0000373 esac
374done
aliguoriac0df512008-12-29 17:14:15 +0000375# OS specific
376# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100377# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000378
Peter Maydelle49d0212012-12-07 15:39:13 +0000379# Preferred compiler:
380# ${CC} (if set)
381# ${cross_prefix}gcc (if cross-prefix specified)
382# system compiler
383if test -z "${CC}${cross_prefix}"; then
384 cc="$host_cc"
385else
386 cc="${CC-${cross_prefix}gcc}"
387fi
388
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400389if test -z "${CXX}${cross_prefix}"; then
390 cxx="c++"
391else
392 cxx="${CXX-${cross_prefix}g++}"
393fi
394
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500395ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000396as="${AS-${cross_prefix}as}"
397cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500398objcopy="${OBJCOPY-${cross_prefix}objcopy}"
399ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400400libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200401nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500402strip="${STRIP-${cross_prefix}strip}"
403windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300404pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
405query_pkg_config() {
406 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
407}
408pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500409sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000410sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000411
Peter Maydell45d285a2013-10-21 21:03:06 +0100412# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
413ARFLAGS="${ARFLAGS-rv}"
414
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200415# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000416QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400417QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100418QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200419QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200420QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100421if test "$debug_info" = "yes"; then
422 CFLAGS="-g $CFLAGS"
423 LDFLAGS="-g $LDFLAGS"
424fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200425
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100426# make source path absolute
427source_path=`cd "$source_path"; pwd`
428
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300429# running configure in the source tree?
430# we know that's the case if configure is there.
431if test -f "./configure"; then
432 pwd_is_source_path="y"
433else
434 pwd_is_source_path="n"
435fi
436
aliguoriac0df512008-12-29 17:14:15 +0000437check_define() {
438cat > $TMPC <<EOF
439#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000440#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000441#endif
442int main(void) { return 0; }
443EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200444 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000445}
446
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200447check_include() {
448cat > $TMPC <<EOF
449#include <$1>
450int main(void) { return 0; }
451EOF
452 compile_object
453}
454
John Snow93b25862015-03-25 18:57:37 -0400455write_c_skeleton() {
456 cat > $TMPC <<EOF
457int main(void) { return 0; }
458EOF
459}
460
Peter Maydellbbea4052012-08-14 15:35:34 +0100461if check_define __linux__ ; then
462 targetos="Linux"
463elif check_define _WIN32 ; then
464 targetos='MINGW32'
465elif check_define __OpenBSD__ ; then
466 targetos='OpenBSD'
467elif check_define __sun__ ; then
468 targetos='SunOS'
469elif check_define __HAIKU__ ; then
470 targetos='Haiku'
471else
472 targetos=`uname -s`
473fi
474
475# Some host OSes need non-standard checks for which CPU to use.
476# Note that these checks are broken for cross-compilation: if you're
477# cross-compiling to one of these OSes then you'll need to specify
478# the correct CPU with the --cpu option.
479case $targetos in
480Darwin)
481 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
482 # run 64-bit userspace code.
483 # If the user didn't specify a CPU explicitly and the kernel says this is
484 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
485 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
486 cpu="x86_64"
487 fi
488 ;;
489SunOS)
490 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
491 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
492 cpu="x86_64"
493 fi
494esac
495
Juan Quintela2ff6b912009-08-03 14:45:55 +0200496if test ! -z "$cpu" ; then
497 # command line argument
498 :
499elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000500 cpu="i386"
501elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700502 if check_define __ILP32__ ; then
503 cpu="x32"
504 else
505 cpu="x86_64"
506 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000507elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000508 if check_define __arch64__ ; then
509 cpu="sparc64"
510 else
511 cpu="sparc"
512 fi
malcfdf7ed92009-01-14 18:39:52 +0000513elif check_define _ARCH_PPC ; then
514 if check_define _ARCH_PPC64 ; then
515 cpu="ppc64"
516 else
517 cpu="ppc"
518 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200519elif check_define __mips__ ; then
520 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200521elif check_define __ia64__ ; then
522 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200523elif check_define __s390__ ; then
524 if check_define __s390x__ ; then
525 cpu="s390x"
526 else
527 cpu="s390"
528 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100529elif check_define __arm__ ; then
530 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100531elif check_define __aarch64__ ; then
532 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400533elif check_define __hppa__ ; then
534 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000535else
malcfdf7ed92009-01-14 18:39:52 +0000536 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000537fi
538
Peter Maydell359bc952011-12-24 13:07:25 +0000539ARCH=
540# Normalise host CPU name and set ARCH.
541# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000542case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700543 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200544 cpu="$cpu"
545 ;;
bellard7d132992003-03-06 23:23:54 +0000546 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000547 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000548 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000549 x86_64|amd64)
550 cpu="x86_64"
551 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100552 armv*b|armv*l|arm)
553 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000554 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100555 aarch64)
556 cpu="aarch64"
557 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200558 mips*)
559 cpu="mips"
560 ;;
blueswir131422552007-04-16 18:27:06 +0000561 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000562 cpu="sparc"
563 ;;
bellard7d132992003-03-06 23:23:54 +0000564 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000565 # This will result in either an error or falling back to TCI later
566 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000567 ;;
568esac
Peter Maydell359bc952011-12-24 13:07:25 +0000569if test -z "$ARCH"; then
570 ARCH="$cpu"
571fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200572
bellard7d132992003-03-06 23:23:54 +0000573# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200574
Stacey Sonadfc3e92014-06-08 09:57:22 -0700575# host *BSD for user mode
576HOST_VARIANT_DIR=""
577
bellard7d132992003-03-06 23:23:54 +0000578case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000579CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200580 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200581 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200582 audio_possible_drivers="sdl"
583 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000584;;
bellard67b915a2004-03-31 23:37:16 +0000585MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200586 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200587 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200588 if check_include dsound.h; then
589 audio_drv_list="dsound"
590 else
591 audio_drv_list=""
592 fi
bellard67b915a2004-03-31 23:37:16 +0000593;;
ths5c40d2b2007-06-23 16:03:36 +0000594GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100595 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200596 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200597 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000598;;
bellard7d3505c2004-05-12 19:32:15 +0000599FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200600 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100601 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200603 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100604 # needed for kinfo_getvmmap(3) in libutil.h
605 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100606 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700607 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000608;;
blueswir1c5e97232009-03-07 20:06:23 +0000609DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200610 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100611 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200613 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700614 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000615;;
bellard7d3505c2004-05-12 19:32:15 +0000616NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200617 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100618 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200619 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200620 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200621 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700622 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000623;;
624OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200625 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100626 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400627 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200628 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700629 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000630;;
bellard83fb7ad2004-07-05 21:25:26 +0000631Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200632 bsd="yes"
633 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800634 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200635 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200636 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200637 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200638 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200639 cocoa="yes"
640 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200641 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200643 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100644 # Disable attempts to use ObjectiveC features in os/object.h since they
645 # won't work when we're compiling with gcc as a C compiler.
646 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700647 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000648;;
bellardec530c82006-04-25 22:36:06 +0000649SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200650 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100651 make="${MAKE-gmake}"
652 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000653 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400654 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200655 needs_libsunmath="no"
656 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200657 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
658 if test "$solarisrev" -le 9 ; then
659 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
660 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200661 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
662 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
663 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200664 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100665 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
666 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
667 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
668 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200669 fi
thsef18c882007-09-16 22:12:39 +0000670 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200671 fi
672 if test -f /usr/include/sys/soundcard.h ; then
673 audio_drv_list="oss"
674 fi
675 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000676# needed for CMSG_ macros in sys/socket.h
677 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
678# needed for TIOCWIN* defines in termios.h
679 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200680 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200681 solarisnetlibs="-lsocket -lnsl -lresolv"
682 LIBS="$solarisnetlibs $LIBS"
683 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000684;;
malcb29fe3e2008-11-18 01:42:22 +0000685AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200686 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100687 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000688;;
Andreas Färber179cf402010-09-20 00:50:43 +0200689Haiku)
690 haiku="yes"
691 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
692 LIBS="-lposix_error_mapper -lnetwork $LIBS"
693;;
bellard1d14ffa2005-10-30 18:58:22 +0000694*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200695 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200696 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200697 linux="yes"
698 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200699 kvm="yes"
700 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000701 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000702 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000703;;
bellard7d132992003-03-06 23:23:54 +0000704esac
705
bellard7d3505c2004-05-12 19:32:15 +0000706if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000707 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200708 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000709 fi
bellard7d3505c2004-05-12 19:32:15 +0000710fi
711
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100712: ${make=${MAKE-make}}
713: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100714: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400715: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100716
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100717# Default objcc to clang if available, otherwise use CC
718if has clang; then
719 objcc=clang
720else
721 objcc="$cc"
722fi
723
Juan Quintela3457a3f2009-08-03 14:46:07 +0200724if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200725 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800726 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200727 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100728 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
729 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100730 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400731 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100732 if compile_prog "" "-liberty" ; then
733 LIBS="-liberty $LIBS"
734 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200735 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200736 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300737 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300738 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200739 bindir="\${prefix}"
740 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200741 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200742 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200743 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200744fi
745
Anthony Liguori487fefd2009-06-11 13:28:25 -0500746werror=""
bellard85aa5182007-11-11 20:17:03 +0000747
bellard7d132992003-03-06 23:23:54 +0000748for opt do
pbrooka46e4032006-04-29 23:05:22 +0000749 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000750 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000751 --help|-h) show_help=yes
752 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400753 --version|-V) exec cat $source_path/VERSION
754 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000755 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000756 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000757 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000758 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100759 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000760 ;;
aliguoriac0df512008-12-29 17:14:15 +0000761 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000762 ;;
aliguoriac0df512008-12-29 17:14:15 +0000763 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000764 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000765 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000766 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400767 --cxx=*)
768 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200769 --iasl=*) iasl="$optarg"
770 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100771 --objcc=*) objcc="$optarg"
772 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000773 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000774 ;;
pbrook6a882642006-04-17 13:57:12 +0000775 --install=*) install="$optarg"
776 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000777 --python=*) python="$optarg"
778 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000779 --gcov=*) gcov_tool="$optarg"
780 ;;
Brade2d88302011-09-02 16:53:28 -0400781 --smbd=*) smbd="$optarg"
782 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200783 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000784 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200785 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000786 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100787 --enable-debug-info)
788 ;;
789 --disable-debug-info)
790 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800791 --enable-modules)
792 modules="yes"
793 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200794 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000795 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000796 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000797 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200798 --enable-trace-backends=*) trace_backends="$optarg"
799 ;;
800 # XXX: backwards compatibility
801 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100802 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100803 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100804 ;;
bellard7d132992003-03-06 23:23:54 +0000805 --enable-gprof) gprof="yes"
806 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000807 --enable-gcov) gcov="yes"
808 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100809 --static)
810 static="yes"
811 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300812 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000813 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200814 --mandir=*) mandir="$optarg"
815 ;;
816 --bindir=*) bindir="$optarg"
817 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300818 --libdir=*) libdir="$optarg"
819 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400820 --libexecdir=*) libexecdir="$optarg"
821 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200822 --includedir=*) includedir="$optarg"
823 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300824 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200825 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300826 --with-confsuffix=*) confsuffix="$optarg"
827 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300828 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200829 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100830 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600831 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300832 --localstatedir=*) local_statedir="$optarg"
833 ;;
834 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400835 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
836 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
837 # These switches are silently ignored, for compatibility with
838 # autoconf-generated configure scripts. This allows QEMU's
839 # configure to be used by RPM and similar macros that set
840 # lots of directory switches by default.
841 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200842 --with-system-pixman) pixman="system"
843 ;;
844 --without-system-pixman) pixman="internal"
845 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100846 --without-pixman) pixman="none"
847 ;;
bellard97a847b2003-08-10 21:36:04 +0000848 --disable-sdl) sdl="no"
849 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200850 --enable-sdl) sdl="yes"
851 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000852 --with-sdlabi=*) sdlabi="$optarg"
853 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200854 --disable-qom-cast-debug) qom_cast_debug="no"
855 ;;
856 --enable-qom-cast-debug) qom_cast_debug="yes"
857 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530858 --disable-virtfs) virtfs="no"
859 ;;
860 --enable-virtfs) virtfs="yes"
861 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100862 --disable-vnc) vnc="no"
863 ;;
864 --enable-vnc) vnc="yes"
865 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000866 --oss-lib=*) oss_lib="$optarg"
867 ;;
malc0c58ac12008-06-25 21:04:05 +0000868 --audio-drv-list=*) audio_drv_list="$optarg"
869 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800870 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
871 ;;
872 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100873 ;;
aurel32f8393942009-04-13 18:45:38 +0000874 --enable-debug-tcg) debug_tcg="yes"
875 ;;
876 --disable-debug-tcg) debug_tcg="no"
877 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100878 --enable-debug)
879 # Enable debugging options that aren't excessively noisy
880 debug_tcg="yes"
881 debug="yes"
882 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500883 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100884 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000885 --enable-sparse) sparse="yes"
886 ;;
887 --disable-sparse) sparse="no"
888 ;;
aliguori1625af82009-04-05 17:41:02 +0000889 --disable-strip) strip_opt="no"
890 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000891 --disable-vnc-sasl) vnc_sasl="no"
892 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200893 --enable-vnc-sasl) vnc_sasl="yes"
894 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200895 --disable-vnc-jpeg) vnc_jpeg="no"
896 ;;
897 --enable-vnc-jpeg) vnc_jpeg="yes"
898 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200899 --disable-vnc-png) vnc_png="no"
900 ;;
901 --enable-vnc-png) vnc_png="yes"
902 ;;
bellard443f1372004-06-04 11:13:20 +0000903 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000904 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200905 --disable-uuid) uuid="no"
906 ;;
907 --enable-uuid) uuid="yes"
908 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000909 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000910 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200911 --enable-vde) vde="yes"
912 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100913 --disable-netmap) netmap="no"
914 ;;
915 --enable-netmap) netmap="yes"
916 ;;
aliguorie37630c2009-04-22 15:19:10 +0000917 --disable-xen) xen="no"
918 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200919 --enable-xen) xen="yes"
920 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000921 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
922 ;;
923 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
924 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000925 --disable-brlapi) brlapi="no"
926 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200927 --enable-brlapi) brlapi="yes"
928 ;;
balrogfb599c92008-09-28 23:49:55 +0000929 --disable-bluez) bluez="no"
930 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200931 --enable-bluez) bluez="yes"
932 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000933 --disable-kvm) kvm="no"
934 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200935 --enable-kvm) kvm="yes"
936 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200937 --disable-tcg-interpreter) tcg_interpreter="no"
938 ;;
939 --enable-tcg-interpreter) tcg_interpreter="yes"
940 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500941 --disable-cap-ng) cap_ng="no"
942 ;;
943 --enable-cap-ng) cap_ng="yes"
944 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100945 --disable-spice) spice="no"
946 ;;
947 --enable-spice) spice="yes"
948 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100949 --disable-libiscsi) libiscsi="no"
950 ;;
951 --enable-libiscsi) libiscsi="yes"
952 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100953 --disable-libnfs) libnfs="no"
954 ;;
955 --enable-libnfs) libnfs="yes"
956 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000957 --enable-profiler) profiler="yes"
958 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400959 --disable-cocoa) cocoa="no"
960 ;;
malcc2de5c92008-06-28 19:13:06 +0000961 --enable-cocoa)
962 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000963 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000964 ;;
pbrookcad25d62006-03-19 16:31:11 +0000965 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000966 ;;
pbrookcad25d62006-03-19 16:31:11 +0000967 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000968 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000969 --disable-user)
970 linux_user="no" ;
971 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000972 ;;
973 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000974 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000975 ;;
ths831b7822007-01-18 20:06:33 +0000976 --enable-linux-user) linux_user="yes"
977 ;;
blueswir184778502008-10-26 20:33:16 +0000978 --disable-bsd-user) bsd_user="no"
979 ;;
980 --enable-bsd-user) bsd_user="yes"
981 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200982 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300983 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200984 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300985 ;;
bellard85aa5182007-11-11 20:17:03 +0000986 --enable-werror) werror="yes"
987 ;;
988 --disable-werror) werror="no"
989 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100990 --enable-stack-protector) stack_protector="yes"
991 ;;
992 --disable-stack-protector) stack_protector="no"
993 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000994 --disable-curses) curses="no"
995 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200996 --enable-curses) curses="yes"
997 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200998 --disable-curl) curl="no"
999 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001000 --enable-curl) curl="yes"
1001 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001002 --disable-fdt) fdt="no"
1003 ;;
1004 --enable-fdt) fdt="yes"
1005 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001006 --disable-linux-aio) linux_aio="no"
1007 ;;
1008 --enable-linux-aio) linux_aio="yes"
1009 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001010 --disable-attr) attr="no"
1011 ;;
1012 --enable-attr) attr="yes"
1013 ;;
ths77755342008-11-27 15:45:16 +00001014 --disable-blobs) blobs="no"
1015 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001016 --with-pkgversion=*) pkgversion=" ($optarg)"
1017 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001018 --with-coroutine=*) coroutine="$optarg"
1019 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001020 --disable-coroutine-pool) coroutine_pool="no"
1021 ;;
1022 --enable-coroutine-pool) coroutine_pool="yes"
1023 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001024 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001025 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001026 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001027 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001028 --disable-vhost-net) vhost_net="no"
1029 ;;
1030 --enable-vhost-net) vhost_net="yes"
1031 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001032 --disable-vhost-scsi) vhost_scsi="no"
1033 ;;
1034 --enable-vhost-scsi) vhost_scsi="yes"
1035 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001036 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001037 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001038 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001039 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001040 --disable-rbd) rbd="no"
1041 ;;
1042 --enable-rbd) rbd="yes"
1043 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001044 --disable-xfsctl) xfs="no"
1045 ;;
1046 --enable-xfsctl) xfs="yes"
1047 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001048 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001049 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001050 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001051 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001052 --disable-libusb) libusb="no"
1053 ;;
1054 --enable-libusb) libusb="yes"
1055 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001056 --disable-usb-redir) usb_redir="no"
1057 ;;
1058 --enable-usb-redir) usb_redir="yes"
1059 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001060 --disable-zlib-test) zlib="no"
1061 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001062 --disable-lzo) lzo="no"
1063 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001064 --enable-lzo) lzo="yes"
1065 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001066 --disable-snappy) snappy="no"
1067 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001068 --enable-snappy) snappy="yes"
1069 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001070 --disable-bzip2) bzip2="no"
1071 ;;
1072 --enable-bzip2) bzip2="yes"
1073 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001074 --enable-guest-agent) guest_agent="yes"
1075 ;;
1076 --disable-guest-agent) guest_agent="no"
1077 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001078 --enable-guest-agent-msi) guest_agent_msi="yes"
1079 ;;
1080 --disable-guest-agent-msi) guest_agent_msi="no"
1081 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001082 --with-vss-sdk) vss_win32_sdk=""
1083 ;;
1084 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1085 ;;
1086 --without-vss-sdk) vss_win32_sdk="no"
1087 ;;
1088 --with-win-sdk) win_sdk=""
1089 ;;
1090 --with-win-sdk=*) win_sdk="$optarg"
1091 ;;
1092 --without-win-sdk) win_sdk="no"
1093 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001094 --enable-tools) want_tools="yes"
1095 ;;
1096 --disable-tools) want_tools="no"
1097 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001098 --enable-seccomp) seccomp="yes"
1099 ;;
1100 --disable-seccomp) seccomp="no"
1101 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301102 --disable-glusterfs) glusterfs="no"
1103 ;;
1104 --enable-glusterfs) glusterfs="yes"
1105 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001106 --disable-archipelago) archipelago="no"
1107 ;;
1108 --enable-archipelago) archipelago="yes"
1109 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001110 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1111 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001112 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001113 --disable-gtk) gtk="no"
1114 ;;
1115 --enable-gtk) gtk="yes"
1116 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001117 --disable-gnutls) gnutls="no"
1118 ;;
1119 --enable-gnutls) gnutls="yes"
1120 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001121 --disable-nettle) nettle="no"
1122 ;;
1123 --enable-nettle) nettle="yes"
1124 ;;
1125 --disable-gcrypt) gcrypt="no"
1126 ;;
1127 --enable-gcrypt) gcrypt="yes"
1128 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001129 --enable-rdma) rdma="yes"
1130 ;;
1131 --disable-rdma) rdma="no"
1132 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001133 --with-gtkabi=*) gtkabi="$optarg"
1134 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001135 --disable-vte) vte="no"
1136 ;;
1137 --enable-vte) vte="yes"
1138 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001139 --disable-virglrenderer) virglrenderer="no"
1140 ;;
1141 --enable-virglrenderer) virglrenderer="yes"
1142 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001143 --disable-tpm) tpm="no"
1144 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001145 --enable-tpm) tpm="yes"
1146 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001147 --disable-libssh2) libssh2="no"
1148 ;;
1149 --enable-libssh2) libssh2="yes"
1150 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001151 --enable-vhdx) vhdx="yes"
1152 ;;
1153 --disable-vhdx) vhdx="no"
1154 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001155 --disable-numa) numa="no"
1156 ;;
1157 --enable-numa) numa="yes"
1158 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001159 --disable-tcmalloc) tcmalloc="no"
1160 ;;
1161 --enable-tcmalloc) tcmalloc="yes"
1162 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001163 --disable-jemalloc) jemalloc="no"
1164 ;;
1165 --enable-jemalloc) jemalloc="yes"
1166 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001167 *)
1168 echo "ERROR: unknown option $opt"
1169 echo "Try '$0 --help' for more information"
1170 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001171 ;;
bellard7d132992003-03-06 23:23:54 +00001172 esac
1173done
1174
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001175if ! has $python; then
1176 error_exit "Python not found. Use --python=/path/to/python"
1177fi
1178
1179# Note that if the Python conditional here evaluates True we will exit
1180# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001181if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1182 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001183 "Note that Python 3 or later is not yet supported." \
1184 "Use --python=/path/to/python to specify a supported Python."
1185fi
1186
Markus Armbrusterfec21032015-09-04 21:53:03 +02001187# Suppress writing compiled files
1188python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001189
bellard40293e52008-01-31 11:32:10 +00001190case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001191 ppc)
1192 CPU_CFLAGS="-m32"
1193 LDFLAGS="-m32 $LDFLAGS"
1194 ;;
1195 ppc64)
1196 CPU_CFLAGS="-m64"
1197 LDFLAGS="-m64 $LDFLAGS"
1198 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001199 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001200 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001201 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001202 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001203 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001204 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001205 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001206 ;;
ths76d83bd2007-11-18 21:22:10 +00001207 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001208 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001209 LDFLAGS="-m31 $LDFLAGS"
1210 ;;
1211 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001212 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001213 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001214 ;;
bellard40293e52008-01-31 11:32:10 +00001215 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001216 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001217 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001218 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001219 ;;
1220 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001221 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001222 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001223 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001224 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001225 x32)
1226 CPU_CFLAGS="-mx32"
1227 LDFLAGS="-mx32 $LDFLAGS"
1228 cc_i386='$(CC) -m32'
1229 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001230 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001231esac
1232
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001233QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1234EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1235
Peter Maydell60e0df22011-05-03 14:50:13 +01001236default_target_list=""
1237
Peter Maydell6e92f822013-05-20 16:16:15 +01001238mak_wilds=""
1239
1240if [ "$softmmu" = "yes" ]; then
1241 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001242fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001243if [ "$linux_user" = "yes" ]; then
1244 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001245fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001246if [ "$bsd_user" = "yes" ]; then
1247 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001248fi
1249
Peter Maydell6e92f822013-05-20 16:16:15 +01001250for config in $mak_wilds; do
1251 default_target_list="${default_target_list} $(basename "$config" .mak)"
1252done
1253
pbrookaf5db582006-04-08 14:26:41 +00001254if test x"$show_help" = x"yes" ; then
1255cat << EOF
1256
1257Usage: configure [options]
1258Options: [defaults in brackets after descriptions]
1259
Stefan Weil08fb77e2013-12-18 22:09:39 +01001260Standard options:
1261 --help print this message
1262 --prefix=PREFIX install in PREFIX [$prefix]
1263 --interp-prefix=PREFIX where to find shared libraries, etc.
1264 use %M for cpu name [$interp_prefix]
1265 --target-list=LIST set target list (default: build everything)
1266$(echo Available targets: $default_target_list | \
1267 fold -s -w 53 | sed -e 's/^/ /')
1268
1269Advanced options (experts only):
1270 --source-path=PATH path of source code [$source_path]
1271 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1272 --cc=CC use C compiler CC [$cc]
1273 --iasl=IASL use ACPI compiler IASL [$iasl]
1274 --host-cc=CC use C compiler CC [$host_cc] for code run at
1275 build time
1276 --cxx=CXX use C++ compiler CXX [$cxx]
1277 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1278 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1279 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1280 --make=MAKE use specified make [$make]
1281 --install=INSTALL use specified install [$install]
1282 --python=PYTHON use specified python [$python]
1283 --smbd=SMBD use specified smbd [$smbd]
1284 --static enable static build [$static]
1285 --mandir=PATH install man pages in PATH
1286 --datadir=PATH install firmware in PATH$confsuffix
1287 --docdir=PATH install documentation in PATH$confsuffix
1288 --bindir=PATH install binaries in PATH
1289 --libdir=PATH install libraries in PATH
1290 --sysconfdir=PATH install config in PATH$confsuffix
1291 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001292 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001293 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001294 --disable-strip disable stripping binaries
1295 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001296 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001297 --audio-drv-list=LIST set audio drivers list:
1298 Available drivers: $audio_possible_drivers
1299 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1300 --block-drv-rw-whitelist=L
1301 set block driver read-write whitelist
1302 (affects only QEMU, not qemu-img)
1303 --block-drv-ro-whitelist=L
1304 set block driver read-only whitelist
1305 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001306 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001307 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1308 --with-trace-file=NAME Full PATH,NAME of file to store traces
1309 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001310 --disable-slirp disable SLIRP userspace network connectivity
1311 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1312 --oss-lib path to OSS library
1313 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001314 --with-coroutine=BACKEND coroutine backend. Supported options:
1315 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001316 --enable-gcov enable test coverage analysis with gcov
1317 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001318 --disable-blobs disable installing provided firmware blobs
1319 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1320 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1321
1322Optional features, enabled with --enable-FEATURE and
1323disabled with --disable-FEATURE, default is enabled if available:
1324
1325 system all system emulation targets
1326 user supported user emulation targets
1327 linux-user all linux usermode emulation targets
1328 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001329 docs build documentation
1330 guest-agent build the QEMU Guest Agent
1331 guest-agent-msi build guest agent Windows MSI installation package
1332 pie Position Independent Executables
1333 modules modules support
1334 debug-tcg TCG debugging (default is disabled)
1335 debug-info debugging information
1336 sparse sparse checker
1337
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001338 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001339 nettle nettle cryptography support
1340 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001341 sdl SDL UI
1342 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1343 gtk gtk UI
1344 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1345 vte vte support for the gtk UI
1346 curses curses UI
1347 vnc VNC UI support
1348 vnc-tls TLS encryption for VNC server
1349 vnc-sasl SASL encryption for VNC server
1350 vnc-jpeg JPEG lossy compression for VNC server
1351 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001352 cocoa Cocoa UI (Mac OS X only)
1353 virtfs VirtFS
1354 xen xen backend driver support
1355 xen-pci-passthrough
1356 brlapi BrlAPI (Braile)
1357 curl curl connectivity
1358 fdt fdt device tree
1359 bluez bluez stack connectivity
1360 kvm KVM acceleration support
1361 rdma RDMA-based migration support
1362 uuid uuid support
1363 vde support for vde network
1364 netmap support for netmap network
1365 linux-aio Linux AIO support
1366 cap-ng libcap-ng support
1367 attr attr and xattr support
1368 vhost-net vhost-net acceleration support
1369 spice spice
1370 rbd rados block device (rbd)
1371 libiscsi iscsi support
1372 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001373 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001374 libusb libusb (for usb passthrough)
1375 usb-redir usb network redirection support
1376 lzo support of lzo compression library
1377 snappy support of snappy compression library
1378 bzip2 support of bzip2 compression library
1379 (for reading bzip2-compressed dmg images)
1380 seccomp seccomp support
1381 coroutine-pool coroutine freelist (better performance)
1382 glusterfs GlusterFS backend
1383 archipelago Archipelago backend
1384 tpm TPM support
1385 libssh2 ssh block device support
1386 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001387 numa libnuma support
1388 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001389 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001390
1391NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001392EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001393exit 0
pbrookaf5db582006-04-08 14:26:41 +00001394fi
1395
Peter Maydell359bc952011-12-24 13:07:25 +00001396# Now we have handled --enable-tcg-interpreter and know we're not just
1397# printing the help message, bail out if the host CPU isn't supported.
1398if test "$ARCH" = "unknown"; then
1399 if test "$tcg_interpreter" = "yes" ; then
1400 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1401 ARCH=tci
1402 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001403 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001404 fi
1405fi
1406
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001407# Consult white-list to determine whether to enable werror
1408# by default. Only enable by default for git builds
1409z_version=`cut -f3 -d. $source_path/VERSION`
1410
1411if test -z "$werror" ; then
1412 if test -d "$source_path/.git" -a \
1413 "$linux" = "yes" ; then
1414 werror="yes"
1415 else
1416 werror="no"
1417 fi
1418fi
1419
Paolo Bonzini8d050952010-12-23 11:43:52 +01001420# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001421write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001422if compile_object ; then
1423 : C compiler works ok
1424else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001425 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001426fi
1427
Peter Maydell98b21dc2014-02-20 15:10:16 +00001428# Check that the C++ compiler exists and works with the C compiler
1429if has $cxx; then
1430 cat > $TMPC <<EOF
1431int c_function(void);
1432int main(void) { return c_function(); }
1433EOF
1434
1435 compile_object
1436
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001437 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001438extern "C" {
1439 int c_function(void);
1440}
1441int c_function(void) { return 42; }
1442EOF
1443
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001444 update_cxxflags
1445
1446 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001447 # C++ compiler $cxx works ok with C compiler $cc
1448 :
1449 else
1450 echo "C++ compiler $cxx does not work with C compiler $cc"
1451 echo "Disabling C++ specific optional code"
1452 cxx=
1453 fi
1454else
1455 echo "No C++ compiler available; disabling C++ specific optional code"
1456 cxx=
1457fi
1458
Paolo Bonzini8d050952010-12-23 11:43:52 +01001459gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1460gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1461gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001462gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001463gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001464gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001465# Note that we do not add -Werror to gcc_flags here, because that would
1466# enable it for all configure tests. If a configure test failed due
1467# to -Werror this would just silently disable some features,
1468# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001469
1470cc_has_warning_flag() {
1471 write_c_skeleton;
1472
Peter Maydella1d29d62012-10-27 22:19:07 +01001473 # Use the positive sense of the flag when testing for -Wno-wombat
1474 # support (gcc will happily accept the -Wno- form of unknown
1475 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001476 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1477 compile_prog "-Werror $optflag" ""
1478}
1479
1480for flag in $gcc_flags; do
1481 if cc_has_warning_flag $flag ; then
1482 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001483 fi
1484done
1485
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001486if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001487 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001488 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001489 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001490 # We need to check both a compile and a link, since some compiler
1491 # setups fail only on a .c->.o compile and some only at link time
1492 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1493 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001494 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1495 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001496 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001497 break
1498 fi
1499 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001500 if test "$stack_protector" = yes; then
1501 if test $sp_on = 0; then
1502 error_exit "Stack protector not supported"
1503 fi
1504 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001505fi
1506
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001507# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1508# large functions that use global variables. The bug is in all releases of
1509# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1510# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1511cat > $TMPC << EOF
1512#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1513int main(void) { return 0; }
1514#else
1515#error No bug in this compiler.
1516#endif
1517EOF
1518if compile_prog "-Werror -fno-gcse" "" ; then
1519 TRANSLATE_OPT_CFLAGS=-fno-gcse
1520fi
1521
Avi Kivity40d64442011-11-15 20:12:17 +02001522if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001523 if test "$modules" = "yes" ; then
1524 error_exit "static and modules are mutually incompatible"
1525 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001526 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001527 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001528 else
1529 pie="no"
1530 fi
1531fi
1532
Emilio G. Cota768b7852015-04-29 13:09:02 +02001533# Unconditional check for compiler __thread support
1534 cat > $TMPC << EOF
1535static __thread int tls_var;
1536int main(void) { return tls_var; }
1537EOF
1538
1539if ! compile_prog "-Werror" "" ; then
1540 error_exit "Your compiler does not support the __thread specifier for " \
1541 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1542fi
1543
Avi Kivity40d64442011-11-15 20:12:17 +02001544if test "$pie" = ""; then
1545 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001546 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001547 ;;
1548 *)
1549 pie="no"
1550 ;;
1551 esac
1552fi
1553
1554if test "$pie" != "no" ; then
1555 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001556
1557#ifdef __linux__
1558# define THREAD __thread
1559#else
1560# define THREAD
1561#endif
1562
1563static THREAD int tls_var;
1564
1565int main(void) { return tls_var; }
1566
Avi Kivity40d64442011-11-15 20:12:17 +02001567EOF
1568 if compile_prog "-fPIE -DPIE" "-pie"; then
1569 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1570 LDFLAGS="-pie $LDFLAGS"
1571 pie="yes"
1572 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1573 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1574 fi
1575 else
1576 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001577 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001578 else
1579 echo "Disabling PIE due to missing toolchain support"
1580 pie="no"
1581 fi
1582 fi
Brad46eef332013-12-10 19:49:08 -05001583
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001584 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001585 CFLAGS_NOPIE="-fno-pie"
1586 LDFLAGS_NOPIE="-nopie"
1587 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001588fi
1589
Don Slutz66518bf2014-01-02 21:12:46 -05001590# check for broken gcc and libtool in RHEL5
1591if test -n "$libtool" -a "$pie" != "no" ; then
1592 cat > $TMPC <<EOF
1593
1594void *f(unsigned char *buf, int len);
1595void *g(unsigned char *buf, int len);
1596
1597void *
1598f(unsigned char *buf, int len)
1599{
1600 return (void*)0L;
1601}
1602
1603void *
1604g(unsigned char *buf, int len)
1605{
1606 return f(buf, len);
1607}
1608
1609EOF
1610 if ! libtool_prog; then
1611 echo "Disabling libtool due to broken toolchain support"
1612 libtool=
1613 fi
1614fi
1615
Paolo Bonzini09dada42013-04-17 16:26:47 +02001616##########################################
1617# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1618# use i686 as default anyway, but for those that don't, an explicit
1619# specification is necessary
1620
1621if test "$cpu" = "i386"; then
1622 cat > $TMPC << EOF
1623static int sfaa(int *ptr)
1624{
1625 return __sync_fetch_and_and(ptr, 0);
1626}
1627
1628int main(void)
1629{
1630 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001631 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001632 sfaa(&val);
1633 return val;
1634}
1635EOF
1636 if ! compile_prog "" "" ; then
1637 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1638 fi
1639fi
1640
1641#########################################
bellardec530c82006-04-25 22:36:06 +00001642# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001643
bellardec530c82006-04-25 22:36:06 +00001644if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001645 if has $install; then
1646 :
1647 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001648 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1649 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1650 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001651 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001652 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001653 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1654 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1655 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001656 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001657 if has ar; then
1658 :
1659 else
bellardec530c82006-04-25 22:36:06 +00001660 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001661 error_exit "No path includes ar" \
1662 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001663 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001664 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001665 fi
ths5fafdf22007-09-16 21:08:06 +00001666fi
bellardec530c82006-04-25 22:36:06 +00001667
Stefan Weilafb63eb2012-09-26 22:04:38 +02001668if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001669 target_list="$default_target_list"
1670else
1671 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001672fi
Peter Maydell25b48332013-05-20 16:16:16 +01001673
1674# Check that we recognised the target name; this allows a more
1675# friendly error message than if we let it fall through.
1676for target in $target_list; do
1677 case " $default_target_list " in
1678 *" $target "*)
1679 ;;
1680 *)
1681 error_exit "Unknown target name '$target'"
1682 ;;
1683 esac
1684done
1685
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001686# see if system emulation was really requested
1687case " $target_list " in
1688 *"-softmmu "*) softmmu=yes
1689 ;;
1690 *) softmmu=no
1691 ;;
1692esac
bellard5327cf42005-01-10 23:18:50 +00001693
Juan Quintela249247c2009-08-12 18:20:25 +02001694feature_not_found() {
1695 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001696 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001697
Peter Maydell76ad07a2013-04-08 12:11:26 +01001698 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001699 "configure was not able to find it." \
1700 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001701}
1702
bellard7d132992003-03-06 23:23:54 +00001703# ---
1704# big/little endian test
1705cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001706short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1707short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1708extern int foo(short *, short *);
1709int main(int argc, char *argv[]) {
1710 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001711}
1712EOF
1713
Mike Frysinger61cc9192013-06-30 23:30:18 -04001714if compile_object ; then
1715 if grep -q BiGeNdIaN $TMPO ; then
1716 bigendian="yes"
1717 elif grep -q LiTtLeEnDiAn $TMPO ; then
1718 bigendian="no"
1719 else
1720 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001721 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001722else
1723 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001724fi
1725
Juan Quintelab0a47e72009-08-12 18:29:49 +02001726##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001727# cocoa implies not SDL or GTK
1728# (the cocoa UI code currently assumes it is always the active UI
1729# and doesn't interact well with other UI frontend code)
1730if test "$cocoa" = "yes"; then
1731 if test "$sdl" = "yes"; then
1732 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1733 fi
1734 if test "$gtk" = "yes"; then
1735 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1736 fi
1737 gtk=no
1738 sdl=no
1739fi
1740
1741##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001742# L2TPV3 probe
1743
1744cat > $TMPC <<EOF
1745#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001746#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001747int main(void) { return sizeof(struct mmsghdr); }
1748EOF
1749if compile_prog "" "" ; then
1750 l2tpv3=yes
1751else
1752 l2tpv3=no
1753fi
1754
1755##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001756# MinGW / Mingw-w64 localtime_r/gmtime_r check
1757
1758if test "$mingw32" = "yes"; then
1759 # Some versions of MinGW / Mingw-w64 lack localtime_r
1760 # and gmtime_r entirely.
1761 #
1762 # Some versions of Mingw-w64 define a macro for
1763 # localtime_r/gmtime_r.
1764 #
1765 # Some versions of Mingw-w64 will define functions
1766 # for localtime_r/gmtime_r, but only if you have
1767 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1768 # though, unistd.h and pthread.h both define
1769 # that for you.
1770 #
1771 # So this #undef localtime_r and #include <unistd.h>
1772 # are not in fact redundant.
1773cat > $TMPC << EOF
1774#include <unistd.h>
1775#include <time.h>
1776#undef localtime_r
1777int main(void) { localtime_r(NULL, NULL); return 0; }
1778EOF
1779 if compile_prog "" "" ; then
1780 localtime_r="yes"
1781 else
1782 localtime_r="no"
1783 fi
1784fi
1785
1786##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001787# pkg-config probe
1788
1789if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001790 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001791fi
1792
1793##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001794# NPTL probe
1795
Peter Maydell24cb36a2013-07-16 18:45:00 +01001796if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001797 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001798#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001799#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001800int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001801#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1802#error bork
1803#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001804 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001805}
1806EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001807 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001808 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001809 fi
pbrookbd0c5662008-05-29 14:34:11 +00001810fi
1811
bellard11d9f692004-04-02 20:55:59 +00001812##########################################
balrogac629222008-10-11 09:56:04 +00001813# zlib check
1814
Alon Levy1ece9902011-07-26 12:30:40 +03001815if test "$zlib" != "no" ; then
1816 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001817#include <zlib.h>
1818int main(void) { zlibVersion(); return 0; }
1819EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001820 if compile_prog "" "-lz" ; then
1821 :
1822 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001823 error_exit "zlib check failed" \
1824 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001825 fi
balrogac629222008-10-11 09:56:04 +00001826fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001827LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001828
1829##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001830# lzo check
1831
1832if test "$lzo" != "no" ; then
1833 cat > $TMPC << EOF
1834#include <lzo/lzo1x.h>
1835int main(void) { lzo_version(); return 0; }
1836EOF
1837 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001838 libs_softmmu="$libs_softmmu -llzo2"
1839 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001840 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001841 if test "$lzo" = "yes"; then
1842 feature_not_found "liblzo2" "Install liblzo2 devel"
1843 fi
1844 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001845 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001846fi
1847
1848##########################################
1849# snappy check
1850
1851if test "$snappy" != "no" ; then
1852 cat > $TMPC << EOF
1853#include <snappy-c.h>
1854int main(void) { snappy_max_compressed_length(4096); return 0; }
1855EOF
1856 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001857 libs_softmmu="$libs_softmmu -lsnappy"
1858 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001859 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001860 if test "$snappy" = "yes"; then
1861 feature_not_found "libsnappy" "Install libsnappy devel"
1862 fi
1863 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001864 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001865fi
1866
1867##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001868# bzip2 check
1869
1870if test "$bzip2" != "no" ; then
1871 cat > $TMPC << EOF
1872#include <bzlib.h>
1873int main(void) { BZ2_bzlibVersion(); return 0; }
1874EOF
1875 if compile_prog "" "-lbz2" ; then
1876 bzip2="yes"
1877 else
1878 if test "$bzip2" = "yes"; then
1879 feature_not_found "libbzip2" "Install libbzip2 devel"
1880 fi
1881 bzip2="no"
1882 fi
1883fi
1884
1885##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001886# libseccomp check
1887
1888if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001889 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1890 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001891 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001892 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001893 seccomp="yes"
1894 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001895 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001896 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001897 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001898 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001899 fi
1900fi
1901##########################################
aliguorie37630c2009-04-22 15:19:10 +00001902# xen probe
1903
Juan Quintelafc321b42009-08-12 18:29:55 +02001904if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001905 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001906
Stefan Weil50ced5b2011-12-17 09:27:39 +01001907 # First we test whether Xen headers and libraries are available.
1908 # If no, we are done and there is no Xen support.
1909 # If yes, more tests are run to detect the Xen version.
1910
1911 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001912 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001913#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001914int main(void) {
1915 return 0;
1916}
1917EOF
1918 if ! compile_prog "" "$xen_libs" ; then
1919 # Xen not found
1920 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001921 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001922 fi
1923 xen=no
1924
1925 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001926 elif
1927 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001928#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001929#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001930#include <stdint.h>
1931#include <xen/hvm/hvm_info_table.h>
1932#if !defined(HVM_MAX_VCPUS)
1933# error HVM_MAX_VCPUS not defined
1934#endif
1935int main(void) {
1936 xc_interface *xc;
1937 xs_daemon_open();
1938 xc = xc_interface_open(0, 0, 0);
1939 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1940 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001941 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001942 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001943 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04001944 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001945 return 0;
1946}
1947EOF
1948 compile_prog "" "$xen_libs"
1949 then
1950 xen_ctrl_version=460
1951 xen=yes
1952
1953 # Xen 4.5
1954 elif
1955 cat > $TMPC <<EOF &&
1956#include <xenctrl.h>
1957#include <xenstore.h>
1958#include <stdint.h>
1959#include <xen/hvm/hvm_info_table.h>
1960#if !defined(HVM_MAX_VCPUS)
1961# error HVM_MAX_VCPUS not defined
1962#endif
1963int main(void) {
1964 xc_interface *xc;
1965 xs_daemon_open();
1966 xc = xc_interface_open(0, 0, 0);
1967 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1968 xc_gnttab_open(NULL, 0);
1969 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1970 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001971 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1972 return 0;
1973}
1974EOF
1975 compile_prog "" "$xen_libs"
1976 then
1977 xen_ctrl_version=450
1978 xen=yes
1979
1980 elif
1981 cat > $TMPC <<EOF &&
1982#include <xenctrl.h>
1983#include <xenstore.h>
1984#include <stdint.h>
1985#include <xen/hvm/hvm_info_table.h>
1986#if !defined(HVM_MAX_VCPUS)
1987# error HVM_MAX_VCPUS not defined
1988#endif
1989int main(void) {
1990 xc_interface *xc;
1991 xs_daemon_open();
1992 xc = xc_interface_open(0, 0, 0);
1993 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1994 xc_gnttab_open(NULL, 0);
1995 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1996 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001997 return 0;
1998}
1999EOF
2000 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002001 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002002 xen_ctrl_version=420
2003 xen=yes
2004
Peter Maydell69deef02012-08-02 18:30:26 +01002005 elif
2006 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00002007#include <xenctrl.h>
2008#include <xs.h>
2009#include <stdint.h>
2010#include <xen/hvm/hvm_info_table.h>
2011#if !defined(HVM_MAX_VCPUS)
2012# error HVM_MAX_VCPUS not defined
2013#endif
2014int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00002015 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01002016 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002017 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2018 xc_gnttab_open(NULL, 0);
2019 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002020 return 0;
2021}
aliguorie37630c2009-04-22 15:19:10 +00002022EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01002023 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002024 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002025 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02002026 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002027
2028 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01002029 elif
2030 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002031#include <xenctrl.h>
2032#include <xs.h>
2033#include <stdint.h>
2034#include <xen/hvm/hvm_info_table.h>
2035#if !defined(HVM_MAX_VCPUS)
2036# error HVM_MAX_VCPUS not defined
2037#endif
2038int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01002039 struct xen_add_to_physmap xatp = {
2040 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2041 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002042 xs_daemon_open();
2043 xc_interface_open();
2044 xc_gnttab_open();
2045 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002046 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002047 return 0;
2048}
2049EOF
2050 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002051 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002052 xen_ctrl_version=400
2053 xen=yes
2054
Anthony PERARDb87de242011-05-24 14:34:20 +01002055 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002056 elif
2057 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002058#include <xenctrl.h>
2059#include <xs.h>
2060int main(void) {
2061 struct xen_add_to_physmap xatp = {
2062 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2063 };
2064 xs_daemon_open();
2065 xc_interface_open();
2066 xc_gnttab_open();
2067 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2068 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2069 return 0;
2070}
2071EOF
2072 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002073 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002074 xen_ctrl_version=340
2075 xen=yes
2076
2077 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002078 elif
2079 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002080#include <xenctrl.h>
2081#include <xs.h>
2082int main(void) {
2083 xs_daemon_open();
2084 xc_interface_open();
2085 xc_gnttab_open();
2086 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2087 return 0;
2088}
2089EOF
2090 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002091 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002092 xen_ctrl_version=330
2093 xen=yes
2094
Stefan Weil50ced5b2011-12-17 09:27:39 +01002095 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002096 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002097 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002098 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002099 fi
2100 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002101 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002102
2103 if test "$xen" = yes; then
2104 libs_softmmu="$xen_libs $libs_softmmu"
2105 fi
aliguorie37630c2009-04-22 15:19:10 +00002106fi
2107
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002108if test "$xen_pci_passthrough" != "no"; then
2109 if test "$xen" = "yes" && test "$linux" = "yes" &&
2110 test "$xen_ctrl_version" -ge 340; then
2111 xen_pci_passthrough=yes
2112 else
2113 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002114 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002115 error_exit "User requested feature Xen PCI Passthrough" \
2116 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002117 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002118 error_exit "User requested feature Xen PCI Passthrough" \
2119 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002120 fi
2121 xen_pci_passthrough=no
2122 fi
2123fi
2124
aliguorie37630c2009-04-22 15:19:10 +00002125##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002126# libtool probe
2127
Brad3f534582011-08-13 20:30:14 -04002128if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002129 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002130fi
2131
Peter Maydell8e515b12013-05-04 21:57:51 +01002132# MacOSX ships with a libtool which isn't the GNU one; weed this
2133# out by checking whether libtool supports the --version switch
2134if test -n "$libtool"; then
2135 if ! "$libtool" --version >/dev/null 2>&1; then
2136 libtool=
2137 fi
2138fi
2139
Alon Levy44dc0ca2011-05-15 11:51:28 +03002140##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002141# Sparse probe
2142if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002143 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002144 sparse=yes
2145 else
2146 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002147 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002148 fi
2149 sparse=no
2150 fi
2151fi
2152
2153##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002154# X11 probe
2155x11_cflags=
2156x11_libs=-lX11
2157if $pkg_config --exists "x11"; then
2158 x11_cflags=`$pkg_config --cflags x11`
2159 x11_libs=`$pkg_config --libs x11`
2160fi
2161
2162##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002163# GTK probe
2164
Stefan Weil9e04c682014-05-17 16:29:18 +02002165if test "$gtkabi" = ""; then
2166 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2167 # Use 3.0 as a fallback if that is available.
2168 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2169 gtkabi=2.0
2170 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2171 gtkabi=3.0
2172 else
2173 gtkabi=2.0
2174 fi
2175fi
2176
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002177if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002178 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002179 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002180 if test "$gtkabi" = "3.0" ; then
2181 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002182 else
2183 gtkversion="2.18.0"
2184 fi
2185 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2186 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2187 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002188 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002189 gtk_cflags="$gtk_cflags $x11_cflags"
2190 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002191 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002192 libs_softmmu="$gtk_libs $libs_softmmu"
2193 gtk="yes"
2194 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002195 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002196 else
2197 gtk="no"
2198 fi
2199fi
2200
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002201
2202##########################################
2203# GNUTLS probe
2204
Peter Maydell37371292015-07-24 18:28:08 +01002205gnutls_works() {
2206 # Unfortunately some distros have bad pkg-config information for gnutls
2207 # such that it claims to exist but you get a compiler error if you try
2208 # to use the options returned by --libs. Specifically, Ubuntu for --static
2209 # builds doesn't work:
2210 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2211 #
2212 # So sanity check the cflags/libs before assuming gnutls can be used.
2213 if ! $pkg_config --exists "gnutls"; then
2214 return 1
2215 fi
2216
2217 write_c_skeleton
2218 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2219}
2220
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002221gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002222gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002223if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002224 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002225 gnutls_cflags=`$pkg_config --cflags gnutls`
2226 gnutls_libs=`$pkg_config --libs gnutls`
2227 libs_softmmu="$gnutls_libs $libs_softmmu"
2228 libs_tools="$gnutls_libs $libs_tools"
2229 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2230 gnutls="yes"
2231
2232 # gnutls_hash_init requires >= 2.9.10
2233 if $pkg_config --exists "gnutls >= 2.9.10"; then
2234 gnutls_hash="yes"
2235 else
2236 gnutls_hash="no"
2237 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002238
2239 if $pkg_config --exists 'gnutls >= 3.0'; then
2240 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002241 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002242 elif $pkg_config --exists 'gnutls >= 2.12'; then
2243 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002244 *gcrypt*)
2245 gnutls_gcrypt=yes
2246 gnutls_nettle=no
2247 ;;
2248 *nettle*)
2249 gnutls_gcrypt=no
2250 gnutls_nettle=yes
2251 ;;
2252 *)
2253 gnutls_gcrypt=yes
2254 gnutls_nettle=no
2255 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002256 esac
2257 else
2258 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002259 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002260 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002261 elif test "$gnutls" = "yes"; then
2262 feature_not_found "gnutls" "Install gnutls devel"
2263 else
2264 gnutls="no"
2265 gnutls_hash="no"
2266 fi
2267else
2268 gnutls_hash="no"
2269fi
2270
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002271
2272# If user didn't give a --disable/enable-gcrypt flag,
2273# then mark as disabled if user requested nettle
2274# explicitly, or if gnutls links to nettle
2275if test -z "$gcrypt"
2276then
2277 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2278 then
2279 gcrypt="no"
2280 fi
2281fi
2282
2283# If user didn't give a --disable/enable-nettle flag,
2284# then mark as disabled if user requested gcrypt
2285# explicitly, or if gnutls links to gcrypt
2286if test -z "$nettle"
2287then
2288 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2289 then
2290 nettle="no"
2291 fi
2292fi
2293
2294has_libgcrypt_config() {
2295 if ! has "libgcrypt-config"
2296 then
2297 return 1
2298 fi
2299
2300 if test -n "$cross_prefix"
2301 then
2302 host=`libgcrypt-config --host`
2303 if test "$host-" != $cross_prefix
2304 then
2305 return 1
2306 fi
2307 fi
2308
2309 return 0
2310}
2311
2312if test "$gcrypt" != "no"; then
2313 if has_libgcrypt_config; then
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002314 gcrypt_cflags=`libgcrypt-config --cflags`
2315 gcrypt_libs=`libgcrypt-config --libs`
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002316 # Debian has remove -lgpg-error from libgcrypt-config
2317 # as it "spreads unnecessary dependencies" which in
2318 # turn breaks static builds...
2319 if test "$static" = "yes"
2320 then
2321 gcrypt_libs="$gcrypt_libs -lgpg-error"
2322 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002323 libs_softmmu="$gcrypt_libs $libs_softmmu"
2324 libs_tools="$gcrypt_libs $libs_tools"
2325 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002326 gcrypt="yes"
2327 if test -z "$nettle"; then
2328 nettle="no"
2329 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002330 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002331 if test "$gcrypt" = "yes"; then
2332 feature_not_found "gcrypt" "Install gcrypt devel"
2333 else
2334 gcrypt="no"
2335 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002336 fi
2337fi
2338
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002339
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002340if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002341 if $pkg_config --exists "nettle"; then
2342 nettle_cflags=`$pkg_config --cflags nettle`
2343 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002344 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002345 libs_softmmu="$nettle_libs $libs_softmmu"
2346 libs_tools="$nettle_libs $libs_tools"
2347 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002348 nettle="yes"
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002349 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002350 if test "$nettle" = "yes"; then
2351 feature_not_found "nettle" "Install nettle devel"
2352 else
2353 nettle="no"
2354 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002355 fi
2356fi
2357
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002358if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2359then
2360 error_exit "Only one of gcrypt & nettle can be enabled"
2361fi
2362
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002363##########################################
2364# libtasn1 - only for the TLS creds/session test suite
2365
2366tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002367tasn1_cflags=""
2368tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002369if $pkg_config --exists "libtasn1"; then
2370 tasn1_cflags=`$pkg_config --cflags libtasn1`
2371 tasn1_libs=`$pkg_config --libs libtasn1`
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002372else
2373 tasn1=no
2374fi
2375
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002376
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002377##########################################
2378# VTE probe
2379
2380if test "$vte" != "no"; then
2381 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002382 vtepackage="vte-2.90"
2383 vteversion="0.32.0"
2384 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002385 vtepackage="vte"
2386 vteversion="0.24.0"
2387 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002388 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2389 vte_cflags=`$pkg_config --cflags $vtepackage`
2390 vte_libs=`$pkg_config --libs $vtepackage`
2391 libs_softmmu="$vte_libs $libs_softmmu"
2392 vte="yes"
2393 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002394 if test "$gtkabi" = "3.0"; then
2395 feature_not_found "vte" "Install libvte-2.90 devel"
2396 else
2397 feature_not_found "vte" "Install libvte devel"
2398 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002399 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002400 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002401 fi
2402fi
2403
2404##########################################
bellard11d9f692004-04-02 20:55:59 +00002405# SDL probe
2406
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002407# Look for sdl configuration program (pkg-config or sdl-config). Try
2408# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002409
2410if test $sdlabi = "2.0"; then
2411 sdl_config=$sdl2_config
2412 sdlname=sdl2
2413 sdlconfigname=sdl2_config
2414else
2415 sdlname=sdl
2416 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002417fi
2418
Dave Airlie47c03742013-12-10 14:05:51 +10002419if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2420 sdl_config=$sdlconfigname
2421fi
2422
2423if $pkg_config $sdlname --exists; then
2424 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002425 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002426elif has ${sdl_config}; then
2427 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002428 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002429else
2430 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002431 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002432 fi
2433 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002434fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002435if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002436 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2437fi
bellard11d9f692004-04-02 20:55:59 +00002438
Paolo Bonzini9316f802010-01-13 09:52:55 +01002439sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002440if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002441 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002442#include <SDL.h>
2443#undef main /* We don't want SDL to override our main() */
2444int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2445EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002446 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002447 if test "$static" = "yes" ; then
2448 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2449 else
2450 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2451 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002452 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002453 if test "$_sdlversion" -lt 121 ; then
2454 sdl_too_old=yes
2455 else
Peter Maydella30878e2015-08-14 16:10:52 +01002456 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002457 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002458
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002459 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002460 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002461 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002462 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2463 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002464 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002465 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002466 :
2467 else
2468 sdl=no
2469 fi
2470 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002471 else # sdl not found
2472 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002473 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002474 fi
2475 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002476 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002477fi
bellard11d9f692004-04-02 20:55:59 +00002478
aliguori5368a422009-03-03 17:37:21 +00002479if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002480 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002481#include <SDL.h>
2482#if defined(SDL_VIDEO_DRIVER_X11)
2483#include <X11/XKBlib.h>
2484#else
2485#error No x11 support
2486#endif
2487int main(void) { return 0; }
2488EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002489 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2490 sdl_cflags="$sdl_cflags $x11_cflags"
2491 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002492 fi
Juan Quintela07056672009-08-03 14:46:27 +02002493 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002494fi
2495
ths8f28f3f2007-01-05 21:25:54 +00002496##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002497# RDMA needs OpenFabrics libraries
2498if test "$rdma" != "no" ; then
2499 cat > $TMPC <<EOF
2500#include <rdma/rdma_cma.h>
2501int main(void) { return 0; }
2502EOF
2503 rdma_libs="-lrdmacm -libverbs"
2504 if compile_prog "" "$rdma_libs" ; then
2505 rdma="yes"
2506 libs_softmmu="$libs_softmmu $rdma_libs"
2507 else
2508 if test "$rdma" = "yes" ; then
2509 error_exit \
2510 " OpenFabrics librdmacm/libibverbs not present." \
2511 " Your options:" \
2512 " (1) Fast: Install infiniband packages from your distro." \
2513 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2514 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2515 fi
2516 rdma="no"
2517 fi
2518fi
2519
ths8d5d2d42007-08-25 01:37:51 +00002520
2521##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002522# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002523if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002524 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002525#include <sasl/sasl.h>
2526#include <stdio.h>
2527int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2528EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002529 # Assuming Cyrus-SASL installed in /usr prefix
2530 vnc_sasl_cflags=""
2531 vnc_sasl_libs="-lsasl2"
2532 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2533 vnc_sasl=yes
2534 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002535 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002536 else
2537 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002538 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002539 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002540 vnc_sasl=no
2541 fi
aliguori2f9606b2009-03-06 20:27:28 +00002542fi
2543
2544##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002545# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002546if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002547cat > $TMPC <<EOF
2548#include <stdio.h>
2549#include <jpeglib.h>
2550int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2551EOF
2552 vnc_jpeg_cflags=""
2553 vnc_jpeg_libs="-ljpeg"
2554 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2555 vnc_jpeg=yes
2556 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002557 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002558 else
2559 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002560 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002561 fi
2562 vnc_jpeg=no
2563 fi
2564fi
2565
2566##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002567# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002568if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002569cat > $TMPC <<EOF
2570//#include <stdio.h>
2571#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002572#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002573int main(void) {
2574 png_structp png_ptr;
2575 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002576 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002577}
2578EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002579 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002580 vnc_png_cflags=`$pkg_config libpng --cflags`
2581 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002582 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002583 vnc_png_cflags=""
2584 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002585 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002586 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2587 vnc_png=yes
2588 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002589 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002590 else
2591 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002592 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002593 fi
2594 vnc_png=no
2595 fi
2596fi
2597
2598##########################################
aliguori76655d62009-03-06 20:27:37 +00002599# fnmatch() probe, used for ACL routines
2600fnmatch="no"
2601cat > $TMPC << EOF
2602#include <fnmatch.h>
2603int main(void)
2604{
2605 fnmatch("foo", "foo", 0);
2606 return 0;
2607}
2608EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002609if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002610 fnmatch="yes"
2611fi
2612
2613##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002614# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002615# Note that on some systems (notably MacOSX) no extra library
2616# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002617if test "$uuid" != "no" ; then
2618 uuid_libs="-luuid"
2619 cat > $TMPC << EOF
2620#include <uuid/uuid.h>
2621int main(void)
2622{
2623 uuid_t my_uuid;
2624 uuid_generate(my_uuid);
2625 return 0;
2626}
2627EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002628 if compile_prog "" "" ; then
2629 uuid="yes"
2630 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002631 uuid="yes"
2632 libs_softmmu="$uuid_libs $libs_softmmu"
2633 libs_tools="$uuid_libs $libs_tools"
2634 else
2635 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002636 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002637 fi
2638 uuid=no
2639 fi
2640fi
2641
Jeff Cody4f18b782013-10-30 10:44:39 -04002642if test "$vhdx" = "yes" ; then
2643 if test "$uuid" = "no" ; then
2644 error_exit "uuid required for VHDX support"
2645 fi
2646elif test "$vhdx" != "no" ; then
2647 if test "$uuid" = "yes" ; then
2648 vhdx=yes
2649 else
2650 vhdx=no
2651 fi
2652fi
2653
Stefan Weilee682d22009-10-01 20:10:37 +02002654##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002655# xfsctl() probe, used for raw-posix
2656if test "$xfs" != "no" ; then
2657 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002658#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002659#include <xfs/xfs.h>
2660int main(void)
2661{
2662 xfsctl(NULL, 0, 0, NULL);
2663 return 0;
2664}
2665EOF
2666 if compile_prog "" "" ; then
2667 xfs="yes"
2668 else
2669 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002670 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002671 fi
2672 xfs=no
2673 fi
2674fi
2675
2676##########################################
ths8a16d272008-07-19 09:56:24 +00002677# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002678if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002679 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002680 cat > $TMPC << EOF
2681#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002682int main(void)
2683{
2684 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002685 char s[] = "";
2686 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002687 return 0;
2688}
ths8a16d272008-07-19 09:56:24 +00002689EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002690 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002691 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002692 libs_softmmu="$vde_libs $libs_softmmu"
2693 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002694 else
2695 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002696 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002697 fi
2698 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002699 fi
ths8a16d272008-07-19 09:56:24 +00002700fi
2701
2702##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002703# netmap support probe
2704# Apart from looking for netmap headers, we make sure that the host API version
2705# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2706# a minor/major version number. Minor new features will be marked with values up
2707# to 15, and if something happens that requires a change to the backend we will
2708# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002709if test "$netmap" != "no" ; then
2710 cat > $TMPC << EOF
2711#include <inttypes.h>
2712#include <net/if.h>
2713#include <net/netmap.h>
2714#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002715#if (NETMAP_API < 11) || (NETMAP_API > 15)
2716#error
2717#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002718int main(void) { return 0; }
2719EOF
2720 if compile_prog "" "" ; then
2721 netmap=yes
2722 else
2723 if test "$netmap" = "yes" ; then
2724 feature_not_found "netmap"
2725 fi
2726 netmap=no
2727 fi
2728fi
2729
2730##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002731# libcap-ng library probe
2732if test "$cap_ng" != "no" ; then
2733 cap_libs="-lcap-ng"
2734 cat > $TMPC << EOF
2735#include <cap-ng.h>
2736int main(void)
2737{
2738 capng_capability_to_name(CAPNG_EFFECTIVE);
2739 return 0;
2740}
2741EOF
2742 if compile_prog "" "$cap_libs" ; then
2743 cap_ng=yes
2744 libs_tools="$cap_libs $libs_tools"
2745 else
2746 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002747 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002748 fi
2749 cap_ng=no
2750 fi
2751fi
2752
2753##########################################
malcc2de5c92008-06-28 19:13:06 +00002754# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002755
malcc2de5c92008-06-28 19:13:06 +00002756audio_drv_probe()
2757{
2758 drv=$1
2759 hdr=$2
2760 lib=$3
2761 exp=$4
2762 cfl=$5
2763 cat > $TMPC << EOF
2764#include <$hdr>
2765int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002766EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002767 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002768 :
2769 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002770 error_exit "$drv check failed" \
2771 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002772 fi
2773}
2774
malc2fa7d3b2008-07-29 12:58:44 +00002775audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002776for drv in $audio_drv_list; do
2777 case $drv in
2778 alsa)
2779 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002780 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002781 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002782 ;;
2783
malcb8e59f12008-07-02 21:03:08 +00002784 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002785 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2786 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2787 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002788 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002789 ;;
2790
Juan Quintela997e6902009-08-03 14:46:29 +02002791 coreaudio)
2792 libs_softmmu="-framework CoreAudio $libs_softmmu"
2793 ;;
2794
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002795 dsound)
2796 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002797 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002798 ;;
2799
2800 oss)
2801 libs_softmmu="$oss_lib $libs_softmmu"
2802 ;;
2803
2804 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002805 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2806 ;;
2807
malce4c63a62008-07-19 16:15:16 +00002808 *)
malc1c9b2a52008-07-19 16:57:30 +00002809 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002810 error_exit "Unknown driver '$drv' selected" \
2811 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002812 }
2813 ;;
malcc2de5c92008-06-28 19:13:06 +00002814 esac
2815done
ths8f28f3f2007-01-05 21:25:54 +00002816
balrog4d3b6f62008-02-10 16:33:14 +00002817##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002818# BrlAPI probe
2819
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002820if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002821 brlapi_libs="-lbrlapi"
2822 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002823#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002824#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002825int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2826EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002827 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002828 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002829 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002830 else
2831 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002832 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002833 fi
2834 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002835 fi
2836fi
aurel322e4d9fb2008-04-08 06:01:02 +00002837
2838##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002839# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002840if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002841 if test "$mingw32" = "yes" ; then
2842 curses_list="-lpdcurses"
2843 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002844 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002845 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002846 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002847 cat > $TMPC << EOF
2848#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002849int main(void) {
2850 const char *s = curses_version();
2851 resize_term(0, 0);
2852 return s != 0;
2853}
balrog4d3b6f62008-02-10 16:33:14 +00002854EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002855 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002856 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002857 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002858 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002859 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002860 libs_softmmu="$curses_lib $libs_softmmu"
2861 break
2862 fi
2863 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002864 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002865 if test "$curses_found" = "yes" ; then
2866 curses=yes
2867 else
2868 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002869 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002870 fi
2871 curses=no
2872 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002873fi
balrog4d3b6f62008-02-10 16:33:14 +00002874
blueswir1414f0da2008-08-15 18:20:52 +00002875##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002876# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002877if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002878 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002879 curlconfig="$pkg_config libcurl"
2880 else
2881 curlconfig=curl-config
2882 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002883 cat > $TMPC << EOF
2884#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002885int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002886EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002887 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2888 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002889 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002890 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002891 else
2892 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002893 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002894 fi
2895 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002896 fi
2897fi # test "$curl"
2898
2899##########################################
balrogfb599c92008-09-28 23:49:55 +00002900# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002901if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002902 cat > $TMPC << EOF
2903#include <bluetooth/bluetooth.h>
2904int main(void) { return bt_error(0); }
2905EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002906 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2907 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002908 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002909 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002910 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002911 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002912 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002913 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002914 fi
balroge820e3f2008-09-30 02:27:44 +00002915 bluez="no"
2916 fi
balrogfb599c92008-09-28 23:49:55 +00002917fi
2918
2919##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002920# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002921
John Snowf40685c2015-05-22 14:13:42 -04002922glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002923glib_modules=gthread-2.0
2924if test "$modules" = yes; then
2925 glib_modules="$glib_modules gmodule-2.0"
2926fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002927
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002928for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002929 if $pkg_config --atleast-version=$glib_req_ver $i; then
2930 glib_cflags=`$pkg_config --cflags $i`
2931 glib_libs=`$pkg_config --libs $i`
2932 CFLAGS="$glib_cflags $CFLAGS"
2933 LIBS="$glib_libs $LIBS"
2934 libs_qga="$glib_libs $libs_qga"
2935 else
2936 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2937 fi
2938done
2939
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002940# g_test_trap_subprocess added in 2.38. Used by some tests.
2941glib_subprocess=yes
2942if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2943 glib_subprocess=no
2944fi
2945
John Snowbbbf2e02015-03-25 18:57:38 -04002946# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2947cat > $TMPC << EOF
2948#include <glib.h>
2949int main(void) { return 0; }
2950EOF
2951if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2952 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2953 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2954 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2955 fi
2956fi
2957
Fam Zhenge26110c2014-02-10 14:48:57 +08002958##########################################
2959# SHA command probe for modules
2960if test "$modules" = yes; then
2961 shacmd_probe="sha1sum sha1 shasum"
2962 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002963 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002964 shacmd="$c"
2965 break
2966 fi
2967 done
2968 if test "$shacmd" = ""; then
2969 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2970 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002971fi
2972
2973##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002974# pixman support probe
2975
2976if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002977 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2978 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002979 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002980 pixman="system"
2981 else
2982 pixman="internal"
2983 fi
2984fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002985if test "$pixman" = "none"; then
2986 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002987 error_exit "pixman disabled but system emulation or tools build" \
2988 "enabled. You can turn off pixman only if you also" \
2989 "disable all system emulation targets and the tools" \
2990 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002991 fi
2992 pixman_cflags=
2993 pixman_libs=
2994elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002995 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002996 pixman_cflags=`$pkg_config --cflags pixman-1`
2997 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002998else
2999 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003000 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003001 " (1) Preferred: Install the pixman devel package (any recent" \
3002 " distro should have packages as Xorg needs pixman too)." \
3003 " (2) Fetch the pixman submodule, using:" \
3004 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003005 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003006 mkdir -p pixman/pixman
3007 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3008 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003009fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003010
3011##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303012# libcap probe
3013
3014if test "$cap" != "no" ; then
3015 cat > $TMPC <<EOF
3016#include <stdio.h>
3017#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003018int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303019EOF
3020 if compile_prog "" "-lcap" ; then
3021 cap=yes
3022 else
3023 cap=no
3024 fi
3025fi
3026
3027##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003028# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003029PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003030
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003031pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003032cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003033#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003034static void *f(void *p) { return NULL; }
3035int main(void) {
3036 pthread_t thread;
3037 pthread_create(&thread, 0, f, 0);
3038 return 0;
3039}
blueswir1414f0da2008-08-15 18:20:52 +00003040EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003041if compile_prog "" "" ; then
3042 pthread=yes
3043else
3044 for pthread_lib in $PTHREADLIBS_LIST; do
3045 if compile_prog "" "$pthread_lib" ; then
3046 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003047 found=no
3048 for lib_entry in $LIBS; do
3049 if test "$lib_entry" = "$pthread_lib"; then
3050 found=yes
3051 break
3052 fi
3053 done
3054 if test "$found" = "no"; then
3055 LIBS="$pthread_lib $LIBS"
3056 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003057 break
3058 fi
3059 done
3060fi
blueswir1414f0da2008-08-15 18:20:52 +00003061
Anthony Liguori4617e592009-08-25 17:21:56 -05003062if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003063 error_exit "pthread check failed" \
3064 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003065fi
3066
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003067# check for pthread_setname_np
3068pthread_setname_np=no
3069cat > $TMPC << EOF
3070#include <pthread.h>
3071
3072static void *f(void *p) { return NULL; }
3073int main(void)
3074{
3075 pthread_t thread;
3076 pthread_create(&thread, 0, f, 0);
3077 pthread_setname_np(thread, "QEMU");
3078 return 0;
3079}
3080EOF
3081if compile_prog "" "$pthread_lib" ; then
3082 pthread_setname_np=yes
3083fi
3084
aliguoribf9298b2008-12-05 20:05:26 +00003085##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003086# rbd probe
3087if test "$rbd" != "no" ; then
3088 cat > $TMPC <<EOF
3089#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003090#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003091int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003092 rados_t cluster;
3093 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003094 return 0;
3095}
3096EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003097 rbd_libs="-lrbd -lrados"
3098 if compile_prog "" "$rbd_libs" ; then
3099 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003100 else
3101 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003102 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003103 fi
3104 rbd=no
3105 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003106fi
3107
3108##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003109# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003110min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003111if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003112 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003113 libssh2_cflags=`$pkg_config libssh2 --cflags`
3114 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003115 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003116 else
3117 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003118 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003119 fi
3120 libssh2=no
3121 fi
3122fi
3123
3124##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003125# libssh2_sftp_fsync probe
3126
3127if test "$libssh2" = "yes"; then
3128 cat > $TMPC <<EOF
3129#include <stdio.h>
3130#include <libssh2.h>
3131#include <libssh2_sftp.h>
3132int main(void) {
3133 LIBSSH2_SESSION *session;
3134 LIBSSH2_SFTP *sftp;
3135 LIBSSH2_SFTP_HANDLE *sftp_handle;
3136 session = libssh2_session_init ();
3137 sftp = libssh2_sftp_init (session);
3138 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3139 libssh2_sftp_fsync (sftp_handle);
3140 return 0;
3141}
3142EOF
3143 # libssh2_cflags/libssh2_libs defined in previous test.
3144 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3145 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3146 fi
3147fi
3148
3149##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003150# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003151
3152if test "$linux_aio" != "no" ; then
3153 cat > $TMPC <<EOF
3154#include <libaio.h>
3155#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003156#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003157int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3158EOF
3159 if compile_prog "" "-laio" ; then
3160 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003161 else
3162 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003163 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003164 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003165 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003166 fi
3167fi
3168
3169##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003170# TPM passthrough is only on x86 Linux
3171
3172if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3173 tpm_passthrough=$tpm
3174else
3175 tpm_passthrough=no
3176fi
3177
3178##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003179# attr probe
3180
3181if test "$attr" != "no" ; then
3182 cat > $TMPC <<EOF
3183#include <stdio.h>
3184#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003185#ifdef CONFIG_LIBATTR
3186#include <attr/xattr.h>
3187#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003188#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003189#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003190int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3191EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003192 if compile_prog "" "" ; then
3193 attr=yes
3194 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003195 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003196 attr=yes
3197 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003198 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003199 else
3200 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003201 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003202 fi
3203 attr=no
3204 fi
3205fi
3206
3207##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003208# iovec probe
3209cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003210#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003211#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003212#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003213int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003214EOF
3215iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003216if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003217 iovec=yes
3218fi
3219
aurel32f652e6a2008-12-16 10:43:48 +00003220##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003221# preadv probe
3222cat > $TMPC <<EOF
3223#include <sys/types.h>
3224#include <sys/uio.h>
3225#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003226int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003227EOF
3228preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003229if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003230 preadv=yes
3231fi
3232
3233##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003234# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003235# fdt support is mandatory for at least some target architectures,
3236# so insist on it if we're building those system emulators.
3237fdt_required=no
3238for target in $target_list; do
3239 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003240 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003241 fdt_required=yes
3242 ;;
3243 esac
3244done
3245
3246if test "$fdt_required" = "yes"; then
3247 if test "$fdt" = "no"; then
3248 error_exit "fdt disabled but some requested targets require it." \
3249 "You can turn off fdt only if you also disable all the system emulation" \
3250 "targets which need it (by specifying a cut down --target-list)."
3251 fi
3252 fdt=yes
3253fi
3254
Juan Quintela2df87df2009-08-12 18:29:54 +02003255if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003256 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003257 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003258 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003259 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003260#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003261#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003262int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003263EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003264 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003265 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003266 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003267 elif test -d ${source_path}/dtc/libfdt ; then
3268 # have submodule DTC - use it
3269 fdt=yes
3270 dtc_internal="yes"
3271 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003272 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003273 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3274 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003275 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003276 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3277 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3278 elif test "$fdt" = "yes" ; then
3279 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003280 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003281 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003282 " (2) Fetch the DTC submodule, using:" \
3283 " git submodule update --init dtc"
3284 else
3285 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003286 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003287 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003288 fi
3289fi
3290
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003291libs_softmmu="$libs_softmmu $fdt_libs"
3292
Michael Walle20ff0752011-03-07 23:32:39 +01003293##########################################
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003294# opengl probe (for sdl2, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003295
3296# GLX probe, used by milkymist-tmu2
3297# this is temporary, code will be switched to egl mid-term.
3298cat > $TMPC << EOF
3299#include <X11/Xlib.h>
3300#include <GL/gl.h>
3301#include <GL/glx.h>
3302int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3303EOF
3304if compile_prog "" "-lGL -lX11" ; then
3305 have_glx=yes
3306else
3307 have_glx=no
3308fi
3309
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003310if test "$opengl" != "no" ; then
Gerd Hoffmann7ced9e92015-01-06 15:40:00 +01003311 opengl_pkgs="gl glesv2 epoxy egl"
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003312 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003313 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3314 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003315 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003316 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3317 gtk_gl="yes"
3318 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003319 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003320 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003321 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003322 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003323 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003324 opengl_libs=""
3325 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003326 fi
3327fi
3328
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003329
3330##########################################
3331# archipelago probe
3332if test "$archipelago" != "no" ; then
3333 cat > $TMPC <<EOF
3334#include <stdio.h>
3335#include <xseg/xseg.h>
3336#include <xseg/protocol.h>
3337int main(void) {
3338 xseg_initialize();
3339 return 0;
3340}
3341EOF
3342 archipelago_libs=-lxseg
3343 if compile_prog "" "$archipelago_libs"; then
3344 archipelago="yes"
3345 libs_tools="$archipelago_libs $libs_tools"
3346 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003347
3348 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3349 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3350 echo "license and therefore prevent redistribution."
3351 echo
3352 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003353 else
3354 if test "$archipelago" = "yes" ; then
3355 feature_not_found "Archipelago backend support" "Install libxseg devel"
3356 fi
3357 archipelago="no"
3358 fi
3359fi
3360
3361
Bharata B Raoeb100392012-09-24 14:42:45 +05303362##########################################
3363# glusterfs probe
3364if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003365 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303366 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003367 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3368 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003369 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303370 glusterfs_discard="yes"
3371 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303372 if $pkg_config --atleast-version=6 glusterfs-api; then
3373 glusterfs_zerofill="yes"
3374 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303375 else
3376 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003377 feature_not_found "GlusterFS backend support" \
3378 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303379 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303380 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303381 fi
3382fi
3383
aurel3239386ac2009-04-15 19:48:17 +00003384# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003385# emulator. This is done because older glibc versions don't
3386# have syscall stubs for these implemented. In that case we
3387# don't provide them even if kernel supports them.
3388#
3389inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003390cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003391#include <sys/inotify.h>
3392
3393int
3394main(void)
3395{
3396 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003397 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003398}
3399EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003400if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003401 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003402fi
3403
Riku Voipioc05c7a72010-03-26 15:25:11 +00003404inotify1=no
3405cat > $TMPC << EOF
3406#include <sys/inotify.h>
3407
3408int
3409main(void)
3410{
3411 /* try to start inotify */
3412 return inotify_init1(0);
3413}
3414EOF
3415if compile_prog "" "" ; then
3416 inotify1=yes
3417fi
3418
Riku Voipioebc996f2009-04-21 15:01:51 +03003419# check if utimensat and futimens are supported
3420utimens=no
3421cat > $TMPC << EOF
3422#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003423#include <stddef.h>
3424#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003425#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003426
3427int main(void)
3428{
3429 utimensat(AT_FDCWD, "foo", NULL, 0);
3430 futimens(0, NULL);
3431 return 0;
3432}
3433EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003434if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003435 utimens=yes
3436fi
3437
Riku Voipio099d6b02009-05-05 12:10:04 +03003438# check if pipe2 is there
3439pipe2=no
3440cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003441#include <unistd.h>
3442#include <fcntl.h>
3443
3444int main(void)
3445{
3446 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003447 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003448}
3449EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003450if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003451 pipe2=yes
3452fi
3453
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003454# check if accept4 is there
3455accept4=no
3456cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003457#include <sys/socket.h>
3458#include <stddef.h>
3459
3460int main(void)
3461{
3462 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3463 return 0;
3464}
3465EOF
3466if compile_prog "" "" ; then
3467 accept4=yes
3468fi
3469
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303470# check if tee/splice is there. vmsplice was added same time.
3471splice=no
3472cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303473#include <unistd.h>
3474#include <fcntl.h>
3475#include <limits.h>
3476
3477int main(void)
3478{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003479 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303480 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3481 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3482 return 0;
3483}
3484EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003485if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303486 splice=yes
3487fi
3488
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003489##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003490# libnuma probe
3491
3492if test "$numa" != "no" ; then
3493 cat > $TMPC << EOF
3494#include <numa.h>
3495int main(void) { return numa_available(); }
3496EOF
3497
3498 if compile_prog "" "-lnuma" ; then
3499 numa=yes
3500 libs_softmmu="-lnuma $libs_softmmu"
3501 else
3502 if test "$numa" = "yes" ; then
3503 feature_not_found "numa" "install numactl devel"
3504 fi
3505 numa=no
3506 fi
3507fi
3508
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003509if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3510 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3511 exit 1
3512fi
3513
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003514##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003515# tcmalloc probe
3516
3517if test "$tcmalloc" = "yes" ; then
3518 cat > $TMPC << EOF
3519#include <stdlib.h>
3520int main(void) { malloc(1); return 0; }
3521EOF
3522
3523 if compile_prog "" "-ltcmalloc" ; then
3524 LIBS="-ltcmalloc $LIBS"
3525 else
3526 feature_not_found "tcmalloc" "install gperftools devel"
3527 fi
3528fi
3529
3530##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003531# jemalloc probe
3532
3533if test "$jemalloc" = "yes" ; then
3534 cat > $TMPC << EOF
3535#include <stdlib.h>
3536int main(void) { malloc(1); return 0; }
3537EOF
3538
3539 if compile_prog "" "-ljemalloc" ; then
3540 LIBS="-ljemalloc $LIBS"
3541 else
3542 feature_not_found "jemalloc" "install jemalloc devel"
3543 fi
3544fi
3545
3546##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003547# signalfd probe
3548signalfd="no"
3549cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003550#include <unistd.h>
3551#include <sys/syscall.h>
3552#include <signal.h>
3553int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3554EOF
3555
3556if compile_prog "" "" ; then
3557 signalfd=yes
3558fi
3559
Riku Voipioc2882b92009-08-12 15:08:24 +03003560# check if eventfd is supported
3561eventfd=no
3562cat > $TMPC << EOF
3563#include <sys/eventfd.h>
3564
3565int main(void)
3566{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003567 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003568}
3569EOF
3570if compile_prog "" "" ; then
3571 eventfd=yes
3572fi
3573
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003574# check if memfd is supported
3575memfd=no
3576cat > $TMPC << EOF
3577#include <sys/memfd.h>
3578
3579int main(void)
3580{
3581 return memfd_create("foo", MFD_ALLOW_SEALING);
3582}
3583EOF
3584if compile_prog "" "" ; then
3585 memfd=yes
3586fi
3587
3588
3589
Ulrich Hechtd0927932009-09-17 20:22:14 +03003590# check for fallocate
3591fallocate=no
3592cat > $TMPC << EOF
3593#include <fcntl.h>
3594
3595int main(void)
3596{
3597 fallocate(0, 0, 0, 0);
3598 return 0;
3599}
3600EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003601if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003602 fallocate=yes
3603fi
3604
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003605# check for fallocate hole punching
3606fallocate_punch_hole=no
3607cat > $TMPC << EOF
3608#include <fcntl.h>
3609#include <linux/falloc.h>
3610
3611int main(void)
3612{
3613 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3614 return 0;
3615}
3616EOF
3617if compile_prog "" "" ; then
3618 fallocate_punch_hole=yes
3619fi
3620
Denis V. Lunevb953f072015-01-30 11:42:14 +03003621# check that fallocate supports range zeroing inside the file
3622fallocate_zero_range=no
3623cat > $TMPC << EOF
3624#include <fcntl.h>
3625#include <linux/falloc.h>
3626
3627int main(void)
3628{
3629 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3630 return 0;
3631}
3632EOF
3633if compile_prog "" "" ; then
3634 fallocate_zero_range=yes
3635fi
3636
Kevin Wolfed911432014-09-29 17:12:59 +02003637# check for posix_fallocate
3638posix_fallocate=no
3639cat > $TMPC << EOF
3640#include <fcntl.h>
3641
3642int main(void)
3643{
3644 posix_fallocate(0, 0, 0);
3645 return 0;
3646}
3647EOF
3648if compile_prog "" "" ; then
3649 posix_fallocate=yes
3650fi
3651
Peter Maydellc727f472011-01-06 11:05:10 +00003652# check for sync_file_range
3653sync_file_range=no
3654cat > $TMPC << EOF
3655#include <fcntl.h>
3656
3657int main(void)
3658{
3659 sync_file_range(0, 0, 0, 0);
3660 return 0;
3661}
3662EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003663if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003664 sync_file_range=yes
3665fi
3666
Peter Maydelldace20d2011-01-10 13:11:24 +00003667# check for linux/fiemap.h and FS_IOC_FIEMAP
3668fiemap=no
3669cat > $TMPC << EOF
3670#include <sys/ioctl.h>
3671#include <linux/fs.h>
3672#include <linux/fiemap.h>
3673
3674int main(void)
3675{
3676 ioctl(0, FS_IOC_FIEMAP, 0);
3677 return 0;
3678}
3679EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003680if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003681 fiemap=yes
3682fi
3683
Ulrich Hechtd0927932009-09-17 20:22:14 +03003684# check for dup3
3685dup3=no
3686cat > $TMPC << EOF
3687#include <unistd.h>
3688
3689int main(void)
3690{
3691 dup3(0, 0, 0);
3692 return 0;
3693}
3694EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003695if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003696 dup3=yes
3697fi
3698
Alex Bligh4e0c6522013-08-21 16:02:43 +01003699# check for ppoll support
3700ppoll=no
3701cat > $TMPC << EOF
3702#include <poll.h>
3703
3704int main(void)
3705{
3706 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3707 ppoll(&pfd, 1, 0, 0);
3708 return 0;
3709}
3710EOF
3711if compile_prog "" "" ; then
3712 ppoll=yes
3713fi
3714
Alex Blighcd758dd2013-08-21 16:02:44 +01003715# check for prctl(PR_SET_TIMERSLACK , ... ) support
3716prctl_pr_set_timerslack=no
3717cat > $TMPC << EOF
3718#include <sys/prctl.h>
3719
3720int main(void)
3721{
3722 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3723 return 0;
3724}
3725EOF
3726if compile_prog "" "" ; then
3727 prctl_pr_set_timerslack=yes
3728fi
3729
Peter Maydell3b6edd12011-02-15 18:35:05 +00003730# check for epoll support
3731epoll=no
3732cat > $TMPC << EOF
3733#include <sys/epoll.h>
3734
3735int main(void)
3736{
3737 epoll_create(0);
3738 return 0;
3739}
3740EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003741if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003742 epoll=yes
3743fi
3744
3745# epoll_create1 and epoll_pwait are later additions
3746# so we must check separately for their presence
3747epoll_create1=no
3748cat > $TMPC << EOF
3749#include <sys/epoll.h>
3750
3751int main(void)
3752{
Peter Maydell19e83f62011-04-26 16:56:40 +01003753 /* Note that we use epoll_create1 as a value, not as
3754 * a function being called. This is necessary so that on
3755 * old SPARC glibc versions where the function was present in
3756 * the library but not declared in the header file we will
3757 * fail the configure check. (Otherwise we will get a compiler
3758 * warning but not an error, and will proceed to fail the
3759 * qemu compile where we compile with -Werror.)
3760 */
Blue Swirlc075a722012-08-09 20:21:25 +00003761 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003762}
3763EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003764if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003765 epoll_create1=yes
3766fi
3767
3768epoll_pwait=no
3769cat > $TMPC << EOF
3770#include <sys/epoll.h>
3771
3772int main(void)
3773{
3774 epoll_pwait(0, 0, 0, 0, 0);
3775 return 0;
3776}
3777EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003778if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003779 epoll_pwait=yes
3780fi
3781
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003782# check for sendfile support
3783sendfile=no
3784cat > $TMPC << EOF
3785#include <sys/sendfile.h>
3786
3787int main(void)
3788{
3789 return sendfile(0, 0, 0, 0);
3790}
3791EOF
3792if compile_prog "" "" ; then
3793 sendfile=yes
3794fi
3795
Riku Voipio51834342014-06-22 11:25:42 +01003796# check for timerfd support (glibc 2.8 and newer)
3797timerfd=no
3798cat > $TMPC << EOF
3799#include <sys/timerfd.h>
3800
3801int main(void)
3802{
3803 return(timerfd_create(CLOCK_REALTIME, 0));
3804}
3805EOF
3806if compile_prog "" "" ; then
3807 timerfd=yes
3808fi
3809
Riku Voipio9af5c902014-08-12 15:58:57 +03003810# check for setns and unshare support
3811setns=no
3812cat > $TMPC << EOF
3813#include <sched.h>
3814
3815int main(void)
3816{
3817 int ret;
3818 ret = setns(0, 0);
3819 ret = unshare(0);
3820 return ret;
3821}
3822EOF
3823if compile_prog "" "" ; then
3824 setns=yes
3825fi
3826
pbrookcc8ae6d2006-04-23 17:57:59 +00003827# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003828if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003829 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003830 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003831 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003832 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003833 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003834 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003835 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003836 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003837fi
3838
Stefan Weilf514f412009-10-11 12:44:07 +02003839# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003840byteswap_h=no
3841cat > $TMPC << EOF
3842#include <byteswap.h>
3843int main(void) { return bswap_32(0); }
3844EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003845if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003846 byteswap_h=yes
3847fi
3848
Stefan Weil75f13592013-01-05 12:17:38 +01003849# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003850bswap_h=no
3851cat > $TMPC << EOF
3852#include <sys/endian.h>
3853#include <sys/types.h>
3854#include <machine/bswap.h>
3855int main(void) { return bswap32(0); }
3856EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003857if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003858 bswap_h=yes
3859fi
3860
aliguorida93a1f2008-12-12 20:02:52 +00003861##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003862# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003863if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003864 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003865 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003866 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3867 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003868 else
3869 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003870 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003871 fi
3872 libiscsi="no"
3873 fi
3874fi
3875
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003876##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003877# Do we need libm
3878cat > $TMPC << EOF
3879#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003880int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003881EOF
3882if compile_prog "" "" ; then
3883 :
3884elif compile_prog "" "-lm" ; then
3885 LIBS="-lm $LIBS"
3886 libs_qga="-lm $libs_qga"
3887else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003888 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003889fi
3890
3891##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003892# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003893# uClibc provides 2 versions of clock_gettime(), one with realtime
3894# support and one without. This means that the clock_gettime() don't
3895# need -lrt. We still need it for timer_create() so we check for this
3896# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003897cat > $TMPC <<EOF
3898#include <signal.h>
3899#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003900int main(void) {
3901 timer_create(CLOCK_REALTIME, NULL, NULL);
3902 return clock_gettime(CLOCK_REALTIME, NULL);
3903}
aliguorida93a1f2008-12-12 20:02:52 +00003904EOF
3905
Juan Quintela52166aa2009-08-03 14:46:03 +02003906if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003907 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003908# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003909elif compile_prog "" "$pthread_lib -lrt" ; then
3910 LIBS="$LIBS -lrt"
3911 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003912fi
3913
Blue Swirl31ff5042009-09-12 12:33:07 +00003914if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003915 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003916 libs_softmmu="-lutil $libs_softmmu"
3917fi
3918
Blue Swirlde5071c2009-09-12 09:58:46 +00003919##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003920# spice probe
3921if test "$spice" != "no" ; then
3922 cat > $TMPC << EOF
3923#include <spice.h>
3924int main(void) { spice_server_new(); return 0; }
3925EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003926 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3927 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003928 if $pkg_config --atleast-version=0.12.0 spice-server && \
3929 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003930 compile_prog "$spice_cflags" "$spice_libs" ; then
3931 spice="yes"
3932 libs_softmmu="$libs_softmmu $spice_libs"
3933 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003934 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3935 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003936 else
3937 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003938 feature_not_found "spice" \
3939 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003940 fi
3941 spice="no"
3942 fi
3943fi
3944
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003945# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003946smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003947if test "$smartcard" != "no"; then
3948 if $pkg_config libcacard; then
3949 libcacard_cflags=$($pkg_config --cflags libcacard)
3950 libcacard_libs=$($pkg_config --libs libcacard)
3951 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3952 libs_softmmu="$libs_softmmu $libcacard_libs"
3953 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003954 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003955 if test "$smartcard" = "yes"; then
3956 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003957 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003958 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003959 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003960fi
3961
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003962# check for libusb
3963if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003964 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003965 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003966 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3967 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003968 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3969 libs_softmmu="$libs_softmmu $libusb_libs"
3970 else
3971 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003972 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003973 fi
3974 libusb="no"
3975 fi
3976fi
3977
Hans de Goede69354a82011-07-19 11:04:10 +02003978# check for usbredirparser for usb network redirection support
3979if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003980 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003981 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003982 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3983 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003984 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003985 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003986 else
3987 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003988 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003989 fi
3990 usb_redir="no"
3991 fi
3992fi
3993
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003994##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003995# check if we have VSS SDK headers for win
3996
3997if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3998 case "$vss_win32_sdk" in
3999 "") vss_win32_include="-I$source_path" ;;
4000 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4001 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4002 vss_win32_include="-I$source_path/.sdk/vss"
4003 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4004 ;;
4005 *) vss_win32_include="-I$vss_win32_sdk"
4006 esac
4007 cat > $TMPC << EOF
4008#define __MIDL_user_allocate_free_DEFINED__
4009#include <inc/win2003/vss.h>
4010int main(void) { return VSS_CTX_BACKUP; }
4011EOF
4012 if compile_prog "$vss_win32_include" "" ; then
4013 guest_agent_with_vss="yes"
4014 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4015 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004016 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004017 else
4018 if test "$vss_win32_sdk" != "" ; then
4019 echo "ERROR: Please download and install Microsoft VSS SDK:"
4020 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4021 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4022 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4023 echo "ERROR: The headers are extracted in the directory \`inc'."
4024 feature_not_found "VSS support"
4025 fi
4026 guest_agent_with_vss="no"
4027 fi
4028fi
4029
4030##########################################
4031# lookup Windows platform SDK (if not specified)
4032# The SDK is needed only to build .tlb (type library) file of guest agent
4033# VSS provider from the source. It is usually unnecessary because the
4034# pre-compiled .tlb file is included.
4035
4036if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4037 if test -z "$win_sdk"; then
4038 programfiles="$PROGRAMFILES"
4039 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4040 if test -n "$programfiles"; then
4041 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4042 else
4043 feature_not_found "Windows SDK"
4044 fi
4045 elif test "$win_sdk" = "no"; then
4046 win_sdk=""
4047 fi
4048fi
4049
4050##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004051# check if mingw environment provides a recent ntddscsi.h
4052if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4053 cat > $TMPC << EOF
4054#include <windows.h>
4055#include <ntddscsi.h>
4056int main(void) {
4057#if !defined(IOCTL_SCSI_GET_ADDRESS)
4058#error Missing required ioctl definitions
4059#endif
4060 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4061 return addr.Lun;
4062}
4063EOF
4064 if compile_prog "" "" ; then
4065 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004066 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004067 fi
4068fi
4069
4070##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004071# virgl renderer probe
4072
4073if test "$virglrenderer" != "no" ; then
4074 cat > $TMPC << EOF
4075#include <virglrenderer.h>
4076int main(void) { virgl_renderer_poll(); return 0; }
4077EOF
4078 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4079 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4080 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4081 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4082 virglrenderer="yes"
4083 else
4084 if test "$virglrenderer" = "yes" ; then
4085 feature_not_found "virglrenderer"
4086 fi
4087 virglrenderer="no"
4088 fi
4089fi
4090
4091##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004092# check if we have fdatasync
4093
4094fdatasync=no
4095cat > $TMPC << EOF
4096#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004097int main(void) {
4098#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4099return fdatasync(0);
4100#else
Stefan Weile172fe12012-04-06 21:33:20 +02004101#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004102#endif
4103}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004104EOF
4105if compile_prog "" "" ; then
4106 fdatasync=yes
4107fi
4108
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004109##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004110# check if we have madvise
4111
4112madvise=no
4113cat > $TMPC << EOF
4114#include <sys/types.h>
4115#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004116#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004117int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4118EOF
4119if compile_prog "" "" ; then
4120 madvise=yes
4121fi
4122
4123##########################################
4124# check if we have posix_madvise
4125
4126posix_madvise=no
4127cat > $TMPC << EOF
4128#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004129#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004130int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4131EOF
4132if compile_prog "" "" ; then
4133 posix_madvise=yes
4134fi
4135
4136##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004137# check if we have usable SIGEV_THREAD_ID
4138
4139sigev_thread_id=no
4140cat > $TMPC << EOF
4141#include <signal.h>
4142int main(void) {
4143 struct sigevent ev;
4144 ev.sigev_notify = SIGEV_THREAD_ID;
4145 ev._sigev_un._tid = 0;
4146 asm volatile("" : : "g"(&ev));
4147 return 0;
4148}
4149EOF
4150if compile_prog "" "" ; then
4151 sigev_thread_id=yes
4152fi
4153
4154##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004155# check if trace backend exists
4156
Lluís Vilanova5b808272014-05-27 15:02:14 +02004157$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004158if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004159 error_exit "invalid trace backends" \
4160 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004161fi
4162
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004163##########################################
4164# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004165if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004166 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004167#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004168int main(void) { return 0; }
4169EOF
4170 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004171 if $pkg_config lttng-ust --exists; then
4172 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4173 else
4174 lttng_ust_libs="-llttng-ust"
4175 fi
4176 if $pkg_config liburcu-bp --exists; then
4177 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4178 else
4179 urcu_bp_libs="-lurcu-bp"
4180 fi
4181
4182 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4183 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004184 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004185 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004186 fi
4187fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004188
4189##########################################
4190# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004191if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004192 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004193 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004194 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004195 trace_backend_stap="no"
4196 if has 'stap' ; then
4197 trace_backend_stap="yes"
4198 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004199fi
4200
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004201##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004202# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304203
Peter Maydell7c2acc72013-04-08 12:11:27 +01004204# We prefer ucontext, but it's not always possible. The fallback
4205# is sigcontext. gthread is not selectable except explicitly, because
4206# it is not functional enough to run QEMU proper. (It is occasionally
4207# useful for debugging purposes.) On Windows the only valid backend
4208# is the Windows-specific one.
4209
4210ucontext_works=no
4211if test "$darwin" != "yes"; then
4212 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304213#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004214#ifdef __stub_makecontext
4215#error Ignoring glibc stub makecontext which will always fail
4216#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004217int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304218EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004219 if compile_prog "" "" ; then
4220 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304221 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004222fi
4223
4224if test "$coroutine" = ""; then
4225 if test "$mingw32" = "yes"; then
4226 coroutine=win32
4227 elif test "$ucontext_works" = "yes"; then
4228 coroutine=ucontext
4229 else
4230 coroutine=sigaltstack
4231 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004232else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004233 case $coroutine in
4234 windows)
4235 if test "$mingw32" != "yes"; then
4236 error_exit "'windows' coroutine backend only valid for Windows"
4237 fi
4238 # Unfortunately the user visible backend name doesn't match the
4239 # coroutine-*.c filename for this case, so we have to adjust it here.
4240 coroutine=win32
4241 ;;
4242 ucontext)
4243 if test "$ucontext_works" != "yes"; then
4244 feature_not_found "ucontext"
4245 fi
4246 ;;
4247 gthread|sigaltstack)
4248 if test "$mingw32" = "yes"; then
4249 error_exit "only the 'windows' coroutine backend is valid for Windows"
4250 fi
4251 ;;
4252 *)
4253 error_exit "unknown coroutine backend $coroutine"
4254 ;;
4255 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304256fi
4257
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004258if test "$coroutine_pool" = ""; then
4259 if test "$coroutine" = "gthread"; then
4260 coroutine_pool=no
4261 else
4262 coroutine_pool=yes
4263 fi
4264fi
4265if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4266 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4267fi
4268
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304269##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304270# check if we have open_by_handle_at
4271
Stefan Weil4e1797f2012-06-18 22:11:06 +02004272open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304273cat > $TMPC << EOF
4274#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004275#if !defined(AT_EMPTY_PATH)
4276# error missing definition
4277#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004278int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004279#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304280EOF
4281if compile_prog "" "" ; then
4282 open_by_handle_at=yes
4283fi
4284
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304285########################################
4286# check if we have linux/magic.h
4287
4288linux_magic_h=no
4289cat > $TMPC << EOF
4290#include <linux/magic.h>
4291int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004292 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304293}
4294EOF
4295if compile_prog "" "" ; then
4296 linux_magic_h=yes
4297fi
4298
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004299########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004300# check whether we can disable warning option with a pragma (this is needed
4301# to silence warnings in the headers of some versions of external libraries).
4302# This test has to be compiled with -Werror as otherwise an unknown pragma is
4303# only a warning.
4304#
4305# If we can't selectively disable warning in the code, disable -Werror so that
4306# the build doesn't fail anyway.
4307
Peter Maydell06d71fa2012-07-30 16:13:07 +01004308pragma_disable_unused_but_set=no
4309cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004310#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004311#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004312#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004313#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004314
Peter Maydell06d71fa2012-07-30 16:13:07 +01004315int main(void) {
4316 return 0;
4317}
4318EOF
4319if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004320 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004321else
4322 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004323fi
4324
4325########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004326# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004327
4328valgrind_h=no
4329cat > $TMPC << EOF
4330#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004331int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004332 return 0;
4333}
4334EOF
4335if compile_prog "" "" ; then
4336 valgrind_h=yes
4337fi
4338
4339########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004340# check if environ is declared
4341
4342has_environ=no
4343cat > $TMPC << EOF
4344#include <unistd.h>
4345int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004346 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004347 return 0;
4348}
4349EOF
4350if compile_prog "" "" ; then
4351 has_environ=yes
4352fi
4353
Richard Henderson76a347e2012-12-28 14:17:02 -08004354########################################
4355# check if cpuid.h is usable.
4356
4357cpuid_h=no
4358cat > $TMPC << EOF
4359#include <cpuid.h>
4360int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004361 unsigned a, b, c, d;
4362 int max = __get_cpuid_max(0, 0);
4363
4364 if (max >= 1) {
4365 __cpuid(1, a, b, c, d);
4366 }
4367
4368 if (max >= 7) {
4369 __cpuid_count(7, 0, a, b, c, d);
4370 }
4371
4372 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004373}
4374EOF
4375if compile_prog "" "" ; then
4376 cpuid_h=yes
4377fi
4378
Richard Hendersonf5401662013-02-16 12:46:59 -08004379########################################
4380# check if __[u]int128_t is usable.
4381
4382int128=no
4383cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004384#if defined(__clang_major__) && defined(__clang_minor__)
4385# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4386# error __int128_t does not work in CLANG before 3.2
4387# endif
4388#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004389__int128_t a;
4390__uint128_t b;
4391int main (void) {
4392 a = a + b;
4393 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004394 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004395 return 0;
4396}
4397EOF
4398if compile_prog "" "" ; then
4399 int128=yes
4400fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004401
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004402########################################
4403# check if getauxval is available.
4404
4405getauxval=no
4406cat > $TMPC << EOF
4407#include <sys/auxv.h>
4408int main(void) {
4409 return getauxval(AT_HWCAP) == 0;
4410}
4411EOF
4412if compile_prog "" "" ; then
4413 getauxval=yes
4414fi
4415
John Snowfd0e6052015-03-25 18:57:39 -04004416########################################
4417# check if ccache is interfering with
4418# semantic analysis of macros
4419
John Snow5e4dfd32015-10-28 13:56:40 -04004420unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004421ccache_cpp2=no
4422cat > $TMPC << EOF
4423static const int Z = 1;
4424#define fn() ({ Z; })
4425#define TAUT(X) ((X) == Z)
4426#define PAREN(X, Y) (X == Y)
4427#define ID(X) (X)
4428int main(int argc, char *argv[])
4429{
4430 int x = 0, y = 0;
4431 x = ID(x);
4432 x = fn();
4433 fn();
4434 if (PAREN(x, y)) return 0;
4435 if (TAUT(Z)) return 0;
4436 return 0;
4437}
4438EOF
4439
4440if ! compile_object "-Werror"; then
4441 ccache_cpp2=yes
4442fi
4443
John Snowb553a042015-11-03 15:43:42 -05004444#################################################
4445# clang does not support glibc + FORTIFY_SOURCE.
4446
4447if test "$fortify_source" != "no"; then
4448 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4449 fortify_source="no";
4450 elif echo | $cxx -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4451 fortify_source="no";
4452 else
4453 fortify_source="yes"
4454 fi
4455fi
4456
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304457##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004458# End of CC checks
4459# After here, no more $cc or $ld runs
4460
Blue Swirl1d728c32012-05-01 18:45:39 +00004461if test "$gcov" = "yes" ; then
4462 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4463 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004464elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004465 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004466fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004467
Peter Lieven6542aa92014-02-03 10:26:13 +01004468##########################################
4469# Do we have libnfs
4470if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004471 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004472 libnfs="yes"
4473 libnfs_libs=$($pkg_config --libs libnfs)
4474 LIBS="$LIBS $libnfs_libs"
4475 else
4476 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004477 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004478 fi
4479 libnfs="no"
4480 fi
4481fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004482
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004483# Disable zero malloc errors for official releases unless explicitly told to
4484# enable/disable
4485if test -z "$zero_malloc" ; then
4486 if test "$z_version" = "50" ; then
4487 zero_malloc="no"
4488 else
4489 zero_malloc="yes"
4490 fi
4491fi
4492
Peter Maydell6ca026c2012-07-18 15:10:18 +01004493# Now we've finished running tests it's OK to add -Werror to the compiler flags
4494if test "$werror" = "yes"; then
4495 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4496fi
4497
Juan Quintelae86ecd42009-08-03 14:45:59 +02004498if test "$solaris" = "no" ; then
4499 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004500 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004501 fi
4502fi
4503
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004504# test if pod2man has --utf8 option
4505if pod2man --help | grep -q utf8; then
4506 POD2MAN="pod2man --utf8"
4507else
4508 POD2MAN="pod2man"
4509fi
4510
Blue Swirl952afb72010-09-19 08:36:34 +00004511# Use ASLR, no-SEH and DEP if available
4512if test "$mingw32" = "yes" ; then
4513 for flag in --dynamicbase --no-seh --nxcompat; do
4514 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4515 LDFLAGS="-Wl,$flag $LDFLAGS"
4516 fi
4517 done
4518fi
4519
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004520qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004521qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004522qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004523qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004524
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004525tools=""
4526if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004527 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004528 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4529 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004530 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004531 fi
4532fi
4533if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304534 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004535 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4536 virtfs=yes
4537 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4538 else
4539 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004540 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304541 fi
Andreas Färber17500372012-05-01 01:12:03 +02004542 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004543 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304544 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004545fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004546
4547# Probe for guest agent support/options
4548
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004549if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004550 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004551 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004552 guest_agent=yes
4553 elif [ "$guest_agent" != yes ]; then
4554 guest_agent=no
4555 else
4556 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004557 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004558fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004559
Michael Roth9d6bc272015-08-26 10:49:13 -05004560# Guest agent Window MSI package
4561
4562if test "$guest_agent" != yes; then
4563 if test "$guest_agent_msi" = yes; then
4564 error_exit "MSI guest agent package requires guest agent enabled"
4565 fi
4566 guest_agent_msi=no
4567elif test "$mingw32" != "yes"; then
4568 if test "$guest_agent_msi" = "yes"; then
4569 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4570 fi
4571 guest_agent_msi=no
4572elif ! has wixl; then
4573 if test "$guest_agent_msi" = "yes"; then
4574 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4575 fi
4576 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004577else
4578 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4579 # disabled explicitly
4580 if test "$guest_agent_msi" != "no"; then
4581 guest_agent_msi=yes
4582 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004583fi
4584
Michael Roth1a349042015-08-26 11:14:31 -05004585if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004586 if test "$guest_agent_with_vss" = "yes"; then
4587 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4588 fi
4589
4590 if test "$QEMU_GA_MANUFACTURER" = ""; then
4591 QEMU_GA_MANUFACTURER=QEMU
4592 fi
4593
4594 if test "$QEMU_GA_DISTRO" = ""; then
4595 QEMU_GA_DISTRO=Linux
4596 fi
4597
4598 if test "$QEMU_GA_VERSION" = ""; then
4599 QEMU_GA_VERSION=`cat $source_path/VERSION`
4600 fi
4601
4602 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4603
4604 case "$cpu" in
4605 x86_64)
4606 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4607 ;;
4608 i386)
4609 QEMU_GA_MSI_ARCH="-D Arch=32"
4610 ;;
4611 *)
4612 error_exit "CPU $cpu not supported for building installation package"
4613 ;;
4614 esac
4615fi
4616
Paolo Bonzinica35f782010-05-26 16:08:29 +02004617# Mac OS X ships with a broken assembler
4618roms=
4619if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4620 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4621 "$softmmu" = yes ; then
4622 roms="optionrom"
4623fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004624if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004625 roms="$roms spapr-rtas"
4626fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004627
Christian Borntraeger9933c302013-04-23 01:23:03 +00004628if test "$cpu" = "s390x" ; then
4629 roms="$roms s390-ccw"
4630fi
4631
Richard Henderson964c6fa2013-06-21 19:10:16 -07004632# Probe for the need for relocating the user-only binary.
4633if test "$pie" = "no" ; then
4634 textseg_addr=
4635 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004636 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4637 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004638 textseg_addr=0x60000000
4639 ;;
4640 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004641 # A 256M aligned address, high in the address space, with enough
4642 # room for the code_gen_buffer above it before the stack.
4643 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004644 ;;
4645 esac
4646 if [ -n "$textseg_addr" ]; then
4647 cat > $TMPC <<EOF
4648 int main(void) { return 0; }
4649EOF
4650 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4651 if ! compile_prog "" "$textseg_ldflags"; then
4652 # In case ld does not support -Ttext-segment, edit the default linker
4653 # script via sed to set the .text start addr. This is needed on FreeBSD
4654 # at least.
4655 $ld --verbose | sed \
4656 -e '1,/==================================================/d' \
4657 -e '/==================================================/,$d' \
4658 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4659 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4660 textseg_ldflags="-Wl,-T../config-host.ld"
4661 fi
4662 fi
4663fi
4664
Jan Kiszka50e12062014-10-02 10:03:55 +02004665# prepend pixman and ftd flags after all config tests are done
4666QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4667libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004668
bellard43ce4df2003-06-09 19:53:12 +00004669echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004670echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004671echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004672echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004673echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004674echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004675echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004676echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004677if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004678echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004679echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004680echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004681else
4682echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004683echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004684fi
bellard5a671352003-10-01 00:13:48 +00004685echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004686echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004687echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004688echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004689echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004690echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004691echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004692echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004693echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004694echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004695echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004696echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004697if test "$slirp" = "yes" ; then
4698 echo "smbd $smbd"
4699fi
Fam Zheng17969262014-02-10 14:48:56 +08004700echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004701echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004702echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004703echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004704echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004705echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004706echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004707echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004708echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004709echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004710if test "$darwin" = "yes" ; then
4711 echo "Cocoa support $cocoa"
4712fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004713echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004714echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004715echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004716echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004717echo "GNUTLS support $gnutls"
4718echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004719echo "libgcrypt $gcrypt"
4720echo "nettle $nettle ${nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004721echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004722echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004723echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004724echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004725echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004726echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004727echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004728echo "Block whitelist (rw) $block_drv_rw_whitelist"
4729echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304730echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004731echo "VNC support $vnc"
4732if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004733 echo "VNC SASL support $vnc_sasl"
4734 echo "VNC JPEG support $vnc_jpeg"
4735 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004736fi
blueswir131422552007-04-16 18:27:06 +00004737if test -n "$sparc_cpu"; then
4738 echo "Target Sparc Arch $sparc_cpu"
4739fi
aliguorie37630c2009-04-22 15:19:10 +00004740echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004741if test "$xen" = "yes" ; then
4742 echo "xen ctrl version $xen_ctrl_version"
4743fi
aurel322e4d9fb2008-04-08 06:01:02 +00004744echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004745echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004746echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004747echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004748echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004749echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004750echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004751echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004752echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004753echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004754echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004755echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004756echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004757echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004758echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004759echo "madvise $madvise"
4760echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004761echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004762echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004763echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004764echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004765echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004766echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004767if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004768echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004769fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004770if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004771echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004772else
4773echo "spice support $spice"
4774fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004775echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004776echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004777echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004778echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004779echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004780echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004781echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004782echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004783echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004784echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004785echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004786echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004787echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004788echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004789echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304790echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004791echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004792echo "gcov $gcov_tool"
4793echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004794echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004795echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004796echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004797echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004798echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004799echo "lzo support $lzo"
4800echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004801echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004802echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004803echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004804echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004805
Stefan Weil1ba16962011-07-29 22:40:45 +02004806if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004807echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004808fi
bellard97a847b2003-08-10 21:36:04 +00004809
Juan Quintela98ec69a2009-07-16 18:34:18 +02004810config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004811
Stefan Weildbd99ae2013-01-01 18:33:44 +01004812echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4813
Juan Quintela98ec69a2009-07-16 18:34:18 +02004814echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004815echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004816
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004817echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004818echo "prefix=$prefix" >> $config_host_mak
4819echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004820echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004821echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004822echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004823echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004824echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004825echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004826echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4827echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004828echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004829if test "$mingw32" = "no" ; then
4830 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4831fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004832echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004833echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4834echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004835echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004836echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004837
Juan Quintela98ec69a2009-07-16 18:34:18 +02004838echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004839
aurel32f8393942009-04-13 18:45:38 +00004840if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004841 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004842fi
aliguori1625af82009-04-05 17:41:02 +00004843if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004844 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004845fi
bellard7d132992003-03-06 23:23:54 +00004846if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004847 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004848fi
bellard67b915a2004-03-31 23:37:16 +00004849if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004850 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004851 rc_version=`cat $source_path/VERSION`
4852 version_major=${rc_version%%.*}
4853 rc_version=${rc_version#*.}
4854 version_minor=${rc_version%%.*}
4855 rc_version=${rc_version#*.}
4856 version_subminor=${rc_version%%.*}
4857 version_micro=0
4858 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4859 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004860 if test "$guest_agent_with_vss" = "yes" ; then
4861 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004862 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004863 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4864 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004865 if test "$guest_agent_ntddscsi" = "yes" ; then
4866 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4867 fi
Michael Roth1a349042015-08-26 11:14:31 -05004868 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004869 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4870 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4871 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4872 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4873 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4874 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4875 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4876 fi
pbrook210fa552007-02-27 21:04:49 +00004877else
Juan Quintela35f4df22009-07-27 16:13:07 +02004878 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004879fi
blueswir1128ab2f2008-08-15 18:33:42 +00004880
Mark McLoughlindffcb712009-10-22 17:49:11 +01004881if test "$linux" = "yes" ; then
4882 echo "CONFIG_LINUX=y" >> $config_host_mak
4883fi
4884
bellard83fb7ad2004-07-05 21:25:26 +00004885if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004886 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004887fi
malcb29fe3e2008-11-18 01:42:22 +00004888
4889if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004890 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004891fi
4892
bellardec530c82006-04-25 22:36:06 +00004893if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004894 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004895 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004896 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004897 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004898 fi
bellardec530c82006-04-25 22:36:06 +00004899fi
Andreas Färber179cf402010-09-20 00:50:43 +02004900if test "$haiku" = "yes" ; then
4901 echo "CONFIG_HAIKU=y" >> $config_host_mak
4902fi
bellard97a847b2003-08-10 21:36:04 +00004903if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004904 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004905fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004906if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004907 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004908fi
bellardc20709a2004-04-21 23:27:19 +00004909if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004910 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004911 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004912fi
ths8a16d272008-07-19 09:56:24 +00004913if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004914 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004915fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004916if test "$netmap" = "yes" ; then
4917 echo "CONFIG_NETMAP=y" >> $config_host_mak
4918fi
Gonglei015a33b2014-07-01 20:58:08 +08004919if test "$l2tpv3" = "yes" ; then
4920 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4921fi
Corey Bryant47e98652012-01-26 09:42:26 -05004922if test "$cap_ng" = "yes" ; then
4923 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4924fi
Juan Quintela2358a492009-07-27 16:13:25 +02004925echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004926for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004927 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004928 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004929done
Juan Quintela67f86e82009-08-03 14:46:59 +02004930if test "$audio_pt_int" = "yes" ; then
4931 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4932fi
malcd5631632009-10-10 01:13:41 +04004933if test "$audio_win_int" = "yes" ; then
4934 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4935fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004936echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4937echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004938if test "$vnc" = "yes" ; then
4939 echo "CONFIG_VNC=y" >> $config_host_mak
4940fi
aliguori2f9606b2009-03-06 20:27:28 +00004941if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004942 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004943fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004944if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004945 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004946fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004947if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004948 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004949fi
aliguori76655d62009-03-06 20:27:37 +00004950if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004951 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004952fi
Stefan Weilee682d22009-10-01 20:10:37 +02004953if test "$uuid" = "yes" ; then
4954 echo "CONFIG_UUID=y" >> $config_host_mak
4955fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004956if test "$xfs" = "yes" ; then
4957 echo "CONFIG_XFS=y" >> $config_host_mak
4958fi
pbrookb1a550a2006-04-16 13:28:56 +00004959qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004960echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004961echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004962echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004963echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004964if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004965 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004966fi
Fam Zheng17969262014-02-10 14:48:56 +08004967if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004968 # $shacmd can generate a hash started with digit, which the compiler doesn't
4969 # like as an symbol. So prefix it with an underscore
4970 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004971 echo "CONFIG_MODULES=y" >> $config_host_mak
4972fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004973if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004974 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004975 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004976 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004977fi
4978if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004979 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004980fi
4981if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004982 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004983fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004984if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004985 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004986fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004987if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004988 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004989fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004990if test "$accept4" = "yes" ; then
4991 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4992fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304993if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004994 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304995fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004996if test "$eventfd" = "yes" ; then
4997 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4998fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004999if test "$memfd" = "yes" ; then
5000 echo "CONFIG_MEMFD=y" >> $config_host_mak
5001fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005002if test "$fallocate" = "yes" ; then
5003 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5004fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005005if test "$fallocate_punch_hole" = "yes" ; then
5006 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5007fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005008if test "$fallocate_zero_range" = "yes" ; then
5009 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5010fi
Kevin Wolfed911432014-09-29 17:12:59 +02005011if test "$posix_fallocate" = "yes" ; then
5012 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5013fi
Peter Maydellc727f472011-01-06 11:05:10 +00005014if test "$sync_file_range" = "yes" ; then
5015 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5016fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005017if test "$fiemap" = "yes" ; then
5018 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5019fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005020if test "$dup3" = "yes" ; then
5021 echo "CONFIG_DUP3=y" >> $config_host_mak
5022fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005023if test "$ppoll" = "yes" ; then
5024 echo "CONFIG_PPOLL=y" >> $config_host_mak
5025fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005026if test "$prctl_pr_set_timerslack" = "yes" ; then
5027 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5028fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005029if test "$epoll" = "yes" ; then
5030 echo "CONFIG_EPOLL=y" >> $config_host_mak
5031fi
5032if test "$epoll_create1" = "yes" ; then
5033 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5034fi
5035if test "$epoll_pwait" = "yes" ; then
5036 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5037fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005038if test "$sendfile" = "yes" ; then
5039 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5040fi
Riku Voipio51834342014-06-22 11:25:42 +01005041if test "$timerfd" = "yes" ; then
5042 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5043fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005044if test "$setns" = "yes" ; then
5045 echo "CONFIG_SETNS=y" >> $config_host_mak
5046fi
aurel323b3f24a2009-04-15 16:12:13 +00005047if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005048 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005049fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005050if test "$inotify1" = "yes" ; then
5051 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5052fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005053if test "$byteswap_h" = "yes" ; then
5054 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5055fi
5056if test "$bswap_h" = "yes" ; then
5057 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5058fi
Alexander Graf769ce762009-05-11 17:41:42 +02005059if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005060 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005061 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005062 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005063fi
aurel322e4d9fb2008-04-08 06:01:02 +00005064if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005065 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005066fi
balrogfb599c92008-09-28 23:49:55 +00005067if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005068 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005069 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005070fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005071if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005072 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5073fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005074echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005075if test "$gtk" = "yes" ; then
5076 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005077 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005078 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005079 if test "$gtk_gl" = "yes" ; then
5080 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5081 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005082fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005083if test "$gnutls" = "yes" ; then
5084 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5085fi
5086if test "$gnutls_hash" = "yes" ; then
5087 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5088fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005089if test "$gcrypt" = "yes" ; then
5090 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005091fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005092if test "$nettle" = "yes" ; then
5093 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005094 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005095fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005096if test "$tasn1" = "yes" ; then
5097 echo "CONFIG_TASN1=y" >> $config_host_mak
5098fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005099if test "$vte" = "yes" ; then
5100 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005101 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5102fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005103if test "$virglrenderer" = "yes" ; then
5104 echo "CONFIG_VIRGL=y" >> $config_host_mak
5105 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5106 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5107fi
aliguorie37630c2009-04-22 15:19:10 +00005108if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005109 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005110 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00005111fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005112if test "$linux_aio" = "yes" ; then
5113 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5114fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005115if test "$attr" = "yes" ; then
5116 echo "CONFIG_ATTR=y" >> $config_host_mak
5117fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005118if test "$libattr" = "yes" ; then
5119 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5120fi
Meador Inge983eef52012-02-24 14:00:42 +05305121if test "$virtfs" = "yes" ; then
5122 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005123fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005124if test "$vhost_scsi" = "yes" ; then
5125 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5126fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005127if test "$vhost_net" = "yes" ; then
5128 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5129fi
ths77755342008-11-27 15:45:16 +00005130if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005131 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005132fi
aliguoribf9298b2008-12-05 20:05:26 +00005133if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005134 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005135fi
aliguoriceb42de2009-04-07 18:43:28 +00005136if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005137 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005138fi
aurel32f652e6a2008-12-16 10:43:48 +00005139if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005140 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005141fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005142if test "$signalfd" = "yes" ; then
5143 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5144fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005145if test "$tcg_interpreter" = "yes" ; then
5146 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5147fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005148if test "$fdatasync" = "yes" ; then
5149 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5150fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005151if test "$madvise" = "yes" ; then
5152 echo "CONFIG_MADVISE=y" >> $config_host_mak
5153fi
5154if test "$posix_madvise" = "yes" ; then
5155 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5156fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005157if test "$sigev_thread_id" = "yes" ; then
5158 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5159fi
bellard97a847b2003-08-10 21:36:04 +00005160
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005161if test "$spice" = "yes" ; then
5162 echo "CONFIG_SPICE=y" >> $config_host_mak
5163fi
5164
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005165if test "$smartcard" = "yes" ; then
5166 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005167fi
5168
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005169if test "$libusb" = "yes" ; then
5170 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5171fi
5172
Hans de Goede69354a82011-07-19 11:04:10 +02005173if test "$usb_redir" = "yes" ; then
5174 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5175fi
5176
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005177if test "$opengl" = "yes" ; then
5178 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005179 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005180 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005181fi
5182
qiaonuohan607dacd2014-02-18 14:11:30 +08005183if test "$lzo" = "yes" ; then
5184 echo "CONFIG_LZO=y" >> $config_host_mak
5185fi
5186
5187if test "$snappy" = "yes" ; then
5188 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5189fi
5190
Peter Wu6b383c02015-01-06 18:48:14 +01005191if test "$bzip2" = "yes" ; then
5192 echo "CONFIG_BZIP2=y" >> $config_host_mak
5193 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5194fi
5195
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005196if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005197 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005198 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5199 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005200fi
5201
Peter Lieven6542aa92014-02-03 10:26:13 +01005202if test "$libnfs" = "yes" ; then
5203 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5204fi
5205
Eduardo Otubof7945732012-08-14 18:44:05 -03005206if test "$seccomp" = "yes"; then
5207 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5208fi
5209
bellard83fb7ad2004-07-05 21:25:26 +00005210# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005211if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005212 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005213fi
5214
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005215if test "$zero_malloc" = "yes" ; then
5216 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5217fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005218if test "$localtime_r" = "yes" ; then
5219 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5220fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005221if test "$qom_cast_debug" = "yes" ; then
5222 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5223fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005224if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005225 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005226 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5227 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005228fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005229
Peter Maydell7c2acc72013-04-08 12:11:27 +01005230echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005231if test "$coroutine_pool" = "yes" ; then
5232 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5233else
5234 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5235fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305236
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305237if test "$open_by_handle_at" = "yes" ; then
5238 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5239fi
5240
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305241if test "$linux_magic_h" = "yes" ; then
5242 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5243fi
5244
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005245if test "$pragma_diagnostic_available" = "yes" ; then
5246 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005247fi
5248
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005249if test "$valgrind_h" = "yes" ; then
5250 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5251fi
5252
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005253if test "$has_environ" = "yes" ; then
5254 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5255fi
5256
Richard Henderson76a347e2012-12-28 14:17:02 -08005257if test "$cpuid_h" = "yes" ; then
5258 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5259fi
5260
Richard Hendersonf5401662013-02-16 12:46:59 -08005261if test "$int128" = "yes" ; then
5262 echo "CONFIG_INT128=y" >> $config_host_mak
5263fi
5264
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005265if test "$getauxval" = "yes" ; then
5266 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5267fi
5268
Bharata B Raoeb100392012-09-24 14:42:45 +05305269if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005270 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005271 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5272 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305273fi
5274
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305275if test "$glusterfs_discard" = "yes" ; then
5276 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5277fi
5278
Bharata B Rao7c815372013-12-21 14:51:25 +05305279if test "$glusterfs_zerofill" = "yes" ; then
5280 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5281fi
5282
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005283if test "$archipelago" = "yes" ; then
5284 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5285 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5286fi
5287
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005288if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005289 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005290 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5291 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005292fi
5293
Jeff Cody4f18b782013-10-30 10:44:39 -04005294if test "$vhdx" = "yes" ; then
5295 echo "CONFIG_VHDX=y" >> $config_host_mak
5296fi
5297
blueswir168063642008-11-22 21:03:55 +00005298# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005299if test "$libusb" = "yes"; then
5300 echo "HOST_USB=libusb legacy" >> $config_host_mak
5301else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005302 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005303fi
blueswir168063642008-11-22 21:03:55 +00005304
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005305# TPM passthrough support?
5306if test "$tpm" = "yes"; then
5307 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5308 if test "$tpm_passthrough" = "yes"; then
5309 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5310 fi
5311fi
5312
Lluís Vilanova5b808272014-05-27 15:02:14 +02005313echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5314if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005315 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305316fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005317if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005318 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5319 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005320 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005321fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005322if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005323 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5324fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005325if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005326 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5327fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005328if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005329 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5330 if test "$trace_backend_stap" = "yes" ; then
5331 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5332 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005333fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005334if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005335 if test "$linux" = "yes" ; then
5336 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005337 else
Stewart Smith21684af2014-01-24 12:39:10 +11005338 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005339 fi
5340fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005341echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5342
Michael R. Hines2da776d2013-07-22 10:01:54 -04005343if test "$rdma" = "yes" ; then
5344 echo "CONFIG_RDMA=y" >> $config_host_mak
5345fi
5346
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005347# Hold two types of flag:
5348# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5349# a thread we have a handle to
5350# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5351# platform
5352if test "$pthread_setname_np" = "yes" ; then
5353 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5354 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5355fi
5356
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005357if test "$tcg_interpreter" = "yes"; then
5358 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5359elif test "$ARCH" = "sparc64" ; then
5360 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5361elif test "$ARCH" = "s390x" ; then
5362 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005363elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005364 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005365elif test "$ARCH" = "ppc64" ; then
5366 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005367else
5368 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5369fi
5370QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5371
Juan Quintela98ec69a2009-07-16 18:34:18 +02005372echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005373echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005374echo "MAKE=$make" >> $config_host_mak
5375echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005376echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5377echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005378if test -n "$libtool"; then
5379 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5380 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5381else
5382 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5383 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5384fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005385echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005386echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005387if $iasl -h > /dev/null 2>&1; then
5388 echo "IASL=$iasl" >> $config_host_mak
5389fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005390echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005391echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005392echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005393echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005394echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005395echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005396echo "AS=$as" >> $config_host_mak
5397echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005398echo "OBJCOPY=$objcopy" >> $config_host_mak
5399echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005400echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005401echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005402echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005403echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005404echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005405echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005406echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005407if test "$sparse" = "yes" ; then
5408 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005409 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005410 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005411 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5412 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5413fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005414if test "$cross_prefix" != ""; then
5415 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5416else
5417 echo "AUTOCONF_HOST := " >> $config_host_mak
5418fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005419echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005420echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005421echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005422echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005423echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005424echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005425echo "DSOSUF=$DSOSUF" >> $config_host_mak
5426echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005427echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005428echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5429echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005430echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005431echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005432if test "$gcov" = "yes" ; then
5433 echo "CONFIG_GCOV=y" >> $config_host_mak
5434 echo "GCOV=$gcov_tool" >> $config_host_mak
5435fi
Juan Quintela804edf22009-07-27 16:12:49 +02005436
Peter Maydell6efd7512011-11-30 11:59:04 +00005437# use included Linux headers
5438if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005439 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005440 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005441 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005442 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005443 ;;
5444 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005445 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005446 ;;
5447 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005448 linux_arch=s390
5449 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005450 aarch64)
5451 linux_arch=arm64
5452 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005453 mips64)
5454 linux_arch=mips
5455 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005456 *)
5457 # For most CPUs the kernel architecture name and QEMU CPU name match.
5458 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005459 ;;
5460 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005461 # For non-KVM architectures we will not have asm headers
5462 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5463 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5464 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005465fi
5466
bellard1d14ffa2005-10-30 18:58:22 +00005467for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005468target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005469config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005470target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005471target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005472
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005473case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005474 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 +02005475 target_bigendian=yes
5476 ;;
5477esac
bellard97a847b2003-08-10 21:36:04 +00005478target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005479target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005480target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005481target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005482case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005483 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005484 target_softmmu="yes"
5485 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005486 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005487 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005488 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005489 fi
pbrook9e407a82007-05-26 16:38:53 +00005490 target_user_only="yes"
5491 target_linux_user="yes"
5492 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005493 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005494 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005495 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005496 fi
blueswir184778502008-10-26 20:33:16 +00005497 target_user_only="yes"
5498 target_bsd_user="yes"
5499 ;;
pbrook9e407a82007-05-26 16:38:53 +00005500 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005501 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005502 exit 1
5503 ;;
5504esac
ths831b7822007-01-18 20:06:33 +00005505
bellard97a847b2003-08-10 21:36:04 +00005506mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005507echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005508
pbrooke5fe0c52006-06-11 13:32:59 +00005509bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005510interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005511gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005512
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005513TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005514TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005515TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005516
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005517case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005518 i386)
aurel322408a522008-04-20 20:19:44 +00005519 ;;
5520 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005521 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005522 ;;
5523 alpha)
aurel322408a522008-04-20 20:19:44 +00005524 ;;
5525 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005526 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005527 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005528 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005529 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005530 aarch64)
5531 TARGET_BASE_ARCH=arm
5532 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005533 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 +01005534 ;;
aurel322408a522008-04-20 20:19:44 +00005535 cris)
aurel322408a522008-04-20 20:19:44 +00005536 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005537 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005538 ;;
aurel322408a522008-04-20 20:19:44 +00005539 m68k)
aurel322408a522008-04-20 20:19:44 +00005540 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005541 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005542 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005543 microblaze|microblazeel)
5544 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005545 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005546 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005547 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005548 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005549 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005550 ;;
5551 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005552 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005553 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005554 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005555 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005556 ;;
5557 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005558 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005559 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005560 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005561 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005562 moxie)
5563 ;;
Jia Liue67db062012-07-20 15:50:39 +08005564 or32)
5565 TARGET_ARCH=openrisc
5566 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005567 ;;
aurel322408a522008-04-20 20:19:44 +00005568 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005569 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005570 ;;
5571 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005572 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005573 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005574 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005575 ;;
5576 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005577 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005578 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005579 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005580 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005581 ppc64le)
5582 TARGET_ARCH=ppc64
5583 TARGET_BASE_ARCH=ppc
5584 TARGET_ABI_DIR=ppc
5585 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5586 ;;
aurel322408a522008-04-20 20:19:44 +00005587 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005588 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005589 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005590 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005591 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005592 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005593 ;;
5594 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005595 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005596 bflt="yes"
5597 ;;
5598 sparc)
aurel322408a522008-04-20 20:19:44 +00005599 ;;
5600 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005601 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005602 ;;
5603 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005604 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005605 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005606 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005607 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005608 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005609 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005610 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 +01005611 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005612 tilegx)
5613 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005614 tricore)
5615 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005616 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005617 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005618 xtensa|xtensaeb)
5619 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005620 ;;
aurel322408a522008-04-20 20:19:44 +00005621 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005622 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005623 ;;
5624esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005625# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5626if [ "$TARGET_BASE_ARCH" = "" ]; then
5627 TARGET_BASE_ARCH=$TARGET_ARCH
5628fi
5629
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005630symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5631
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005632upper() {
5633 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5634}
5635
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005636target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005637echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005638echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005639echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005640if [ "$TARGET_ABI_DIR" = "" ]; then
5641 TARGET_ABI_DIR=$TARGET_ARCH
5642fi
Juan Quintela25be2102009-10-07 02:41:00 +02005643echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005644if [ "$HOST_VARIANT_DIR" != "" ]; then
5645 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5646fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005647case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005648 i386|x86_64)
5649 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005650 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005651 if test "$xen_pci_passthrough" = yes; then
5652 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5653 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005654 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005655 ;;
5656 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005657esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005658case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005659 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005660 # Make sure the target and host cpus are compatible
5661 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005662 \( "$target_name" = "$cpu" -o \
5663 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5664 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5665 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5666 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005667 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005668 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005669 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5670 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5671 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005672 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005673 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005674 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5675 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005676 fi
5677esac
bellardde83cd02003-06-15 20:25:43 +00005678if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005679 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005680fi
5681if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005682 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005683fi
bellard997344f2003-10-27 21:10:39 +00005684if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005685 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005686 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005687fi
ths831b7822007-01-18 20:06:33 +00005688if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005689 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005690fi
pbrook56aebc82008-10-11 17:55:29 +00005691list=""
5692if test ! -z "$gdb_xml_files" ; then
5693 for x in $gdb_xml_files; do
5694 list="$list $source_path/gdb-xml/$x"
5695 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005696 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005697fi
bellardde83cd02003-06-15 20:25:43 +00005698
pbrooke5fe0c52006-06-11 13:32:59 +00005699if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005700 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005701fi
blueswir184778502008-10-26 20:33:16 +00005702if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005703 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005704fi
bellard5b0753e2005-03-01 21:37:28 +00005705
Juan Quintela4afddb52009-08-03 14:46:45 +02005706# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005707
Juan Quintela4afddb52009-08-03 14:46:45 +02005708cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005709ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005710
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005711disas_config() {
5712 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5713 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5714}
5715
Juan Quintela64656022009-08-03 14:46:53 +02005716for i in $ARCH $TARGET_BASE_ARCH ; do
5717 case "$i" in
5718 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005719 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005720 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005721 aarch64)
5722 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005723 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005724 fi
5725 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005726 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005727 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005728 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005729 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005730 fi
Juan Quintela64656022009-08-03 14:46:53 +02005731 ;;
5732 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005733 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005734 ;;
5735 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005736 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005737 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005738 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005739 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005740 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005741 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005742 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005743 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005744 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005745 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005746 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005747 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005748 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005749 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005750 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005751 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005752 ;;
5753 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005754 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005755 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005756 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005757 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005758 ;;
Jia Liue67db062012-07-20 15:50:39 +08005759 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005760 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005761 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005762 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005763 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005764 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005765 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005766 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005767 ;;
5768 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005769 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005770 ;;
5771 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005772 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005773 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005774 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005775 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005776 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005777 esac
5778done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005779if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005780 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005781fi
Juan Quintela64656022009-08-03 14:46:53 +02005782
Juan Quintela6ee71262009-08-03 14:46:47 +02005783case "$ARCH" in
5784alpha)
5785 # Ensure there's only a single GP
5786 cflags="-msmall-data $cflags"
5787;;
5788esac
5789
Juan Quintelad02c1db2009-08-03 14:46:50 +02005790if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005791 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005792 if test "$target_linux_user" = "yes" ; then
5793 cflags="-p $cflags"
5794 ldflags="-p $ldflags"
5795 fi
5796 if test "$target_softmmu" = "yes" ; then
5797 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005798 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005799 fi
5800fi
5801
Juan Quintela9b8e1112009-08-03 14:46:46 +02005802if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005803 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005804fi
Juan Quintelafa282482009-07-22 22:37:39 +02005805
Juan Quintela25be2102009-10-07 02:41:00 +02005806echo "LDFLAGS+=$ldflags" >> $config_target_mak
5807echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005808
bellard97a847b2003-08-10 21:36:04 +00005809done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005810
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005811if [ "$pixman" = "internal" ]; then
5812 echo "config-host.h: subdir-pixman" >> $config_host_mak
5813fi
5814
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005815if [ "$dtc_internal" = "yes" ]; then
5816 echo "config-host.h: subdir-dtc" >> $config_host_mak
5817fi
5818
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005819if test "$numa" = "yes"; then
5820 echo "CONFIG_NUMA=y" >> $config_host_mak
5821fi
5822
John Snowfd0e6052015-03-25 18:57:39 -04005823if test "$ccache_cpp2" = "yes"; then
5824 echo "export CCACHE_CPP2=y" >> $config_host_mak
5825fi
5826
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005827# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005828DIRS="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 +04005829DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005830DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005831DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005832DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005833FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5834FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005835FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005836FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005837FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005838FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005839FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005840FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005841for bios_file in \
5842 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005843 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005844 $source_path/pc-bios/*.rom \
5845 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005846 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005847 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005848 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005849 $source_path/pc-bios/palcode-*
5850do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005851 FILES="$FILES pc-bios/`basename $bios_file`"
5852done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005853for test_file in `find $source_path/tests/acpi-test-data -type f`
5854do
5855 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5856done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005857mkdir -p $DIRS
5858for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005859 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005860 symlink "$source_path/$f" "$f"
5861 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005862done
Paul Brook1ad21342009-05-19 16:17:58 +01005863
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005864# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005865for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005866 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005867 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005868 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005869 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005870 echo "CC=$cc" >> $config_mak
5871 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005872 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005873 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005874 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005875 echo "LD=$ld" >> $config_mak
5876done
5877
Max Reitz76c75602014-05-24 23:24:56 +02005878# set up qemu-iotests in this build directory
5879iotests_common_env="tests/qemu-iotests/common.env"
5880iotests_check="tests/qemu-iotests/check"
5881
5882echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5883echo >> "$iotests_common_env"
5884echo "export PYTHON='$python'" >> "$iotests_common_env"
5885
5886if [ ! -e "$iotests_check" ]; then
5887 symlink "$source_path/$iotests_check" "$iotests_check"
5888fi
5889
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005890# Save the configure command line for later reuse.
5891cat <<EOD >config.status
5892#!/bin/sh
5893# Generated by configure.
5894# Run this file to recreate the current configuration.
5895# Compiler output produced by configure, useful for debugging
5896# configure, is in config.log if it exists.
5897EOD
5898printf "exec" >>config.status
5899printf " '%s'" "$0" "$@" >>config.status
5900echo >>config.status
5901chmod +x config.status
5902
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005903rm -r "$TMPDIR1"