blob: 285d123dbf5dd12e7a715c082e3c992d7602a3c9 [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"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010031TMPE="${TMPDIR1}/${TMPB}.exe"
James Clarke6969ec62016-06-06 12:02:50 +010032TMPMO="${TMPDIR1}/${TMPB}.mo"
bellard7d132992003-03-06 23:23:54 +000033
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020034rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000035
Peter Maydellb48e3612011-11-23 17:26:44 +000036# Print a helpful header at the top of config.log
37echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000038printf "# Configured with:" >> config.log
39printf " '%s'" "$0" "$@" >> config.log
40echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000041echo "#" >> config.log
42
Paolo Bonzinid880a3b2017-07-03 16:58:28 +020043print_error() {
44 (echo
Peter Maydell76ad07a2013-04-08 12:11:26 +010045 echo "ERROR: $1"
46 while test -n "$2"; do
47 echo " $2"
48 shift
49 done
Paolo Bonzinid880a3b2017-07-03 16:58:28 +020050 echo) >&2
51}
52
53error_exit() {
54 print_error "$@"
Peter Maydell76ad07a2013-04-08 12:11:26 +010055 exit 1
56}
57
Peter Maydell9c83ffd2014-02-25 18:27:49 +000058do_compiler() {
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
61 local compiler="$1"
62 shift
63 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010065 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
70 return 0
71 fi
72 # Don't bother rerunning the compile if we were already using -Werror
73 case "$*" in
74 *-Werror*)
75 return 0
76 ;;
77 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000078 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010080 error_exit "configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010084}
85
Peter Maydell9c83ffd2014-02-25 18:27:49 +000086do_cc() {
87 do_compiler "$cc" "$@"
88}
89
90do_cxx() {
91 do_compiler "$cxx" "$@"
92}
93
94update_cxxflags() {
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
Bruno Dominguez11cde1c2017-06-06 14:07:47 +010098 QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
99
Peter Maydell9c83ffd2014-02-25 18:27:49 +0000100 for arg in $QEMU_CFLAGS; do
101 case $arg in
102 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
103 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
104 ;;
105 *)
106 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
107 ;;
108 esac
109 done
110}
111
Juan Quintela52166aa2009-08-03 14:46:03 +0200112compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400113 local_cflags="$1"
114 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200115}
116
117compile_prog() {
118 local_cflags="$1"
119 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100120 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200121}
122
Paolo Bonzini11568d62010-12-23 11:43:58 +0100123# symbolically link $1 to $2. Portable version of "ln -sf".
124symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100125 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800126 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100127 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100128}
129
Loïc Minier0dba6192010-01-28 21:26:51 +0000130# check whether a command is available to this shell (may be either an
131# executable or a builtin)
132has() {
133 type "$1" >/dev/null 2>&1
134}
135
136# search for an executable in PATH
137path_of() {
138 local_command="$1"
139 local_ifs="$IFS"
140 local_dir=""
141
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
146 return 0
147 fi
148 fi
149 if [ -z "$local_command" ]; then
150 return 1
151 fi
152
153 IFS=:
154 for local_dir in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS="${local_ifs:-$(printf ' \t\n')}"
158 return 0
159 fi
160 done
161 # not found
162 IFS="${local_ifs:-$(printf ' \t\n')}"
163 return 1
164}
165
Lluís Vilanova5b808272014-05-27 15:02:14 +0200166have_backend () {
167 echo "$trace_backends" | grep "$1" >/dev/null
168}
169
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200170glob() {
171 eval test -z '"${1#'"$2"'}"'
172}
173
174supported_hax_target() {
175 test "$hax" = "yes" || return 1
176 glob "$1" "*-softmmu" || return 1
177 case "${1%-softmmu}" in
178 i386|x86_64)
179 return 0
180 ;;
181 esac
182 return 1
183}
184
185supported_kvm_target() {
186 test "$kvm" = "yes" || return 1
187 glob "$1" "*-softmmu" || return 1
188 case "${1%-softmmu}:$cpu" in
189 arm:arm | aarch64:aarch64 | \
190 i386:i386 | i386:x86_64 | i386:x32 | \
191 x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \
192 mips:mips | mipsel:mips | \
193 ppc:ppc | ppcemb:ppc | ppc64:ppc | \
194 ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
195 s390x:s390x)
196 return 0
197 ;;
198 esac
199 return 1
200}
201
202supported_xen_target() {
203 test "$xen" = "yes" || return 1
204 glob "$1" "*-softmmu" || return 1
Paolo Bonzinib5ed2e12017-07-11 12:00:49 +0200205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
207 i386|x86_64)
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200208 return 0
209 ;;
210 esac
211 return 1
212}
213
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200214supported_target() {
215 case "$1" in
216 *-softmmu)
217 ;;
218 *-linux-user)
219 if test "$linux" != "yes"; then
220 print_error "Target '$target' is only available on a Linux host"
221 return 1
222 fi
223 ;;
224 *-bsd-user)
225 if test "$bsd" != "yes"; then
226 print_error "Target '$target' is only available on a BSD host"
227 return 1
228 fi
229 ;;
230 *)
231 print_error "Invalid target name '$target'"
232 return 1
233 ;;
234 esac
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200235 test "$tcg" = "yes" && return 0
236 supported_kvm_target "$1" && return 0
237 supported_xen_target "$1" && return 0
238 supported_hax_target "$1" && return 0
239 print_error "TCG disabled, but hardware accelerator not available for '$target'"
240 return 1
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200241}
242
Christian Borntraegere9a35912017-08-23 12:16:23 +0200243
244ld_has() {
245 $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
246}
247
bellard7d132992003-03-06 23:23:54 +0000248# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200249source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200250cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300251iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000252interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000253static="no"
bellard7d132992003-03-06 23:23:54 +0000254cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000255audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800256block_drv_rw_whitelist=""
257block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000258host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200259libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200260libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200261audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400262audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200263cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500264libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100265debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100266stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000267
Daniel P. Berrange92712822017-09-29 11:11:58 +0100268if test -e "$source_path/.git"
269then
270 git_submodules="ui/keycodemapdb"
271else
272 git_submodules=""
273fi
aliguoriac0df512008-12-29 17:14:15 +0000274
Stefan Weilafb63eb2012-09-26 22:04:38 +0200275# Don't accept a target_list environment variable.
276unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100277
278# Default value for a variable defining feature "foo".
279# * foo="no" feature will only be used if --enable-foo arg is given
280# * foo="" feature will be searched for, and if found, will be used
281# unless --disable-foo is given
282# * foo="yes" this value will only be set by --enable-foo flag.
283# feature will searched for,
284# if not found, configure exits with error
285#
286# Always add --enable-foo and --disable-foo command line args.
287# Distributions want to ensure that several features are compiled in, and it
288# is impossible without a --enable-foo that exits if a feature is not found.
289
290bluez=""
291brlapi=""
292curl=""
293curses=""
294docs=""
295fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100296netmap="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100297sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400298sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530299virtfs=""
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200300mpath=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100301vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100302sparse="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100303vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100304vnc_sasl=""
305vnc_jpeg=""
306vnc_png=""
Gerd Hoffmann6a021532017-10-05 17:33:28 +0200307xkbcommon=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100308xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000309xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000310xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000311xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100312linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500313cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100314attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200315libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100316xfs=""
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200317tcg="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100318
Bradd41a75a2011-07-26 23:11:26 -0400319vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000320vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100321vhost_vsock="no"
Marc-André Lureaue6a74862017-08-03 11:07:46 +0200322vhost_user=""
Bradd41a75a2011-07-26 23:11:26 -0400323kvm="no"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100324hax="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400325rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100326gprof="no"
327debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100328debug="no"
John Snowb553a042015-11-03 15:43:42 -0500329fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100330strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200331tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100332bigendian="no"
333mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000334gcov="no"
335gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100336EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800337DSOSUF=".so"
338LDFLAGS_SHARED="-shared"
339modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100340prefix="/usr/local"
341mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300342datadir="\${prefix}/share"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200343firmwarepath="\${prefix}/share/qemu-firmware"
Eduardo Habkost850da182012-04-18 16:55:38 -0300344qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100345bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300346libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400347libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200348includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100349sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300350local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100351confsuffix="/qemu"
352slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100353oss_lib=""
354bsd="no"
355linux="no"
356solaris="no"
357profiler="no"
358cocoa="no"
359softmmu="yes"
360linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100361bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100362blobs="yes"
363pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200364pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200365qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300366trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100367trace_file="trace"
368spice=""
369rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200370smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100371libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200372usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100373opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100374opengl_dmabuf="no"
Richard Henderson5dd89902017-07-18 18:40:18 -1000375cpuid_h="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800376avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300377zlib="yes"
Richard Henderson8ca80762017-09-14 09:41:12 -0700378capstone=""
Stefan Weilb25c9df2014-04-29 08:21:16 +0200379lzo=""
380snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100381bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400382guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400383guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500384guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300385guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400386vss_win32_sdk=""
387win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100388want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100389libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100390libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100391coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200392coroutine_pool=""
Peter Lieven7d992e42016-09-27 11:58:45 +0200393debug_stack_usage="no"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -0400394crypto_afalg="no"
Eduardo Otubof7945732012-08-14 18:44:05 -0300395seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530396glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400397glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530398glusterfs_discard="no"
Niels de Vosdf3a4292017-05-28 12:01:14 +0530399glusterfs_fallocate="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530400glusterfs_zerofill="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600401gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200402gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200403gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100404tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100405gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900406gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100407nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100408nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100409gcrypt=""
Longpeng(Mike)1f923c72016-12-13 18:42:55 +0800410gcrypt_hmac="no"
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100411gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100412vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200413virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400414tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100415libssh2=""
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +0100416live_block_migration="yes"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800417numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800418tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200419jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800420replication="yes"
Ashish Mittalda92c3f2017-04-03 20:48:08 -0700421vxhs=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100422
Peter Maydell898be3e2017-03-21 14:31:57 +0000423supported_cpu="no"
424supported_os="no"
Peter Maydellfb59dab2017-03-28 14:01:52 +0100425bogus_os="no"
Peter Maydell898be3e2017-03-21 14:31:57 +0000426
aliguoriac0df512008-12-29 17:14:15 +0000427# parse CC options first
428for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200429 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000430 case "$opt" in
431 --cross-prefix=*) cross_prefix="$optarg"
432 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100433 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000434 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400435 --cxx=*) CXX="$optarg"
436 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100437 --source-path=*) source_path="$optarg"
438 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200439 --cpu=*) cpu="$optarg"
440 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100441 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100442 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200443 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100444 --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
445 EXTRA_CXXFLAGS="$optarg"
446 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100447 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100448 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200449 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100450 --enable-debug-info) debug_info="yes"
451 ;;
452 --disable-debug-info) debug_info="no"
453 ;;
aliguoriac0df512008-12-29 17:14:15 +0000454 esac
455done
aliguoriac0df512008-12-29 17:14:15 +0000456# OS specific
457# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100458# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000459
Peter Maydelle49d0212012-12-07 15:39:13 +0000460# Preferred compiler:
461# ${CC} (if set)
462# ${cross_prefix}gcc (if cross-prefix specified)
463# system compiler
464if test -z "${CC}${cross_prefix}"; then
465 cc="$host_cc"
466else
467 cc="${CC-${cross_prefix}gcc}"
468fi
469
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400470if test -z "${CXX}${cross_prefix}"; then
471 cxx="c++"
472else
473 cxx="${CXX-${cross_prefix}g++}"
474fi
475
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500476ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700477as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700478ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000479cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500480objcopy="${OBJCOPY-${cross_prefix}objcopy}"
481ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200482nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500483strip="${STRIP-${cross_prefix}strip}"
484windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300485pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
486query_pkg_config() {
487 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
488}
489pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500490sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000491sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000492
Peter Maydell45d285a2013-10-21 21:03:06 +0100493# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
494ARFLAGS="${ARFLAGS-rv}"
495
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200496# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100497# We use -fwrapv to tell the compiler that we require a C dialect where
498# left shift of signed integers is well defined and has the expected
499# 2s-complement style results. (Both clang and gcc agree that it
500# provides these semantics.)
501QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400502QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100503QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200504QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Yang Zhong244f1442017-06-02 14:06:45 +0800505QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100506if test "$debug_info" = "yes"; then
507 CFLAGS="-g $CFLAGS"
508 LDFLAGS="-g $LDFLAGS"
509fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200510
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100511# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200512source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100513
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300514# running configure in the source tree?
515# we know that's the case if configure is there.
516if test -f "./configure"; then
517 pwd_is_source_path="y"
518else
519 pwd_is_source_path="n"
520fi
521
aliguoriac0df512008-12-29 17:14:15 +0000522check_define() {
523cat > $TMPC <<EOF
524#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000525#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000526#endif
527int main(void) { return 0; }
528EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200529 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000530}
531
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200532check_include() {
533cat > $TMPC <<EOF
534#include <$1>
535int main(void) { return 0; }
536EOF
537 compile_object
538}
539
John Snow93b25862015-03-25 18:57:37 -0400540write_c_skeleton() {
541 cat > $TMPC <<EOF
542int main(void) { return 0; }
543EOF
544}
545
Peter Maydellbbea4052012-08-14 15:35:34 +0100546if check_define __linux__ ; then
547 targetos="Linux"
548elif check_define _WIN32 ; then
549 targetos='MINGW32'
550elif check_define __OpenBSD__ ; then
551 targetos='OpenBSD'
552elif check_define __sun__ ; then
553 targetos='SunOS'
554elif check_define __HAIKU__ ; then
555 targetos='Haiku'
Peter Maydell951fedf2017-07-13 16:15:32 +0100556elif check_define __FreeBSD__ ; then
557 targetos='FreeBSD'
558elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
559 targetos='GNU/kFreeBSD'
560elif check_define __DragonFly__ ; then
561 targetos='DragonFly'
562elif check_define __NetBSD__; then
563 targetos='NetBSD'
564elif check_define __APPLE__; then
565 targetos='Darwin'
Peter Maydellbbea4052012-08-14 15:35:34 +0100566else
Peter Maydell951fedf2017-07-13 16:15:32 +0100567 # This is a fatal error, but don't report it yet, because we
568 # might be going to just print the --help text, or it might
569 # be the result of a missing compiler.
570 targetos='bogus'
571 bogus_os='yes'
Peter Maydellbbea4052012-08-14 15:35:34 +0100572fi
573
574# Some host OSes need non-standard checks for which CPU to use.
575# Note that these checks are broken for cross-compilation: if you're
576# cross-compiling to one of these OSes then you'll need to specify
577# the correct CPU with the --cpu option.
578case $targetos in
579Darwin)
580 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
581 # run 64-bit userspace code.
582 # If the user didn't specify a CPU explicitly and the kernel says this is
583 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
584 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
585 cpu="x86_64"
586 fi
587 ;;
588SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200589 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100590 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
591 cpu="x86_64"
592 fi
593esac
594
Juan Quintela2ff6b912009-08-03 14:45:55 +0200595if test ! -z "$cpu" ; then
596 # command line argument
597 :
598elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000599 cpu="i386"
600elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700601 if check_define __ILP32__ ; then
602 cpu="x32"
603 else
604 cpu="x86_64"
605 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000606elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000607 if check_define __arch64__ ; then
608 cpu="sparc64"
609 else
610 cpu="sparc"
611 fi
malcfdf7ed92009-01-14 18:39:52 +0000612elif check_define _ARCH_PPC ; then
613 if check_define _ARCH_PPC64 ; then
614 cpu="ppc64"
615 else
616 cpu="ppc"
617 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200618elif check_define __mips__ ; then
619 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200620elif check_define __ia64__ ; then
621 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200622elif check_define __s390__ ; then
623 if check_define __s390x__ ; then
624 cpu="s390x"
625 else
626 cpu="s390"
627 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100628elif check_define __arm__ ; then
629 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100630elif check_define __aarch64__ ; then
631 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000632else
Stefan Weil89138852016-05-16 15:10:20 +0200633 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000634fi
635
Peter Maydell359bc952011-12-24 13:07:25 +0000636ARCH=
637# Normalise host CPU name and set ARCH.
638# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000639case "$cpu" in
Peter Maydell6499fd12017-03-28 11:58:38 +0100640 ppc|ppc64|s390|s390x|sparc64|x32)
Peter Maydell898be3e2017-03-21 14:31:57 +0000641 cpu="$cpu"
642 supported_cpu="yes"
643 ;;
bellard7d132992003-03-06 23:23:54 +0000644 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000645 cpu="i386"
Peter Maydell898be3e2017-03-21 14:31:57 +0000646 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000647 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000648 x86_64|amd64)
649 cpu="x86_64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000650 supported_cpu="yes"
aurel32aaa5fa12008-04-11 22:04:22 +0000651 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100652 armv*b|armv*l|arm)
653 cpu="arm"
Peter Maydell898be3e2017-03-21 14:31:57 +0000654 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000655 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100656 aarch64)
657 cpu="aarch64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000658 supported_cpu="yes"
Claudio Fontana1f080312013-06-12 16:20:23 +0100659 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200660 mips*)
661 cpu="mips"
Peter Maydell898be3e2017-03-21 14:31:57 +0000662 supported_cpu="yes"
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200663 ;;
blueswir131422552007-04-16 18:27:06 +0000664 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000665 cpu="sparc"
Peter Maydell6499fd12017-03-28 11:58:38 +0100666 supported_cpu="yes"
bellardae228532003-05-13 18:59:59 +0000667 ;;
bellard7d132992003-03-06 23:23:54 +0000668 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000669 # This will result in either an error or falling back to TCI later
670 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000671 ;;
672esac
Peter Maydell359bc952011-12-24 13:07:25 +0000673if test -z "$ARCH"; then
674 ARCH="$cpu"
675fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200676
bellard7d132992003-03-06 23:23:54 +0000677# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200678
Stacey Sonadfc3e92014-06-08 09:57:22 -0700679# host *BSD for user mode
680HOST_VARIANT_DIR=""
681
bellard7d132992003-03-06 23:23:54 +0000682case $targetos in
bellard67b915a2004-03-31 23:37:16 +0000683MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200684 mingw32="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100685 hax="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200686 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200687 if check_include dsound.h; then
688 audio_drv_list="dsound"
689 else
690 audio_drv_list=""
691 fi
Peter Maydell898be3e2017-03-21 14:31:57 +0000692 supported_os="yes"
bellard67b915a2004-03-31 23:37:16 +0000693;;
ths5c40d2b2007-06-23 16:03:36 +0000694GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100695 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200696 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200697 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000698;;
bellard7d3505c2004-05-12 19:32:15 +0000699FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200700 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100701 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200702 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200703 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100704 # needed for kinfo_getvmmap(3) in libutil.h
705 LIBS="-lutil $LIBS"
Ed Mastea7764f12016-11-21 20:32:45 -0500706 # needed for kinfo_getproc
707 libs_qga="-lutil $libs_qga"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100708 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700709 HOST_VARIANT_DIR="freebsd"
Peter Maydell898be3e2017-03-21 14:31:57 +0000710 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000711;;
blueswir1c5e97232009-03-07 20:06:23 +0000712DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200713 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100714 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200715 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200716 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700717 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000718;;
bellard7d3505c2004-05-12 19:32:15 +0000719NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200720 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100721 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200722 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200723 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200724 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700725 HOST_VARIANT_DIR="netbsd"
Kamil Rytarowski3c2bdbc2017-05-13 04:21:43 +0200726 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000727;;
728OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200729 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100730 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400731 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200732 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700733 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000734;;
bellard83fb7ad2004-07-05 21:25:26 +0000735Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200736 bsd="yes"
737 darwin="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100738 hax="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800739 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200740 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200741 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200742 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200743 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200744 cocoa="yes"
745 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200746 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200747 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200748 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100749 # Disable attempts to use ObjectiveC features in os/object.h since they
750 # won't work when we're compiling with gcc as a C compiler.
751 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700752 HOST_VARIANT_DIR="darwin"
Peter Maydell898be3e2017-03-21 14:31:57 +0000753 supported_os="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000754;;
bellardec530c82006-04-25 22:36:06 +0000755SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200756 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100757 make="${MAKE-gmake}"
758 install="${INSTALL-ginstall}"
Brade2d88302011-09-02 16:53:28 -0400759 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200760 if test -f /usr/include/sys/soundcard.h ; then
761 audio_drv_list="oss"
762 fi
763 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000764# needed for CMSG_ macros in sys/socket.h
765 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
766# needed for TIOCWIN* defines in termios.h
767 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200768 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200769 solarisnetlibs="-lsocket -lnsl -lresolv"
770 LIBS="$solarisnetlibs $LIBS"
771 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000772;;
Andreas Färber179cf402010-09-20 00:50:43 +0200773Haiku)
774 haiku="yes"
775 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
776 LIBS="-lposix_error_mapper -lnetwork $LIBS"
777;;
Peter Maydell898be3e2017-03-21 14:31:57 +0000778Linux)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200779 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200780 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200781 linux="yes"
782 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200783 kvm="yes"
784 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000785 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100786 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000787 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
Peter Maydell898be3e2017-03-21 14:31:57 +0000788 supported_os="yes"
789;;
bellard7d132992003-03-06 23:23:54 +0000790esac
791
bellard7d3505c2004-05-12 19:32:15 +0000792if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000793 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200794 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000795 fi
bellard7d3505c2004-05-12 19:32:15 +0000796fi
797
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100798: ${make=${MAKE-make}}
799: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100800: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400801: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100802
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100803# Default objcc to clang if available, otherwise use CC
804if has clang; then
805 objcc=clang
806else
807 objcc="$cc"
808fi
809
Juan Quintela3457a3f2009-08-03 14:46:07 +0200810if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200811 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800812 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200813 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100814 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
815 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100816 # MinGW needs -mthreads for TLS and macro _MT.
817 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100818 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400819 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100820 if compile_prog "" "-liberty" ; then
821 LIBS="-liberty $LIBS"
822 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200823 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200824 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300825 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300826 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200827 bindir="\${prefix}"
828 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200829 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200830 confsuffix=""
Bishara AbuHattoum105fad62017-08-22 16:55:04 +0300831 libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200832fi
833
Anthony Liguori487fefd2009-06-11 13:28:25 -0500834werror=""
bellard85aa5182007-11-11 20:17:03 +0000835
bellard7d132992003-03-06 23:23:54 +0000836for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200837 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000838 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000839 --help|-h) show_help=yes
840 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400841 --version|-V) exec cat $source_path/VERSION
842 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000843 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000844 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000845 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000846 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100847 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000848 ;;
aliguoriac0df512008-12-29 17:14:15 +0000849 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000850 ;;
aliguoriac0df512008-12-29 17:14:15 +0000851 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000852 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000853 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000854 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400855 --cxx=*)
856 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200857 --iasl=*) iasl="$optarg"
858 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100859 --objcc=*) objcc="$optarg"
860 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000861 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000862 ;;
pbrook6a882642006-04-17 13:57:12 +0000863 --install=*) install="$optarg"
864 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000865 --python=*) python="$optarg"
866 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000867 --gcov=*) gcov_tool="$optarg"
868 ;;
Brade2d88302011-09-02 16:53:28 -0400869 --smbd=*) smbd="$optarg"
870 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200871 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000872 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100873 --extra-cxxflags=*)
874 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200875 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000876 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100877 --enable-debug-info)
878 ;;
879 --disable-debug-info)
880 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800881 --enable-modules)
882 modules="yes"
883 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000884 --disable-modules)
885 modules="no"
886 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200887 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000888 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000889 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000890 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200891 --enable-trace-backends=*) trace_backends="$optarg"
892 ;;
893 # XXX: backwards compatibility
894 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100895 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100896 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100897 ;;
bellard7d132992003-03-06 23:23:54 +0000898 --enable-gprof) gprof="yes"
899 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000900 --enable-gcov) gcov="yes"
901 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100902 --static)
903 static="yes"
904 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300905 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000906 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200907 --mandir=*) mandir="$optarg"
908 ;;
909 --bindir=*) bindir="$optarg"
910 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300911 --libdir=*) libdir="$optarg"
912 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400913 --libexecdir=*) libexecdir="$optarg"
914 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200915 --includedir=*) includedir="$optarg"
916 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300917 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200918 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300919 --with-confsuffix=*) confsuffix="$optarg"
920 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300921 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200922 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100923 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600924 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300925 --localstatedir=*) local_statedir="$optarg"
926 ;;
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200927 --firmwarepath=*) firmwarepath="$optarg"
928 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300929 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400930 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
931 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
932 # These switches are silently ignored, for compatibility with
933 # autoconf-generated configure scripts. This allows QEMU's
934 # configure to be used by RPM and similar macros that set
935 # lots of directory switches by default.
936 ;;
bellard97a847b2003-08-10 21:36:04 +0000937 --disable-sdl) sdl="no"
938 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200939 --enable-sdl) sdl="yes"
940 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000941 --with-sdlabi=*) sdlabi="$optarg"
942 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200943 --disable-qom-cast-debug) qom_cast_debug="no"
944 ;;
945 --enable-qom-cast-debug) qom_cast_debug="yes"
946 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530947 --disable-virtfs) virtfs="no"
948 ;;
949 --enable-virtfs) virtfs="yes"
950 ;;
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200951 --disable-mpath) mpath="no"
952 ;;
953 --enable-mpath) mpath="yes"
954 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100955 --disable-vnc) vnc="no"
956 ;;
957 --enable-vnc) vnc="yes"
958 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000959 --oss-lib=*) oss_lib="$optarg"
960 ;;
malc0c58ac12008-06-25 21:04:05 +0000961 --audio-drv-list=*) audio_drv_list="$optarg"
962 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200963 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800964 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200965 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100966 ;;
aurel32f8393942009-04-13 18:45:38 +0000967 --enable-debug-tcg) debug_tcg="yes"
968 ;;
969 --disable-debug-tcg) debug_tcg="no"
970 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100971 --enable-debug)
972 # Enable debugging options that aren't excessively noisy
973 debug_tcg="yes"
974 debug="yes"
975 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500976 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100977 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000978 --enable-sparse) sparse="yes"
979 ;;
980 --disable-sparse) sparse="no"
981 ;;
aliguori1625af82009-04-05 17:41:02 +0000982 --disable-strip) strip_opt="no"
983 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000984 --disable-vnc-sasl) vnc_sasl="no"
985 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200986 --enable-vnc-sasl) vnc_sasl="yes"
987 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200988 --disable-vnc-jpeg) vnc_jpeg="no"
989 ;;
990 --enable-vnc-jpeg) vnc_jpeg="yes"
991 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200992 --disable-vnc-png) vnc_png="no"
993 ;;
994 --enable-vnc-png) vnc_png="yes"
995 ;;
bellard443f1372004-06-04 11:13:20 +0000996 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000997 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000998 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000999 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +02001000 --enable-vde) vde="yes"
1001 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +01001002 --disable-netmap) netmap="no"
1003 ;;
1004 --enable-netmap) netmap="yes"
1005 ;;
aliguorie37630c2009-04-22 15:19:10 +00001006 --disable-xen) xen="no"
1007 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +02001008 --enable-xen) xen="yes"
1009 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +00001010 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
1011 ;;
1012 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
1013 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +00001014 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
1015 ;;
1016 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
1017 ;;
aurel322e4d9fb2008-04-08 06:01:02 +00001018 --disable-brlapi) brlapi="no"
1019 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +02001020 --enable-brlapi) brlapi="yes"
1021 ;;
balrogfb599c92008-09-28 23:49:55 +00001022 --disable-bluez) bluez="no"
1023 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +02001024 --enable-bluez) bluez="yes"
1025 ;;
aliguori7ba1e612008-11-05 16:04:33 +00001026 --disable-kvm) kvm="no"
1027 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +02001028 --enable-kvm) kvm="yes"
1029 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001030 --disable-hax) hax="no"
zhanghailiang180fb752016-10-27 14:43:08 +08001031 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001032 --enable-hax) hax="yes"
zhanghailiang180fb752016-10-27 14:43:08 +08001033 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +02001034 --disable-tcg-interpreter) tcg_interpreter="no"
1035 ;;
1036 --enable-tcg-interpreter) tcg_interpreter="yes"
1037 ;;
Corey Bryant47e98652012-01-26 09:42:26 -05001038 --disable-cap-ng) cap_ng="no"
1039 ;;
1040 --enable-cap-ng) cap_ng="yes"
1041 ;;
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02001042 --disable-tcg) tcg="no"
1043 ;;
1044 --enable-tcg) tcg="yes"
1045 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01001046 --disable-spice) spice="no"
1047 ;;
1048 --enable-spice) spice="yes"
1049 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11001050 --disable-libiscsi) libiscsi="no"
1051 ;;
1052 --enable-libiscsi) libiscsi="yes"
1053 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +01001054 --disable-libnfs) libnfs="no"
1055 ;;
1056 --enable-libnfs) libnfs="yes"
1057 ;;
bellard05c2a3e2006-02-08 22:39:17 +00001058 --enable-profiler) profiler="yes"
1059 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +04001060 --disable-cocoa) cocoa="no"
1061 ;;
malcc2de5c92008-06-28 19:13:06 +00001062 --enable-cocoa)
1063 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +02001064 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +00001065 ;;
pbrookcad25d62006-03-19 16:31:11 +00001066 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001067 ;;
pbrookcad25d62006-03-19 16:31:11 +00001068 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +00001069 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -10001070 --disable-user)
1071 linux_user="no" ;
1072 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -10001073 ;;
1074 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +00001075 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001076 ;;
ths831b7822007-01-18 20:06:33 +00001077 --enable-linux-user) linux_user="yes"
1078 ;;
blueswir184778502008-10-26 20:33:16 +00001079 --disable-bsd-user) bsd_user="no"
1080 ;;
1081 --enable-bsd-user) bsd_user="yes"
1082 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001083 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001084 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001085 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001086 ;;
bellard85aa5182007-11-11 20:17:03 +00001087 --enable-werror) werror="yes"
1088 ;;
1089 --disable-werror) werror="no"
1090 ;;
Steven Noonan63678e12014-03-28 17:19:02 +01001091 --enable-stack-protector) stack_protector="yes"
1092 ;;
1093 --disable-stack-protector) stack_protector="no"
1094 ;;
balrog4d3b6f62008-02-10 16:33:14 +00001095 --disable-curses) curses="no"
1096 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +02001097 --enable-curses) curses="yes"
1098 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001099 --disable-curl) curl="no"
1100 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001101 --enable-curl) curl="yes"
1102 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001103 --disable-fdt) fdt="no"
1104 ;;
1105 --enable-fdt) fdt="yes"
1106 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001107 --disable-linux-aio) linux_aio="no"
1108 ;;
1109 --enable-linux-aio) linux_aio="yes"
1110 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001111 --disable-attr) attr="no"
1112 ;;
1113 --enable-attr) attr="yes"
1114 ;;
ths77755342008-11-27 15:45:16 +00001115 --disable-blobs) blobs="no"
1116 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001117 --with-pkgversion=*) pkgversion=" ($optarg)"
1118 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001119 --with-coroutine=*) coroutine="$optarg"
1120 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001121 --disable-coroutine-pool) coroutine_pool="no"
1122 ;;
1123 --enable-coroutine-pool) coroutine_pool="yes"
1124 ;;
Peter Lieven7d992e42016-09-27 11:58:45 +02001125 --enable-debug-stack-usage) debug_stack_usage="yes"
1126 ;;
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001127 --enable-crypto-afalg) crypto_afalg="yes"
1128 ;;
1129 --disable-crypto-afalg) crypto_afalg="no"
1130 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001131 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001132 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001133 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001134 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001135 --disable-vhost-net) vhost_net="no"
1136 ;;
1137 --enable-vhost-net) vhost_net="yes"
1138 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001139 --disable-vhost-scsi) vhost_scsi="no"
1140 ;;
1141 --enable-vhost-scsi) vhost_scsi="yes"
1142 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001143 --disable-vhost-vsock) vhost_vsock="no"
1144 ;;
1145 --enable-vhost-vsock) vhost_vsock="yes"
1146 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001147 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001148 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001149 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001150 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001151 --disable-rbd) rbd="no"
1152 ;;
1153 --enable-rbd) rbd="yes"
1154 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001155 --disable-xfsctl) xfs="no"
1156 ;;
1157 --enable-xfsctl) xfs="yes"
1158 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001159 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001160 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001161 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001162 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001163 --disable-libusb) libusb="no"
1164 ;;
1165 --enable-libusb) libusb="yes"
1166 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001167 --disable-usb-redir) usb_redir="no"
1168 ;;
1169 --enable-usb-redir) usb_redir="yes"
1170 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001171 --disable-zlib-test) zlib="no"
1172 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001173 --disable-lzo) lzo="no"
1174 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001175 --enable-lzo) lzo="yes"
1176 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001177 --disable-snappy) snappy="no"
1178 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001179 --enable-snappy) snappy="yes"
1180 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001181 --disable-bzip2) bzip2="no"
1182 ;;
1183 --enable-bzip2) bzip2="yes"
1184 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001185 --enable-guest-agent) guest_agent="yes"
1186 ;;
1187 --disable-guest-agent) guest_agent="no"
1188 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001189 --enable-guest-agent-msi) guest_agent_msi="yes"
1190 ;;
1191 --disable-guest-agent-msi) guest_agent_msi="no"
1192 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001193 --with-vss-sdk) vss_win32_sdk=""
1194 ;;
1195 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1196 ;;
1197 --without-vss-sdk) vss_win32_sdk="no"
1198 ;;
1199 --with-win-sdk) win_sdk=""
1200 ;;
1201 --with-win-sdk=*) win_sdk="$optarg"
1202 ;;
1203 --without-win-sdk) win_sdk="no"
1204 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001205 --enable-tools) want_tools="yes"
1206 ;;
1207 --disable-tools) want_tools="no"
1208 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001209 --enable-seccomp) seccomp="yes"
1210 ;;
1211 --disable-seccomp) seccomp="no"
1212 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301213 --disable-glusterfs) glusterfs="no"
1214 ;;
1215 --enable-glusterfs) glusterfs="yes"
1216 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001217 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1218 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001219 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001220 --enable-vhdx|--disable-vhdx)
1221 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1222 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001223 --enable-uuid|--disable-uuid)
1224 echo "$0: $opt is obsolete, UUID support is always built" >&2
1225 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001226 --disable-gtk) gtk="no"
1227 ;;
1228 --enable-gtk) gtk="yes"
1229 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001230 --tls-priority=*) tls_priority="$optarg"
1231 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001232 --disable-gnutls) gnutls="no"
1233 ;;
1234 --enable-gnutls) gnutls="yes"
1235 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001236 --disable-nettle) nettle="no"
1237 ;;
1238 --enable-nettle) nettle="yes"
1239 ;;
1240 --disable-gcrypt) gcrypt="no"
1241 ;;
1242 --enable-gcrypt) gcrypt="yes"
1243 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001244 --enable-rdma) rdma="yes"
1245 ;;
1246 --disable-rdma) rdma="no"
1247 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001248 --with-gtkabi=*) gtkabi="$optarg"
1249 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001250 --disable-vte) vte="no"
1251 ;;
1252 --enable-vte) vte="yes"
1253 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001254 --disable-virglrenderer) virglrenderer="no"
1255 ;;
1256 --enable-virglrenderer) virglrenderer="yes"
1257 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001258 --disable-tpm) tpm="no"
1259 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001260 --enable-tpm) tpm="yes"
1261 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001262 --disable-libssh2) libssh2="no"
1263 ;;
1264 --enable-libssh2) libssh2="yes"
1265 ;;
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001266 --disable-live-block-migration) live_block_migration="no"
1267 ;;
1268 --enable-live-block-migration) live_block_migration="yes"
1269 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001270 --disable-numa) numa="no"
1271 ;;
1272 --enable-numa) numa="yes"
1273 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001274 --disable-tcmalloc) tcmalloc="no"
1275 ;;
1276 --enable-tcmalloc) tcmalloc="yes"
1277 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001278 --disable-jemalloc) jemalloc="no"
1279 ;;
1280 --enable-jemalloc) jemalloc="yes"
1281 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001282 --disable-replication) replication="no"
1283 ;;
1284 --enable-replication) replication="yes"
1285 ;;
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001286 --disable-vxhs) vxhs="no"
1287 ;;
1288 --enable-vxhs) vxhs="yes"
1289 ;;
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001290 --disable-vhost-user) vhost_user="no"
1291 ;;
1292 --enable-vhost-user)
1293 vhost_user="yes"
1294 if test "$mingw32" = "yes"; then
1295 error_exit "vhost-user isn't available on win32"
1296 fi
1297 ;;
Richard Henderson8ca80762017-09-14 09:41:12 -07001298 --disable-capstone) capstone="no"
1299 ;;
1300 --enable-capstone) capstone="yes"
1301 ;;
Richard Hendersone219c492017-09-28 09:01:23 -07001302 --enable-capstone=git) capstone="git"
1303 ;;
1304 --enable-capstone=system) capstone="system"
1305 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001306 *)
1307 echo "ERROR: unknown option $opt"
1308 echo "Try '$0 --help' for more information"
1309 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001310 ;;
bellard7d132992003-03-06 23:23:54 +00001311 esac
1312done
1313
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001314if test "$vhost_user" = ""; then
1315 if test "$mingw32" = "yes"; then
1316 vhost_user="no"
1317 else
1318 vhost_user="yes"
1319 fi
1320fi
1321
bellard40293e52008-01-31 11:32:10 +00001322case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001323 ppc)
1324 CPU_CFLAGS="-m32"
1325 LDFLAGS="-m32 $LDFLAGS"
1326 ;;
1327 ppc64)
1328 CPU_CFLAGS="-m64"
1329 LDFLAGS="-m64 $LDFLAGS"
1330 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001331 sparc)
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001332 CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
1333 LDFLAGS="-m32 -mv8plus $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001334 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001335 sparc64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001336 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001337 LDFLAGS="-m64 $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001338 ;;
ths76d83bd2007-11-18 21:22:10 +00001339 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001340 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001341 LDFLAGS="-m31 $LDFLAGS"
1342 ;;
1343 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001344 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001345 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001346 ;;
bellard40293e52008-01-31 11:32:10 +00001347 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001348 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001349 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001350 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001351 ;;
1352 x86_64)
Richard Henderson7ebee432016-06-29 21:10:59 -07001353 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1354 # If we truly care, we should simply detect this case at
1355 # runtime and generate the fallback to serial emulation.
1356 CPU_CFLAGS="-m64 -mcx16"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001357 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001358 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001359 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001360 x32)
1361 CPU_CFLAGS="-mx32"
1362 LDFLAGS="-mx32 $LDFLAGS"
1363 cc_i386='$(CC) -m32'
1364 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001365 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001366esac
1367
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001368QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1369EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1370
Peter Maydellaffc88c2016-06-13 11:32:24 +01001371# For user-mode emulation the host arch has to be one we explicitly
1372# support, even if we're using TCI.
1373if [ "$ARCH" = "unknown" ]; then
1374 bsd_user="no"
1375 linux_user="no"
1376fi
1377
Peter Maydell60e0df22011-05-03 14:50:13 +01001378default_target_list=""
1379
Peter Maydell6e92f822013-05-20 16:16:15 +01001380mak_wilds=""
1381
1382if [ "$softmmu" = "yes" ]; then
1383 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001384fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001385if [ "$linux_user" = "yes" ]; then
1386 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001387fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001388if [ "$bsd_user" = "yes" ]; then
1389 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001390fi
1391
Peter Maydell6e92f822013-05-20 16:16:15 +01001392for config in $mak_wilds; do
1393 default_target_list="${default_target_list} $(basename "$config" .mak)"
1394done
1395
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001396# Enumerate public trace backends for --help output
Greg Kurz64a60472017-04-26 15:36:07 +02001397trace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/'))
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001398
pbrookaf5db582006-04-08 14:26:41 +00001399if test x"$show_help" = x"yes" ; then
1400cat << EOF
1401
1402Usage: configure [options]
1403Options: [defaults in brackets after descriptions]
1404
Stefan Weil08fb77e2013-12-18 22:09:39 +01001405Standard options:
1406 --help print this message
1407 --prefix=PREFIX install in PREFIX [$prefix]
1408 --interp-prefix=PREFIX where to find shared libraries, etc.
1409 use %M for cpu name [$interp_prefix]
1410 --target-list=LIST set target list (default: build everything)
1411$(echo Available targets: $default_target_list | \
1412 fold -s -w 53 | sed -e 's/^/ /')
1413
1414Advanced options (experts only):
1415 --source-path=PATH path of source code [$source_path]
1416 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1417 --cc=CC use C compiler CC [$cc]
1418 --iasl=IASL use ACPI compiler IASL [$iasl]
1419 --host-cc=CC use C compiler CC [$host_cc] for code run at
1420 build time
1421 --cxx=CXX use C++ compiler CXX [$cxx]
1422 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1423 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01001424 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
Stefan Weil08fb77e2013-12-18 22:09:39 +01001425 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1426 --make=MAKE use specified make [$make]
1427 --install=INSTALL use specified install [$install]
1428 --python=PYTHON use specified python [$python]
1429 --smbd=SMBD use specified smbd [$smbd]
1430 --static enable static build [$static]
1431 --mandir=PATH install man pages in PATH
1432 --datadir=PATH install firmware in PATH$confsuffix
1433 --docdir=PATH install documentation in PATH$confsuffix
1434 --bindir=PATH install binaries in PATH
1435 --libdir=PATH install libraries in PATH
1436 --sysconfdir=PATH install config in PATH$confsuffix
1437 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02001438 --firmwarepath=PATH search PATH for firmware files
Fam Zhenge26110c2014-02-10 14:48:57 +08001439 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001440 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001441 --disable-strip disable stripping binaries
1442 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001443 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001444 --audio-drv-list=LIST set audio drivers list:
1445 Available drivers: $audio_possible_drivers
1446 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1447 --block-drv-rw-whitelist=L
1448 set block driver read-write whitelist
1449 (affects only QEMU, not qemu-img)
1450 --block-drv-ro-whitelist=L
1451 set block driver read-only whitelist
1452 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001453 --enable-trace-backends=B Set trace backend
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001454 Available backends: $trace_backend_list
Stefan Weil08fb77e2013-12-18 22:09:39 +01001455 --with-trace-file=NAME Full PATH,NAME of file to store traces
1456 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001457 --disable-slirp disable SLIRP userspace network connectivity
1458 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1459 --oss-lib path to OSS library
1460 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001461 --with-coroutine=BACKEND coroutine backend. Supported options:
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01001462 ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001463 --enable-gcov enable test coverage analysis with gcov
1464 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001465 --disable-blobs disable installing provided firmware blobs
1466 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1467 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001468 --tls-priority default TLS protocol/cipher priority string
Lin Mac12d66a2017-03-10 18:14:05 +08001469 --enable-gprof QEMU profiling with gprof
1470 --enable-profiler profiler support
1471 --enable-xen-pv-domain-build
1472 xen pv domain builder
1473 --enable-debug-stack-usage
1474 track the maximum stack usage of stacks created by qemu_alloc_stack
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001475
1476Optional features, enabled with --enable-FEATURE and
1477disabled with --disable-FEATURE, default is enabled if available:
1478
1479 system all system emulation targets
1480 user supported user emulation targets
1481 linux-user all linux usermode emulation targets
1482 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001483 docs build documentation
1484 guest-agent build the QEMU Guest Agent
1485 guest-agent-msi build guest agent Windows MSI installation package
1486 pie Position Independent Executables
1487 modules modules support
1488 debug-tcg TCG debugging (default is disabled)
1489 debug-info debugging information
1490 sparse sparse checker
1491
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001492 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001493 nettle nettle cryptography support
1494 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001495 sdl SDL UI
1496 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1497 gtk gtk UI
1498 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1499 vte vte support for the gtk UI
1500 curses curses UI
1501 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001502 vnc-sasl SASL encryption for VNC server
1503 vnc-jpeg JPEG lossy compression for VNC server
1504 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001505 cocoa Cocoa UI (Mac OS X only)
1506 virtfs VirtFS
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02001507 mpath Multipath persistent reservation passthrough
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001508 xen xen backend driver support
1509 xen-pci-passthrough
1510 brlapi BrlAPI (Braile)
1511 curl curl connectivity
1512 fdt fdt device tree
1513 bluez bluez stack connectivity
1514 kvm KVM acceleration support
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001515 hax HAX acceleration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001516 rdma RDMA-based migration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001517 vde support for vde network
1518 netmap support for netmap network
1519 linux-aio Linux AIO support
1520 cap-ng libcap-ng support
1521 attr attr and xattr support
1522 vhost-net vhost-net acceleration support
1523 spice spice
1524 rbd rados block device (rbd)
1525 libiscsi iscsi support
1526 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001527 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001528 libusb libusb (for usb passthrough)
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001529 live-block-migration Block migration in the main migration stream
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001530 usb-redir usb network redirection support
1531 lzo support of lzo compression library
1532 snappy support of snappy compression library
1533 bzip2 support of bzip2 compression library
1534 (for reading bzip2-compressed dmg images)
1535 seccomp seccomp support
1536 coroutine-pool coroutine freelist (better performance)
1537 glusterfs GlusterFS backend
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001538 tpm TPM support
1539 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001540 numa libnuma support
1541 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001542 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001543 replication replication support
Lin Mac12d66a2017-03-10 18:14:05 +08001544 vhost-vsock virtio sockets device support
1545 opengl opengl support
1546 virglrenderer virgl rendering support
1547 xfsctl xfsctl support
1548 qom-cast-debug cast debugging support
1549 tools build qemu-io, qemu-nbd and qemu-image tools
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001550 vxhs Veritas HyperScale vDisk backend support
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001551 crypto-afalg Linux AF_ALG crypto backend driver
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001552 vhost-user vhost-user support
Richard Henderson8ca80762017-09-14 09:41:12 -07001553 capstone capstone disassembler support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001554
1555NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001556EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001557exit 0
pbrookaf5db582006-04-08 14:26:41 +00001558fi
1559
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001560if ! has $python; then
1561 error_exit "Python not found. Use --python=/path/to/python"
1562fi
1563
1564# Note that if the Python conditional here evaluates True we will exit
1565# with status 1 which is a shell 'false' value.
1566if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1567 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1568 "Note that Python 3 or later is not yet supported." \
1569 "Use --python=/path/to/python to specify a supported Python."
1570fi
1571
1572# Suppress writing compiled files
1573python="$python -B"
1574
Peter Maydell359bc952011-12-24 13:07:25 +00001575# Now we have handled --enable-tcg-interpreter and know we're not just
1576# printing the help message, bail out if the host CPU isn't supported.
1577if test "$ARCH" = "unknown"; then
1578 if test "$tcg_interpreter" = "yes" ; then
1579 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001580 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001581 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001582 fi
1583fi
1584
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001585# Consult white-list to determine whether to enable werror
1586# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001587if test -z "$werror" ; then
1588 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001589 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001590 werror="yes"
1591 else
1592 werror="no"
1593 fi
1594fi
1595
Paolo Bonzini8d050952010-12-23 11:43:52 +01001596# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001597write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001598if compile_object ; then
1599 : C compiler works ok
1600else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001601 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001602fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001603if ! compile_prog ; then
1604 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1605fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001606
Peter Maydellfb59dab2017-03-28 14:01:52 +01001607if test "$bogus_os" = "yes"; then
1608 # Now that we know that we're not printing the help and that
1609 # the compiler works (so the results of the check_defines we used
1610 # to identify the OS are reliable), if we didn't recognize the
1611 # host OS we should stop now.
Peter Maydell951fedf2017-07-13 16:15:32 +01001612 error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
Peter Maydellfb59dab2017-03-28 14:01:52 +01001613fi
1614
Paolo Bonzini8d050952010-12-23 11:43:52 +01001615gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1616gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001617gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001618gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Paolo Bonzinib98fcfd2017-07-11 10:08:55 +02001619gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001620gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001621# Note that we do not add -Werror to gcc_flags here, because that would
1622# enable it for all configure tests. If a configure test failed due
1623# to -Werror this would just silently disable some features,
1624# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001625
1626cc_has_warning_flag() {
1627 write_c_skeleton;
1628
Peter Maydella1d29d62012-10-27 22:19:07 +01001629 # Use the positive sense of the flag when testing for -Wno-wombat
1630 # support (gcc will happily accept the -Wno- form of unknown
1631 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001632 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1633 compile_prog "-Werror $optflag" ""
1634}
1635
1636for flag in $gcc_flags; do
1637 if cc_has_warning_flag $flag ; then
1638 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001639 fi
1640done
1641
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001642if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001643 cat > $TMPC << EOF
1644int main(int argc, char *argv[])
1645{
1646 char arr[64], *p = arr, *c = argv[0];
1647 while (*c) {
1648 *p++ = *c++;
1649 }
1650 return 0;
1651}
1652EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001653 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001654 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001655 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001656 # We need to check both a compile and a link, since some compiler
1657 # setups fail only on a .c->.o compile and some only at link time
1658 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1659 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001660 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001661 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001662 break
1663 fi
1664 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001665 if test "$stack_protector" = yes; then
1666 if test $sp_on = 0; then
1667 error_exit "Stack protector not supported"
1668 fi
1669 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001670fi
1671
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001672# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1673# large functions that use global variables. The bug is in all releases of
1674# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1675# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1676cat > $TMPC << EOF
1677#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1678int main(void) { return 0; }
1679#else
1680#error No bug in this compiler.
1681#endif
1682EOF
1683if compile_prog "-Werror -fno-gcse" "" ; then
1684 TRANSLATE_OPT_CFLAGS=-fno-gcse
1685fi
1686
Avi Kivity40d64442011-11-15 20:12:17 +02001687if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001688 if test "$modules" = "yes" ; then
1689 error_exit "static and modules are mutually incompatible"
1690 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001691 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001692 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001693 else
1694 pie="no"
1695 fi
1696fi
1697
Emilio G. Cota768b7852015-04-29 13:09:02 +02001698# Unconditional check for compiler __thread support
1699 cat > $TMPC << EOF
1700static __thread int tls_var;
1701int main(void) { return tls_var; }
1702EOF
1703
1704if ! compile_prog "-Werror" "" ; then
1705 error_exit "Your compiler does not support the __thread specifier for " \
1706 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1707fi
1708
Avi Kivity40d64442011-11-15 20:12:17 +02001709if test "$pie" = ""; then
1710 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001711 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001712 ;;
1713 *)
1714 pie="no"
1715 ;;
1716 esac
1717fi
1718
1719if test "$pie" != "no" ; then
1720 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001721
1722#ifdef __linux__
1723# define THREAD __thread
1724#else
1725# define THREAD
1726#endif
1727
1728static THREAD int tls_var;
1729
1730int main(void) { return tls_var; }
1731
Avi Kivity40d64442011-11-15 20:12:17 +02001732EOF
1733 if compile_prog "-fPIE -DPIE" "-pie"; then
1734 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1735 LDFLAGS="-pie $LDFLAGS"
1736 pie="yes"
1737 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1738 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1739 fi
1740 else
1741 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001742 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001743 else
1744 echo "Disabling PIE due to missing toolchain support"
1745 pie="no"
1746 fi
1747 fi
Brad46eef332013-12-10 19:49:08 -05001748
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001749 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001750 CFLAGS_NOPIE="-fno-pie"
1751 LDFLAGS_NOPIE="-nopie"
1752 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001753fi
1754
Paolo Bonzini09dada42013-04-17 16:26:47 +02001755##########################################
1756# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1757# use i686 as default anyway, but for those that don't, an explicit
1758# specification is necessary
1759
1760if test "$cpu" = "i386"; then
1761 cat > $TMPC << EOF
1762static int sfaa(int *ptr)
1763{
1764 return __sync_fetch_and_and(ptr, 0);
1765}
1766
1767int main(void)
1768{
1769 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001770 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001771 sfaa(&val);
1772 return val;
1773}
1774EOF
1775 if ! compile_prog "" "" ; then
1776 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1777 fi
1778fi
1779
1780#########################################
bellardec530c82006-04-25 22:36:06 +00001781# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001782
bellardec530c82006-04-25 22:36:06 +00001783if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001784 if has $install; then
1785 :
1786 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001787 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1788 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1789 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001790 fi
Stefan Weil89138852016-05-16 15:10:20 +02001791 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001792 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1793 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1794 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001795 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001796 if has ar; then
1797 :
1798 else
bellardec530c82006-04-25 22:36:06 +00001799 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001800 error_exit "No path includes ar" \
1801 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001802 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001803 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001804 fi
ths5fafdf22007-09-16 21:08:06 +00001805fi
bellardec530c82006-04-25 22:36:06 +00001806
Stefan Weilafb63eb2012-09-26 22:04:38 +02001807if test -z "${target_list+xxx}" ; then
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001808 for target in $default_target_list; do
1809 supported_target $target 2>/dev/null && \
1810 target_list="$target_list $target"
1811 done
1812 target_list="${target_list# }"
Anthony Liguori121afa92012-09-14 08:17:03 -05001813else
Stefan Weil89138852016-05-16 15:10:20 +02001814 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001815 for target in $target_list; do
1816 # Check that we recognised the target name; this allows a more
1817 # friendly error message than if we let it fall through.
1818 case " $default_target_list " in
1819 *" $target "*)
1820 ;;
1821 *)
1822 error_exit "Unknown target name '$target'"
1823 ;;
1824 esac
1825 supported_target $target || exit 1
1826 done
bellard5327cf42005-01-10 23:18:50 +00001827fi
Peter Maydell25b48332013-05-20 16:16:16 +01001828
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001829# see if system emulation was really requested
1830case " $target_list " in
1831 *"-softmmu "*) softmmu=yes
1832 ;;
1833 *) softmmu=no
1834 ;;
1835esac
bellard5327cf42005-01-10 23:18:50 +00001836
Juan Quintela249247c2009-08-12 18:20:25 +02001837feature_not_found() {
1838 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001839 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001840
Peter Maydell76ad07a2013-04-08 12:11:26 +01001841 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001842 "configure was not able to find it." \
1843 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001844}
1845
bellard7d132992003-03-06 23:23:54 +00001846# ---
1847# big/little endian test
1848cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001849short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1850short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1851extern int foo(short *, short *);
1852int main(int argc, char *argv[]) {
1853 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001854}
1855EOF
1856
Mike Frysinger61cc9192013-06-30 23:30:18 -04001857if compile_object ; then
1858 if grep -q BiGeNdIaN $TMPO ; then
1859 bigendian="yes"
1860 elif grep -q LiTtLeEnDiAn $TMPO ; then
1861 bigendian="no"
1862 else
1863 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001864 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001865else
1866 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001867fi
1868
Juan Quintelab0a47e72009-08-12 18:29:49 +02001869##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001870# cocoa implies not SDL or GTK
1871# (the cocoa UI code currently assumes it is always the active UI
1872# and doesn't interact well with other UI frontend code)
1873if test "$cocoa" = "yes"; then
1874 if test "$sdl" = "yes"; then
1875 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1876 fi
1877 if test "$gtk" = "yes"; then
1878 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1879 fi
1880 gtk=no
1881 sdl=no
1882fi
1883
Eric Blake6b39b062016-10-11 10:46:23 -05001884# Some versions of Mac OS X incorrectly define SIZE_MAX
1885cat > $TMPC << EOF
1886#include <stdint.h>
1887#include <stdio.h>
1888int main(int argc, char *argv[]) {
1889 return printf("%zu", SIZE_MAX);
1890}
1891EOF
1892have_broken_size_max=no
1893if ! compile_object -Werror ; then
1894 have_broken_size_max=yes
1895fi
1896
Peter Maydella30878e2015-08-14 16:10:52 +01001897##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001898# L2TPV3 probe
1899
1900cat > $TMPC <<EOF
1901#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001902#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001903int main(void) { return sizeof(struct mmsghdr); }
1904EOF
1905if compile_prog "" "" ; then
1906 l2tpv3=yes
1907else
1908 l2tpv3=no
1909fi
1910
1911##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001912# MinGW / Mingw-w64 localtime_r/gmtime_r check
1913
1914if test "$mingw32" = "yes"; then
1915 # Some versions of MinGW / Mingw-w64 lack localtime_r
1916 # and gmtime_r entirely.
1917 #
1918 # Some versions of Mingw-w64 define a macro for
1919 # localtime_r/gmtime_r.
1920 #
1921 # Some versions of Mingw-w64 will define functions
1922 # for localtime_r/gmtime_r, but only if you have
1923 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1924 # though, unistd.h and pthread.h both define
1925 # that for you.
1926 #
1927 # So this #undef localtime_r and #include <unistd.h>
1928 # are not in fact redundant.
1929cat > $TMPC << EOF
1930#include <unistd.h>
1931#include <time.h>
1932#undef localtime_r
1933int main(void) { localtime_r(NULL, NULL); return 0; }
1934EOF
1935 if compile_prog "" "" ; then
1936 localtime_r="yes"
1937 else
1938 localtime_r="no"
1939 fi
1940fi
1941
1942##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001943# pkg-config probe
1944
1945if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001946 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001947fi
1948
1949##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001950# NPTL probe
1951
Peter Maydell24cb36a2013-07-16 18:45:00 +01001952if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001953 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001954#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001955#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001956int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001957#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1958#error bork
1959#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001960 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001961}
1962EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001963 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001964 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001965 fi
pbrookbd0c5662008-05-29 14:34:11 +00001966fi
1967
Liang Li99f2dbd2016-03-08 13:53:16 +08001968#########################################
balrogac629222008-10-11 09:56:04 +00001969# zlib check
1970
Alon Levy1ece9902011-07-26 12:30:40 +03001971if test "$zlib" != "no" ; then
1972 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001973#include <zlib.h>
1974int main(void) { zlibVersion(); return 0; }
1975EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001976 if compile_prog "" "-lz" ; then
1977 :
1978 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001979 error_exit "zlib check failed" \
1980 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001981 fi
balrogac629222008-10-11 09:56:04 +00001982fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001983LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001984
1985##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001986# lzo check
1987
1988if test "$lzo" != "no" ; then
1989 cat > $TMPC << EOF
1990#include <lzo/lzo1x.h>
1991int main(void) { lzo_version(); return 0; }
1992EOF
1993 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001994 libs_softmmu="$libs_softmmu -llzo2"
1995 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001996 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001997 if test "$lzo" = "yes"; then
1998 feature_not_found "liblzo2" "Install liblzo2 devel"
1999 fi
2000 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002001 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002002fi
2003
2004##########################################
2005# snappy check
2006
2007if test "$snappy" != "no" ; then
2008 cat > $TMPC << EOF
2009#include <snappy-c.h>
2010int main(void) { snappy_max_compressed_length(4096); return 0; }
2011EOF
2012 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002013 libs_softmmu="$libs_softmmu -lsnappy"
2014 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002015 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002016 if test "$snappy" = "yes"; then
2017 feature_not_found "libsnappy" "Install libsnappy devel"
2018 fi
2019 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002020 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002021fi
2022
2023##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01002024# bzip2 check
2025
2026if test "$bzip2" != "no" ; then
2027 cat > $TMPC << EOF
2028#include <bzlib.h>
2029int main(void) { BZ2_bzlibVersion(); return 0; }
2030EOF
2031 if compile_prog "" "-lbz2" ; then
2032 bzip2="yes"
2033 else
2034 if test "$bzip2" = "yes"; then
2035 feature_not_found "libbzip2" "Install libbzip2 devel"
2036 fi
2037 bzip2="no"
2038 fi
2039fi
2040
2041##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03002042# libseccomp check
2043
2044if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04002045 case "$cpu" in
2046 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06002047 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04002048 ;;
James Hogan5ce43972016-04-08 14:16:34 +01002049 mips)
2050 libseccomp_minver="2.2.0"
2051 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002052 arm|aarch64)
2053 libseccomp_minver="2.2.3"
2054 ;;
Thomas Huth3aa35fc2017-09-14 12:36:03 +02002055 ppc|ppc64|s390x)
Michael Strosaker3e684452016-06-01 18:30:18 -05002056 libseccomp_minver="2.3.0"
2057 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002058 *)
2059 libseccomp_minver=""
2060 ;;
2061 esac
2062
2063 if test "$libseccomp_minver" != "" &&
2064 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Fam Zhengc3883e12017-09-07 16:53:16 +08002065 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2066 seccomp_libs="$($pkg_config --libs libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04002067 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03002068 else
Andrew Jones693e5912015-09-30 11:59:18 -04002069 if test "$seccomp" = "yes" ; then
2070 if test "$libseccomp_minver" != "" ; then
2071 feature_not_found "libseccomp" \
2072 "Install libseccomp devel >= $libseccomp_minver"
2073 else
2074 feature_not_found "libseccomp" \
2075 "libseccomp is not supported for host cpu $cpu"
2076 fi
2077 fi
2078 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03002079 fi
2080fi
2081##########################################
aliguorie37630c2009-04-22 15:19:10 +00002082# xen probe
2083
Juan Quintelafc321b42009-08-12 18:29:55 +02002084if test "$xen" != "no" ; then
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002085 # Check whether Xen library path is specified via --extra-ldflags to avoid
2086 # overriding this setting with pkg-config output. If not, try pkg-config
2087 # to obtain all needed flags.
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002088
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002089 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2090 $pkg_config --exists xencontrol ; then
2091 xen_ctrl_version="$(printf '%d%02d%02d' \
2092 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2093 xen=yes
2094 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2095 xen_pc="$xen_pc xenevtchn xendevicemodel"
2096 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2097 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2098 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2099 else
Stefan Weil50ced5b2011-12-17 09:27:39 +01002100
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002101 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd9506ca2017-05-11 12:35:42 +01002102 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002103
2104 # First we test whether Xen headers and libraries are available.
2105 # If no, we are done and there is no Xen support.
2106 # If yes, more tests are run to detect the Xen version.
2107
2108 # Xen (any)
2109 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002110#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002111int main(void) {
2112 return 0;
2113}
2114EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002115 if ! compile_prog "" "$xen_libs" ; then
2116 # Xen not found
2117 if test "$xen" = "yes" ; then
2118 feature_not_found "xen" "Install xen devel"
2119 fi
2120 xen=no
Stefan Weil50ced5b2011-12-17 09:27:39 +01002121
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002122 # Xen unstable
2123 elif
2124 cat > $TMPC <<EOF &&
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002125#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2126#include <xenforeignmemory.h>
2127int main(void) {
2128 xenforeignmemory_handle *xfmem;
2129
2130 xfmem = xenforeignmemory_open(0, 0);
2131 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2132
2133 return 0;
2134}
2135EOF
2136 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2137 then
2138 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2139 xen_ctrl_version=41000
2140 xen=yes
2141 elif
2142 cat > $TMPC <<EOF &&
Paul Durrantda8090c2017-03-07 10:55:33 +00002143#undef XC_WANT_COMPAT_DEVICEMODEL_API
2144#define __XEN_TOOLS__
2145#include <xendevicemodel.h>
2146int main(void) {
2147 xendevicemodel_handle *xd;
2148
2149 xd = xendevicemodel_open(0, 0);
2150 xendevicemodel_close(xd);
2151
2152 return 0;
2153}
2154EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002155 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2156 then
2157 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2158 xen_ctrl_version=40900
2159 xen=yes
2160 elif
2161 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002162/*
2163 * If we have stable libs the we don't want the libxc compat
2164 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002165 *
2166 * Also, check if xengnttab_grant_copy_segment_t is defined and
2167 * grant copy operation is implemented.
2168 */
2169#undef XC_WANT_COMPAT_EVTCHN_API
2170#undef XC_WANT_COMPAT_GNTTAB_API
2171#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2172#include <xenctrl.h>
2173#include <xenstore.h>
2174#include <xenevtchn.h>
2175#include <xengnttab.h>
2176#include <xenforeignmemory.h>
2177#include <stdint.h>
2178#include <xen/hvm/hvm_info_table.h>
2179#if !defined(HVM_MAX_VCPUS)
2180# error HVM_MAX_VCPUS not defined
2181#endif
2182int main(void) {
2183 xc_interface *xc = NULL;
2184 xenforeignmemory_handle *xfmem;
2185 xenevtchn_handle *xe;
2186 xengnttab_handle *xg;
2187 xen_domain_handle_t handle;
2188 xengnttab_grant_copy_segment_t* seg = NULL;
2189
2190 xs_daemon_open();
2191
2192 xc = xc_interface_open(0, 0, 0);
2193 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2194 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2195 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2196 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2197 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2198
2199 xfmem = xenforeignmemory_open(0, 0);
2200 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2201
2202 xe = xenevtchn_open(0, 0);
2203 xenevtchn_fd(xe);
2204
2205 xg = xengnttab_open(0, 0);
2206 xengnttab_grant_copy(xg, 0, seg);
2207
2208 return 0;
2209}
2210EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002211 compile_prog "" "$xen_libs $xen_stable_libs"
2212 then
2213 xen_ctrl_version=40800
2214 xen=yes
2215 elif
2216 cat > $TMPC <<EOF &&
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002217/*
2218 * If we have stable libs the we don't want the libxc compat
2219 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002220 */
2221#undef XC_WANT_COMPAT_EVTCHN_API
2222#undef XC_WANT_COMPAT_GNTTAB_API
2223#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2224#include <xenctrl.h>
2225#include <xenstore.h>
2226#include <xenevtchn.h>
2227#include <xengnttab.h>
2228#include <xenforeignmemory.h>
2229#include <stdint.h>
2230#include <xen/hvm/hvm_info_table.h>
2231#if !defined(HVM_MAX_VCPUS)
2232# error HVM_MAX_VCPUS not defined
2233#endif
2234int main(void) {
2235 xc_interface *xc = NULL;
2236 xenforeignmemory_handle *xfmem;
2237 xenevtchn_handle *xe;
2238 xengnttab_handle *xg;
2239 xen_domain_handle_t handle;
2240
2241 xs_daemon_open();
2242
2243 xc = xc_interface_open(0, 0, 0);
2244 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2245 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2246 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2247 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2248 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2249
2250 xfmem = xenforeignmemory_open(0, 0);
2251 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2252
2253 xe = xenevtchn_open(0, 0);
2254 xenevtchn_fd(xe);
2255
2256 xg = xengnttab_open(0, 0);
2257 xengnttab_map_grant_ref(xg, 0, 0, 0);
2258
2259 return 0;
2260}
2261EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002262 compile_prog "" "$xen_libs $xen_stable_libs"
2263 then
2264 xen_ctrl_version=40701
2265 xen=yes
2266 elif
2267 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002268#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002269#include <stdint.h>
2270int main(void) {
2271 xc_interface *xc = NULL;
2272 xen_domain_handle_t handle;
2273 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2274 return 0;
2275}
2276EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002277 compile_prog "" "$xen_libs"
2278 then
2279 xen_ctrl_version=40700
2280 xen=yes
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002281
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002282 # Xen 4.6
2283 elif
2284 cat > $TMPC <<EOF &&
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002285#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002286#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002287#include <stdint.h>
2288#include <xen/hvm/hvm_info_table.h>
2289#if !defined(HVM_MAX_VCPUS)
2290# error HVM_MAX_VCPUS not defined
2291#endif
2292int main(void) {
2293 xc_interface *xc;
2294 xs_daemon_open();
2295 xc = xc_interface_open(0, 0, 0);
2296 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2297 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002298 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002299 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002300 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002301 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002302 return 0;
2303}
2304EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002305 compile_prog "" "$xen_libs"
2306 then
2307 xen_ctrl_version=40600
2308 xen=yes
Jan Beulichd8b441a2015-07-24 03:38:28 -06002309
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002310 # Xen 4.5
2311 elif
2312 cat > $TMPC <<EOF &&
Jan Beulichd8b441a2015-07-24 03:38:28 -06002313#include <xenctrl.h>
2314#include <xenstore.h>
2315#include <stdint.h>
2316#include <xen/hvm/hvm_info_table.h>
2317#if !defined(HVM_MAX_VCPUS)
2318# error HVM_MAX_VCPUS not defined
2319#endif
2320int main(void) {
2321 xc_interface *xc;
2322 xs_daemon_open();
2323 xc = xc_interface_open(0, 0, 0);
2324 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2325 xc_gnttab_open(NULL, 0);
2326 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2327 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002328 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2329 return 0;
2330}
2331EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002332 compile_prog "" "$xen_libs"
2333 then
2334 xen_ctrl_version=40500
2335 xen=yes
Paul Durrant3996e852015-01-20 11:06:19 +00002336
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002337 elif
2338 cat > $TMPC <<EOF &&
Paul Durrant3996e852015-01-20 11:06:19 +00002339#include <xenctrl.h>
2340#include <xenstore.h>
2341#include <stdint.h>
2342#include <xen/hvm/hvm_info_table.h>
2343#if !defined(HVM_MAX_VCPUS)
2344# error HVM_MAX_VCPUS not defined
2345#endif
2346int main(void) {
2347 xc_interface *xc;
2348 xs_daemon_open();
2349 xc = xc_interface_open(0, 0, 0);
2350 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2351 xc_gnttab_open(NULL, 0);
2352 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2353 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002354 return 0;
2355}
2356EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002357 compile_prog "" "$xen_libs"
2358 then
2359 xen_ctrl_version=40200
2360 xen=yes
Stefano Stabellini8688e062012-04-17 17:04:18 +00002361
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002362 else
2363 if test "$xen" = "yes" ; then
2364 feature_not_found "xen (unsupported version)" \
2365 "Install a supported xen (xen 4.2 or newer)"
2366 fi
2367 xen=no
Juan Quintelafc321b42009-08-12 18:29:55 +02002368 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002369
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002370 if test "$xen" = yes; then
2371 if test $xen_ctrl_version -ge 40701 ; then
2372 libs_softmmu="$xen_stable_libs $libs_softmmu"
2373 fi
2374 libs_softmmu="$xen_libs $libs_softmmu"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002375 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002376 fi
aliguorie37630c2009-04-22 15:19:10 +00002377fi
2378
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002379if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002380 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002381 xen_pci_passthrough=yes
2382 else
2383 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002384 error_exit "User requested feature Xen PCI Passthrough" \
2385 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002386 fi
2387 xen_pci_passthrough=no
2388 fi
2389fi
2390
Ian Campbell64a7ad62016-01-15 13:23:44 +00002391if test "$xen_pv_domain_build" = "yes" &&
2392 test "$xen" != "yes"; then
2393 error_exit "User requested Xen PV domain builder support" \
2394 "which requires Xen support."
2395fi
2396
aliguorie37630c2009-04-22 15:19:10 +00002397##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002398# Sparse probe
2399if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002400 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002401 sparse=yes
2402 else
2403 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002404 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002405 fi
2406 sparse=no
2407 fi
2408fi
2409
2410##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002411# X11 probe
2412x11_cflags=
2413x11_libs=-lX11
2414if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002415 x11_cflags=$($pkg_config --cflags x11)
2416 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002417fi
2418
2419##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002420# GTK probe
2421
Stefan Weil9e04c682014-05-17 16:29:18 +02002422if test "$gtkabi" = ""; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002423 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2424 # Use 2.0 as a fallback if that is available.
2425 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002426 gtkabi=3.0
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002427 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002428 gtkabi=2.0
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002429 else
2430 gtkabi=3.0
Stefan Weil9e04c682014-05-17 16:29:18 +02002431 fi
2432fi
2433
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002434if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002435 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002436 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002437 if test "$gtkabi" = "3.0" ; then
2438 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002439 else
2440 gtkversion="2.18.0"
2441 fi
2442 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002443 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2444 gtk_libs=$($pkg_config --libs $gtkpackage)
2445 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002446 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002447 gtk_cflags="$gtk_cflags $x11_cflags"
2448 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002449 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002450 libs_softmmu="$gtk_libs $libs_softmmu"
2451 gtk="yes"
2452 elif test "$gtk" = "yes"; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002453 feature_not_found "gtk" "Install gtk3-devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002454 else
2455 gtk="no"
2456 fi
2457fi
2458
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002459
2460##########################################
2461# GNUTLS probe
2462
Peter Maydell37371292015-07-24 18:28:08 +01002463gnutls_works() {
2464 # Unfortunately some distros have bad pkg-config information for gnutls
2465 # such that it claims to exist but you get a compiler error if you try
2466 # to use the options returned by --libs. Specifically, Ubuntu for --static
2467 # builds doesn't work:
2468 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2469 #
2470 # So sanity check the cflags/libs before assuming gnutls can be used.
2471 if ! $pkg_config --exists "gnutls"; then
2472 return 1
2473 fi
2474
2475 write_c_skeleton
2476 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2477}
2478
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002479gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002480gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002481if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002482 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002483 gnutls_cflags=$($pkg_config --cflags gnutls)
2484 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002485 libs_softmmu="$gnutls_libs $libs_softmmu"
2486 libs_tools="$gnutls_libs $libs_tools"
2487 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2488 gnutls="yes"
2489
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002490 # gnutls_rnd requires >= 2.11.0
2491 if $pkg_config --exists "gnutls >= 2.11.0"; then
2492 gnutls_rnd="yes"
2493 else
2494 gnutls_rnd="no"
2495 fi
2496
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002497 if $pkg_config --exists 'gnutls >= 3.0'; then
2498 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002499 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002500 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002501 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002502 *gcrypt*)
2503 gnutls_gcrypt=yes
2504 gnutls_nettle=no
2505 ;;
2506 *nettle*)
2507 gnutls_gcrypt=no
2508 gnutls_nettle=yes
2509 ;;
2510 *)
2511 gnutls_gcrypt=yes
2512 gnutls_nettle=no
2513 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002514 esac
2515 else
2516 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002517 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002518 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002519 elif test "$gnutls" = "yes"; then
2520 feature_not_found "gnutls" "Install gnutls devel"
2521 else
2522 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002523 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002524 fi
2525else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002526 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002527fi
2528
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002529
2530# If user didn't give a --disable/enable-gcrypt flag,
2531# then mark as disabled if user requested nettle
2532# explicitly, or if gnutls links to nettle
2533if test -z "$gcrypt"
2534then
2535 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2536 then
2537 gcrypt="no"
2538 fi
2539fi
2540
2541# If user didn't give a --disable/enable-nettle flag,
2542# then mark as disabled if user requested gcrypt
2543# explicitly, or if gnutls links to gcrypt
2544if test -z "$nettle"
2545then
2546 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2547 then
2548 nettle="no"
2549 fi
2550fi
2551
2552has_libgcrypt_config() {
2553 if ! has "libgcrypt-config"
2554 then
2555 return 1
2556 fi
2557
2558 if test -n "$cross_prefix"
2559 then
Stefan Weil89138852016-05-16 15:10:20 +02002560 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002561 if test "$host-" != $cross_prefix
2562 then
2563 return 1
2564 fi
2565 fi
2566
2567 return 0
2568}
2569
2570if test "$gcrypt" != "no"; then
2571 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002572 gcrypt_cflags=$(libgcrypt-config --cflags)
2573 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002574 # Debian has remove -lgpg-error from libgcrypt-config
2575 # as it "spreads unnecessary dependencies" which in
2576 # turn breaks static builds...
2577 if test "$static" = "yes"
2578 then
2579 gcrypt_libs="$gcrypt_libs -lgpg-error"
2580 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002581 libs_softmmu="$gcrypt_libs $libs_softmmu"
2582 libs_tools="$gcrypt_libs $libs_tools"
2583 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002584 gcrypt="yes"
2585 if test -z "$nettle"; then
2586 nettle="no"
2587 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002588
2589 cat > $TMPC << EOF
2590#include <gcrypt.h>
2591int main(void) {
2592 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2593 GCRY_MD_SHA256,
2594 NULL, 0, 0, 0, NULL);
2595 return 0;
2596}
2597EOF
2598 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2599 gcrypt_kdf=yes
2600 fi
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002601
2602 cat > $TMPC << EOF
2603#include <gcrypt.h>
2604int main(void) {
2605 gcry_mac_hd_t handle;
2606 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2607 GCRY_MAC_FLAG_SECURE, NULL);
2608 return 0;
2609}
2610EOF
2611 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2612 gcrypt_hmac=yes
2613 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002614 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002615 if test "$gcrypt" = "yes"; then
2616 feature_not_found "gcrypt" "Install gcrypt devel"
2617 else
2618 gcrypt="no"
2619 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002620 fi
2621fi
2622
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002623
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002624if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002625 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002626 nettle_cflags=$($pkg_config --cflags nettle)
2627 nettle_libs=$($pkg_config --libs nettle)
2628 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002629 libs_softmmu="$nettle_libs $libs_softmmu"
2630 libs_tools="$nettle_libs $libs_tools"
2631 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002632 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002633
2634 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002635#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002636#include <nettle/pbkdf2.h>
2637int main(void) {
2638 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2639 return 0;
2640}
2641EOF
2642 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2643 nettle_kdf=yes
2644 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002645 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002646 if test "$nettle" = "yes"; then
2647 feature_not_found "nettle" "Install nettle devel"
2648 else
2649 nettle="no"
2650 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002651 fi
2652fi
2653
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002654if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2655then
2656 error_exit "Only one of gcrypt & nettle can be enabled"
2657fi
2658
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002659##########################################
2660# libtasn1 - only for the TLS creds/session test suite
2661
2662tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002663tasn1_cflags=""
2664tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002665if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002666 tasn1_cflags=$($pkg_config --cflags libtasn1)
2667 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002668else
2669 tasn1=no
2670fi
2671
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002672
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002673##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002674# getifaddrs (for tests/test-io-channel-socket )
2675
2676have_ifaddrs_h=yes
2677if ! check_include "ifaddrs.h" ; then
2678 have_ifaddrs_h=no
2679fi
2680
2681##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002682# VTE probe
2683
2684if test "$vte" != "no"; then
2685 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002686 vteminversion="0.32.0"
2687 if $pkg_config --exists "vte-2.91"; then
2688 vtepackage="vte-2.91"
2689 else
2690 vtepackage="vte-2.90"
2691 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002692 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002693 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002694 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002695 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002696 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002697 vte_cflags=$($pkg_config --cflags $vtepackage)
2698 vte_libs=$($pkg_config --libs $vtepackage)
2699 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002700 libs_softmmu="$vte_libs $libs_softmmu"
2701 vte="yes"
2702 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002703 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002704 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002705 else
2706 feature_not_found "vte" "Install libvte devel"
2707 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002708 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002709 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002710 fi
2711fi
2712
2713##########################################
bellard11d9f692004-04-02 20:55:59 +00002714# SDL probe
2715
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002716# Look for sdl configuration program (pkg-config or sdl-config). Try
2717# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002718
Cole Robinsonee8466d2016-05-06 14:03:07 -04002719if test "$sdlabi" = ""; then
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002720 if $pkg_config --exists "sdl2"; then
Cole Robinsonee8466d2016-05-06 14:03:07 -04002721 sdlabi=2.0
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002722 elif $pkg_config --exists "sdl"; then
Cole Robinsonee8466d2016-05-06 14:03:07 -04002723 sdlabi=1.2
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002724 else
2725 sdlabi=2.0
Cole Robinsonee8466d2016-05-06 14:03:07 -04002726 fi
2727fi
2728
Dave Airlie47c03742013-12-10 14:05:51 +10002729if test $sdlabi = "2.0"; then
2730 sdl_config=$sdl2_config
2731 sdlname=sdl2
2732 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002733elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002734 sdlname=sdl
2735 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002736else
2737 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002738fi
2739
Stefan Weil89138852016-05-16 15:10:20 +02002740if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002741 sdl_config=$sdlconfigname
2742fi
2743
2744if $pkg_config $sdlname --exists; then
2745 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002746 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002747elif has ${sdl_config}; then
2748 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002749 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002750else
2751 if test "$sdl" = "yes" ; then
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002752 feature_not_found "sdl" "Install SDL2-devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002753 fi
2754 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002755fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002756if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002757 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2758fi
bellard11d9f692004-04-02 20:55:59 +00002759
Paolo Bonzini9316f802010-01-13 09:52:55 +01002760sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002761if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002762 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002763#include <SDL.h>
2764#undef main /* We don't want SDL to override our main() */
2765int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2766EOF
Stefan Weil89138852016-05-16 15:10:20 +02002767 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002768 if test "$static" = "yes" ; then
Thomas Huth5f37e6d2017-06-13 20:00:44 +02002769 if $pkg_config $sdlname --exists; then
2770 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2771 else
2772 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2773 fi
TeLeMan74f42e12010-02-08 13:56:44 +08002774 else
Stefan Weil89138852016-05-16 15:10:20 +02002775 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002776 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002777 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002778 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002779 sdl_too_old=yes
2780 else
Peter Maydella30878e2015-08-14 16:10:52 +01002781 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002782 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002783
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002784 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002785 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002786 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002787 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2788 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002789 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002790 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002791 :
2792 else
2793 sdl=no
2794 fi
2795 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002796 else # sdl not found
2797 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002798 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002799 fi
2800 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002801 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002802fi
bellard11d9f692004-04-02 20:55:59 +00002803
aliguori5368a422009-03-03 17:37:21 +00002804if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002805 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002806#include <SDL.h>
2807#if defined(SDL_VIDEO_DRIVER_X11)
2808#include <X11/XKBlib.h>
2809#else
2810#error No x11 support
2811#endif
2812int main(void) { return 0; }
2813EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002814 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2815 sdl_cflags="$sdl_cflags $x11_cflags"
2816 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002817 fi
aliguori5368a422009-03-03 17:37:21 +00002818fi
2819
ths8f28f3f2007-01-05 21:25:54 +00002820##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002821# RDMA needs OpenFabrics libraries
2822if test "$rdma" != "no" ; then
2823 cat > $TMPC <<EOF
2824#include <rdma/rdma_cma.h>
2825int main(void) { return 0; }
2826EOF
2827 rdma_libs="-lrdmacm -libverbs"
2828 if compile_prog "" "$rdma_libs" ; then
2829 rdma="yes"
Michael R. Hines2da776d2013-07-22 10:01:54 -04002830 else
2831 if test "$rdma" = "yes" ; then
2832 error_exit \
2833 " OpenFabrics librdmacm/libibverbs not present." \
2834 " Your options:" \
2835 " (1) Fast: Install infiniband packages from your distro." \
2836 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2837 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2838 fi
2839 rdma="no"
2840 fi
2841fi
2842
ths8d5d2d42007-08-25 01:37:51 +00002843
2844##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002845# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002846if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002847 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002848#include <sasl/sasl.h>
2849#include <stdio.h>
2850int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2851EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002852 # Assuming Cyrus-SASL installed in /usr prefix
2853 vnc_sasl_cflags=""
2854 vnc_sasl_libs="-lsasl2"
2855 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2856 vnc_sasl=yes
2857 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002858 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002859 else
2860 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002861 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002862 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002863 vnc_sasl=no
2864 fi
aliguori2f9606b2009-03-06 20:27:28 +00002865fi
2866
2867##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002868# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002869if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002870cat > $TMPC <<EOF
2871#include <stdio.h>
2872#include <jpeglib.h>
2873int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2874EOF
2875 vnc_jpeg_cflags=""
2876 vnc_jpeg_libs="-ljpeg"
2877 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2878 vnc_jpeg=yes
2879 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002880 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002881 else
2882 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002883 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002884 fi
2885 vnc_jpeg=no
2886 fi
2887fi
2888
2889##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002890# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002891if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002892cat > $TMPC <<EOF
2893//#include <stdio.h>
2894#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002895#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002896int main(void) {
2897 png_structp png_ptr;
2898 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002899 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002900}
2901EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002902 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002903 vnc_png_cflags=$($pkg_config libpng --cflags)
2904 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002905 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002906 vnc_png_cflags=""
2907 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002908 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002909 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2910 vnc_png=yes
2911 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002912 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002913 else
2914 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002915 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002916 fi
2917 vnc_png=no
2918 fi
2919fi
2920
2921##########################################
Gerd Hoffmann6a021532017-10-05 17:33:28 +02002922# xkbcommon probe
2923if test "$xkbcommon" != "no" ; then
2924 if $pkg_config xkbcommon --exists; then
2925 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
2926 xkbcommon_libs=$($pkg_config xkbcommon --libs)
2927 xkbcommon=yes
2928 else
2929 if test "$xkbcommon" = "yes" ; then
2930 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
2931 fi
2932 xkbcommon=no
2933 fi
2934fi
2935
2936##########################################
aliguori76655d62009-03-06 20:27:37 +00002937# fnmatch() probe, used for ACL routines
2938fnmatch="no"
2939cat > $TMPC << EOF
2940#include <fnmatch.h>
2941int main(void)
2942{
2943 fnmatch("foo", "foo", 0);
2944 return 0;
2945}
2946EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002947if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002948 fnmatch="yes"
2949fi
2950
2951##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06002952# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002953if test "$xfs" != "no" ; then
2954 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002955#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002956#include <xfs/xfs.h>
2957int main(void)
2958{
2959 xfsctl(NULL, 0, 0, NULL);
2960 return 0;
2961}
2962EOF
2963 if compile_prog "" "" ; then
2964 xfs="yes"
2965 else
2966 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002967 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002968 fi
2969 xfs=no
2970 fi
2971fi
2972
2973##########################################
ths8a16d272008-07-19 09:56:24 +00002974# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002975if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002976 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002977 cat > $TMPC << EOF
2978#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002979int main(void)
2980{
2981 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002982 char s[] = "";
2983 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002984 return 0;
2985}
ths8a16d272008-07-19 09:56:24 +00002986EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002987 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002988 vde=yes
Juan Quinteladfb278b2009-08-12 18:20:27 +02002989 else
2990 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002991 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002992 fi
2993 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002994 fi
ths8a16d272008-07-19 09:56:24 +00002995fi
2996
2997##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002998# netmap support probe
2999# Apart from looking for netmap headers, we make sure that the host API version
3000# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3001# a minor/major version number. Minor new features will be marked with values up
3002# to 15, and if something happens that requires a change to the backend we will
3003# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01003004if test "$netmap" != "no" ; then
3005 cat > $TMPC << EOF
3006#include <inttypes.h>
3007#include <net/if.h>
3008#include <net/netmap.h>
3009#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003010#if (NETMAP_API < 11) || (NETMAP_API > 15)
3011#error
3012#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01003013int main(void) { return 0; }
3014EOF
3015 if compile_prog "" "" ; then
3016 netmap=yes
3017 else
3018 if test "$netmap" = "yes" ; then
3019 feature_not_found "netmap"
3020 fi
3021 netmap=no
3022 fi
3023fi
3024
3025##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05003026# libcap-ng library probe
3027if test "$cap_ng" != "no" ; then
3028 cap_libs="-lcap-ng"
3029 cat > $TMPC << EOF
3030#include <cap-ng.h>
3031int main(void)
3032{
3033 capng_capability_to_name(CAPNG_EFFECTIVE);
3034 return 0;
3035}
3036EOF
3037 if compile_prog "" "$cap_libs" ; then
3038 cap_ng=yes
3039 libs_tools="$cap_libs $libs_tools"
3040 else
3041 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003042 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05003043 fi
3044 cap_ng=no
3045 fi
3046fi
3047
3048##########################################
malcc2de5c92008-06-28 19:13:06 +00003049# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00003050
malcc2de5c92008-06-28 19:13:06 +00003051audio_drv_probe()
3052{
3053 drv=$1
3054 hdr=$2
3055 lib=$3
3056 exp=$4
3057 cfl=$5
3058 cat > $TMPC << EOF
3059#include <$hdr>
3060int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00003061EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003062 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00003063 :
3064 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003065 error_exit "$drv check failed" \
3066 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00003067 fi
3068}
3069
Stefan Weil89138852016-05-16 15:10:20 +02003070audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00003071for drv in $audio_drv_list; do
3072 case $drv in
3073 alsa)
3074 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01003075 "return snd_pcm_close((snd_pcm_t *)0);"
Fam Zhengb1149912017-09-07 16:29:13 +08003076 alsa_libs="-lasound"
malcc2de5c92008-06-28 19:13:06 +00003077 ;;
3078
malcb8e59f12008-07-02 21:03:08 +00003079 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02003080 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3081 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Fam Zhengb1149912017-09-07 16:29:13 +08003082 pulse_libs="-lpulse"
Juan Quintela67f86e82009-08-03 14:46:59 +02003083 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00003084 ;;
3085
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003086 sdl)
3087 if test "$sdl" = "no"; then
3088 error_exit "sdl not found or disabled, can not use sdl audio driver"
3089 fi
3090 ;;
3091
Juan Quintela997e6902009-08-03 14:46:29 +02003092 coreaudio)
Fam Zhengb1149912017-09-07 16:29:13 +08003093 coreaudio_libs="-framework CoreAudio"
Juan Quintela997e6902009-08-03 14:46:29 +02003094 ;;
3095
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003096 dsound)
Fam Zhengb1149912017-09-07 16:29:13 +08003097 dsound_libs="-lole32 -ldxguid"
malcd5631632009-10-10 01:13:41 +04003098 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003099 ;;
3100
3101 oss)
Fam Zhengb1149912017-09-07 16:29:13 +08003102 oss_libs="$oss_lib"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003103 ;;
3104
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003105 wav)
3106 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00003107 ;;
3108
malce4c63a62008-07-19 16:15:16 +00003109 *)
malc1c9b2a52008-07-19 16:57:30 +00003110 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01003111 error_exit "Unknown driver '$drv' selected" \
3112 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00003113 }
3114 ;;
malcc2de5c92008-06-28 19:13:06 +00003115 esac
3116done
ths8f28f3f2007-01-05 21:25:54 +00003117
balrog4d3b6f62008-02-10 16:33:14 +00003118##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00003119# BrlAPI probe
3120
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003121if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003122 brlapi_libs="-lbrlapi"
3123 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00003124#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003125#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00003126int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3127EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003128 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003129 brlapi=yes
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003130 else
3131 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003132 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003133 fi
3134 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02003135 fi
3136fi
aurel322e4d9fb2008-04-08 06:01:02 +00003137
3138##########################################
balrog4d3b6f62008-02-10 16:33:14 +00003139# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02003140if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003141 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003142 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3143 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003144 else
Samuel Thibault7c703002016-11-09 11:27:52 +01003145 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003146 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003147 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02003148 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00003149 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003150#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00003151#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003152#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01003153int main(void) {
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003154 wchar_t wch = L'w';
3155 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01003156 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003157 addwstr(L"wide chars\n");
3158 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003159 add_wch(WACS_DEGREE);
Kamil Rytarowski271f37a2017-04-26 12:50:27 +02003160 return 0;
Stefan Weilef9a2522011-12-17 17:46:02 +01003161}
balrog4d3b6f62008-02-10 16:33:14 +00003162EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003163 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003164 for curses_inc in $curses_inc_list; do
Peter Maydellb01a4fd2017-06-02 15:35:38 +01003165 # Make sure we get the wide character prototypes
3166 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
Samuel Thibault7c703002016-11-09 11:27:52 +01003167 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003168 for curses_lib in $curses_lib_list; do
3169 unset IFS
3170 if compile_prog "$curses_inc" "$curses_lib" ; then
3171 curses_found=yes
3172 QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3173 libs_softmmu="$curses_lib $libs_softmmu"
3174 break
3175 fi
3176 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003177 if test "$curses_found" = yes ; then
3178 break
3179 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003180 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003181 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003182 if test "$curses_found" = "yes" ; then
3183 curses=yes
3184 else
3185 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003186 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003187 fi
3188 curses=no
3189 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003190fi
balrog4d3b6f62008-02-10 16:33:14 +00003191
blueswir1414f0da2008-08-15 18:20:52 +00003192##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003193# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003194if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003195 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003196 curlconfig="$pkg_config libcurl"
3197 else
3198 curlconfig=curl-config
3199 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003200 cat > $TMPC << EOF
3201#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003202int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003203EOF
Stefan Weil89138852016-05-16 15:10:20 +02003204 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3205 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003206 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003207 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003208 else
3209 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003210 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003211 fi
3212 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003213 fi
3214fi # test "$curl"
3215
3216##########################################
balrogfb599c92008-09-28 23:49:55 +00003217# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003218if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003219 cat > $TMPC << EOF
3220#include <bluetooth/bluetooth.h>
3221int main(void) { return bt_error(0); }
3222EOF
Stefan Weil89138852016-05-16 15:10:20 +02003223 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3224 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003225 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003226 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003227 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003228 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003229 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003230 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003231 fi
balroge820e3f2008-09-30 02:27:44 +00003232 bluez="no"
3233 fi
balrogfb599c92008-09-28 23:49:55 +00003234fi
3235
3236##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003237# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003238
Peter Maydellad04d8c2017-04-03 14:04:15 +01003239if test "$mingw32" = yes; then
3240 glib_req_ver=2.30
3241else
3242 glib_req_ver=2.22
3243fi
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003244glib_modules=gthread-2.0
3245if test "$modules" = yes; then
3246 glib_modules="$glib_modules gmodule-2.0"
3247fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003248
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003249# This workaround is required due to a bug in pkg-config file for glib as it
3250# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3251
3252if test "$static" = yes -a "$mingw32" = yes; then
3253 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3254fi
3255
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003256for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003257 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003258 glib_cflags=$($pkg_config --cflags $i)
3259 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003260 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003261 LIBS="$glib_libs $LIBS"
3262 libs_qga="$glib_libs $libs_qga"
3263 else
3264 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3265 fi
3266done
3267
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003268# Sanity check that the current size_t matches the
3269# size that glib thinks it should be. This catches
3270# problems on multi-arch where people try to build
3271# 32-bit QEMU while pointing at 64-bit glib headers
3272cat > $TMPC <<EOF
3273#include <glib.h>
3274#include <unistd.h>
3275
3276#define QEMU_BUILD_BUG_ON(x) \
3277 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3278
3279int main(void) {
3280 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3281 return 0;
3282}
3283EOF
3284
Stefan Weil5919e032016-04-28 23:33:41 +02003285if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003286 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3287 "You probably need to set PKG_CONFIG_LIBDIR"\
3288 "to point to the right pkg-config files for your"\
3289 "build target"
3290fi
3291
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003292# g_test_trap_subprocess added in 2.38. Used by some tests.
3293glib_subprocess=yes
Marc-André Lureaua0492232017-01-04 21:57:22 +01003294if ! $pkg_config --atleast-version=2.38 glib-2.0; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003295 glib_subprocess=no
3296fi
3297
John Snowbbbf2e02015-03-25 18:57:38 -04003298# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3299cat > $TMPC << EOF
3300#include <glib.h>
3301int main(void) { return 0; }
3302EOF
3303if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3304 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3305 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3306 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3307 fi
3308fi
3309
Fam Zhenge26110c2014-02-10 14:48:57 +08003310##########################################
3311# SHA command probe for modules
3312if test "$modules" = yes; then
3313 shacmd_probe="sha1sum sha1 shasum"
3314 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003315 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003316 shacmd="$c"
3317 break
3318 fi
3319 done
3320 if test "$shacmd" = ""; then
3321 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3322 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003323fi
3324
3325##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003326# pixman support probe
3327
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003328if test "$want_tools" = "no" -a "$softmmu" = "no"; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003329 pixman_cflags=
3330 pixman_libs=
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003331elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Stefan Weil89138852016-05-16 15:10:20 +02003332 pixman_cflags=$($pkg_config --cflags pixman-1)
3333 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003334else
Gerd Hoffmannc12b6d72017-09-05 16:01:15 +02003335 error_exit "pixman >= 0.21.8 not present." \
3336 "Please install the pixman devel package."
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003337fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003338
3339##########################################
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003340# libmpathpersist probe
3341
3342if test "$mpath" != "no" ; then
3343 cat > $TMPC <<EOF
3344#include <libudev.h>
3345#include <mpath_persist.h>
3346unsigned mpath_mx_alloc_len = 1024;
3347int logsink;
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003348static struct config *multipath_conf;
3349extern struct udev *udev;
3350extern struct config *get_multipath_config(void);
3351extern void put_multipath_config(struct config *conf);
3352struct udev *udev;
3353struct config *get_multipath_config(void) { return multipath_conf; }
3354void put_multipath_config(struct config *conf) { }
3355
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003356int main(void) {
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003357 udev = udev_new();
3358 multipath_conf = mpath_lib_init();
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003359 return 0;
3360}
3361EOF
3362 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3363 mpathpersist=yes
3364 else
3365 mpathpersist=no
3366 fi
3367else
3368 mpathpersist=no
3369fi
3370
3371##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303372# libcap probe
3373
3374if test "$cap" != "no" ; then
3375 cat > $TMPC <<EOF
3376#include <stdio.h>
3377#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003378int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303379EOF
3380 if compile_prog "" "-lcap" ; then
3381 cap=yes
3382 else
3383 cap=no
3384 fi
3385fi
3386
3387##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003388# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003389PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003390
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003391pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003392cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003393#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003394static void *f(void *p) { return NULL; }
3395int main(void) {
3396 pthread_t thread;
3397 pthread_create(&thread, 0, f, 0);
3398 return 0;
3399}
blueswir1414f0da2008-08-15 18:20:52 +00003400EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003401if compile_prog "" "" ; then
3402 pthread=yes
3403else
3404 for pthread_lib in $PTHREADLIBS_LIST; do
3405 if compile_prog "" "$pthread_lib" ; then
3406 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003407 found=no
3408 for lib_entry in $LIBS; do
3409 if test "$lib_entry" = "$pthread_lib"; then
3410 found=yes
3411 break
3412 fi
3413 done
3414 if test "$found" = "no"; then
3415 LIBS="$pthread_lib $LIBS"
3416 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003417 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003418 break
3419 fi
3420 done
3421fi
blueswir1414f0da2008-08-15 18:20:52 +00003422
Anthony Liguori4617e592009-08-25 17:21:56 -05003423if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003424 error_exit "pthread check failed" \
3425 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003426fi
3427
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003428# check for pthread_setname_np
3429pthread_setname_np=no
3430cat > $TMPC << EOF
3431#include <pthread.h>
3432
3433static void *f(void *p) { return NULL; }
3434int main(void)
3435{
3436 pthread_t thread;
3437 pthread_create(&thread, 0, f, 0);
3438 pthread_setname_np(thread, "QEMU");
3439 return 0;
3440}
3441EOF
3442if compile_prog "" "$pthread_lib" ; then
3443 pthread_setname_np=yes
3444fi
3445
aliguoribf9298b2008-12-05 20:05:26 +00003446##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003447# rbd probe
3448if test "$rbd" != "no" ; then
3449 cat > $TMPC <<EOF
3450#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003451#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003452int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003453 rados_t cluster;
3454 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003455 return 0;
3456}
3457EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003458 rbd_libs="-lrbd -lrados"
3459 if compile_prog "" "$rbd_libs" ; then
3460 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003461 else
3462 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003463 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003464 fi
3465 rbd=no
3466 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003467fi
3468
3469##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003470# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003471min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003472if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003473 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003474 libssh2_cflags=$($pkg_config libssh2 --cflags)
3475 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003476 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003477 else
3478 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003479 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003480 fi
3481 libssh2=no
3482 fi
3483fi
3484
3485##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003486# libssh2_sftp_fsync probe
3487
3488if test "$libssh2" = "yes"; then
3489 cat > $TMPC <<EOF
3490#include <stdio.h>
3491#include <libssh2.h>
3492#include <libssh2_sftp.h>
3493int main(void) {
3494 LIBSSH2_SESSION *session;
3495 LIBSSH2_SFTP *sftp;
3496 LIBSSH2_SFTP_HANDLE *sftp_handle;
3497 session = libssh2_session_init ();
3498 sftp = libssh2_sftp_init (session);
3499 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3500 libssh2_sftp_fsync (sftp_handle);
3501 return 0;
3502}
3503EOF
3504 # libssh2_cflags/libssh2_libs defined in previous test.
3505 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3506 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3507 fi
3508fi
3509
3510##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003511# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003512
3513if test "$linux_aio" != "no" ; then
3514 cat > $TMPC <<EOF
3515#include <libaio.h>
3516#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003517#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003518int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3519EOF
3520 if compile_prog "" "-laio" ; then
3521 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003522 else
3523 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003524 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003525 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003526 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003527 fi
3528fi
3529
3530##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003531# TPM passthrough is only on x86 Linux
3532
3533if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3534 tpm_passthrough=$tpm
3535else
3536 tpm_passthrough=no
3537fi
3538
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003539# TPM emulator is for all posix systems
3540if test "$mingw32" != "yes"; then
3541 tpm_emulator=$tpm
3542else
3543 tpm_emulator=no
3544fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003545##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003546# attr probe
3547
3548if test "$attr" != "no" ; then
3549 cat > $TMPC <<EOF
3550#include <stdio.h>
3551#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003552#ifdef CONFIG_LIBATTR
3553#include <attr/xattr.h>
3554#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003555#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003556#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003557int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3558EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003559 if compile_prog "" "" ; then
3560 attr=yes
3561 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003562 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003563 attr=yes
3564 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003565 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003566 else
3567 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003568 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003569 fi
3570 attr=no
3571 fi
3572fi
3573
3574##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003575# iovec probe
3576cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003577#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003578#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003579#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003580int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003581EOF
3582iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003583if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003584 iovec=yes
3585fi
3586
aurel32f652e6a2008-12-16 10:43:48 +00003587##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003588# preadv probe
3589cat > $TMPC <<EOF
3590#include <sys/types.h>
3591#include <sys/uio.h>
3592#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003593int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003594EOF
3595preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003596if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003597 preadv=yes
3598fi
3599
3600##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003601# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003602# fdt support is mandatory for at least some target architectures,
3603# so insist on it if we're building those system emulators.
3604fdt_required=no
3605for target in $target_list; do
3606 case $target in
Paul Burtondf1d8a12016-09-08 15:51:58 +01003607 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003608 fdt_required=yes
3609 ;;
3610 esac
3611done
3612
3613if test "$fdt_required" = "yes"; then
3614 if test "$fdt" = "no"; then
3615 error_exit "fdt disabled but some requested targets require it." \
3616 "You can turn off fdt only if you also disable all the system emulation" \
3617 "targets which need it (by specifying a cut down --target-list)."
3618 fi
3619 fdt=yes
3620fi
3621
Juan Quintela2df87df2009-08-12 18:29:54 +02003622if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003623 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003624 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003625 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003626 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003627#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003628#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003629int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003630EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003631 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003632 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003633 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003634 else
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003635 # have GIT checkout, so activate dtc submodule
3636 if test -e "${source_path}/.git" ; then
3637 git_submodules="${git_submodules} dtc"
3638 fi
3639 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
3640 fdt=yes
3641 dtc_internal="yes"
3642 mkdir -p dtc
3643 if [ "$pwd_is_source_path" != "y" ] ; then
3644 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3645 symlink "$source_path/dtc/scripts" "dtc/scripts"
3646 fi
3647 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3648 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3649 elif test "$fdt" = "yes" ; then
3650 # Not a git build & no libfdt found, prompt for system install
3651 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3652 "Please install the DTC (libfdt) devel package"
3653 else
3654 # don't have and don't want
3655 fdt_libs=
3656 fdt=no
3657 fi
aurel32f652e6a2008-12-16 10:43:48 +00003658 fi
3659fi
3660
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003661libs_softmmu="$libs_softmmu $fdt_libs"
3662
Michael Walle20ff0752011-03-07 23:32:39 +01003663##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003664# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003665
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003666if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003667 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003668 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003669 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3670 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003671 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003672 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3673 gtk_gl="yes"
3674 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003675 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003676 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003677 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003678 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003679 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003680 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003681 opengl_libs=""
3682 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003683 fi
3684fi
3685
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003686if test "$opengl" = "yes"; then
3687 cat > $TMPC << EOF
3688#include <epoxy/egl.h>
3689#ifndef EGL_MESA_image_dma_buf_export
3690# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3691#endif
3692int main(void) { return 0; }
3693EOF
3694 if compile_prog "" "" ; then
3695 opengl_dmabuf=yes
3696 fi
3697fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003698
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003699
Bharata B Raoeb100392012-09-24 14:42:45 +05303700##########################################
3701# glusterfs probe
3702if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003703 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303704 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003705 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3706 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003707 if $pkg_config --atleast-version=4 glusterfs-api; then
3708 glusterfs_xlator_opt="yes"
3709 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003710 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303711 glusterfs_discard="yes"
3712 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303713 if $pkg_config --atleast-version=6 glusterfs-api; then
Niels de Vosdf3a4292017-05-28 12:01:14 +05303714 glusterfs_fallocate="yes"
Bharata B Rao7c815372013-12-21 14:51:25 +05303715 glusterfs_zerofill="yes"
3716 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303717 else
3718 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003719 feature_not_found "GlusterFS backend support" \
3720 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303721 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303722 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303723 fi
3724fi
3725
aurel3239386ac2009-04-15 19:48:17 +00003726# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003727# emulator. This is done because older glibc versions don't
3728# have syscall stubs for these implemented. In that case we
3729# don't provide them even if kernel supports them.
3730#
3731inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003732cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003733#include <sys/inotify.h>
3734
3735int
3736main(void)
3737{
3738 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003739 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003740}
3741EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003742if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003743 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003744fi
3745
Riku Voipioc05c7a72010-03-26 15:25:11 +00003746inotify1=no
3747cat > $TMPC << EOF
3748#include <sys/inotify.h>
3749
3750int
3751main(void)
3752{
3753 /* try to start inotify */
3754 return inotify_init1(0);
3755}
3756EOF
3757if compile_prog "" "" ; then
3758 inotify1=yes
3759fi
3760
Riku Voipio099d6b02009-05-05 12:10:04 +03003761# check if pipe2 is there
3762pipe2=no
3763cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003764#include <unistd.h>
3765#include <fcntl.h>
3766
3767int main(void)
3768{
3769 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003770 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003771}
3772EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003773if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003774 pipe2=yes
3775fi
3776
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003777# check if accept4 is there
3778accept4=no
3779cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003780#include <sys/socket.h>
3781#include <stddef.h>
3782
3783int main(void)
3784{
3785 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3786 return 0;
3787}
3788EOF
3789if compile_prog "" "" ; then
3790 accept4=yes
3791fi
3792
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303793# check if tee/splice is there. vmsplice was added same time.
3794splice=no
3795cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303796#include <unistd.h>
3797#include <fcntl.h>
3798#include <limits.h>
3799
3800int main(void)
3801{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003802 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303803 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3804 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3805 return 0;
3806}
3807EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003808if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303809 splice=yes
3810fi
3811
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003812##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003813# libnuma probe
3814
3815if test "$numa" != "no" ; then
3816 cat > $TMPC << EOF
3817#include <numa.h>
3818int main(void) { return numa_available(); }
3819EOF
3820
3821 if compile_prog "" "-lnuma" ; then
3822 numa=yes
3823 libs_softmmu="-lnuma $libs_softmmu"
3824 else
3825 if test "$numa" = "yes" ; then
3826 feature_not_found "numa" "install numactl devel"
3827 fi
3828 numa=no
3829 fi
3830fi
3831
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003832if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3833 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3834 exit 1
3835fi
3836
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003837##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003838# tcmalloc probe
3839
3840if test "$tcmalloc" = "yes" ; then
3841 cat > $TMPC << EOF
3842#include <stdlib.h>
3843int main(void) { malloc(1); return 0; }
3844EOF
3845
3846 if compile_prog "" "-ltcmalloc" ; then
3847 LIBS="-ltcmalloc $LIBS"
3848 else
3849 feature_not_found "tcmalloc" "install gperftools devel"
3850 fi
3851fi
3852
3853##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003854# jemalloc probe
3855
3856if test "$jemalloc" = "yes" ; then
3857 cat > $TMPC << EOF
3858#include <stdlib.h>
3859int main(void) { malloc(1); return 0; }
3860EOF
3861
3862 if compile_prog "" "-ljemalloc" ; then
3863 LIBS="-ljemalloc $LIBS"
3864 else
3865 feature_not_found "jemalloc" "install jemalloc devel"
3866 fi
3867fi
3868
3869##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003870# signalfd probe
3871signalfd="no"
3872cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003873#include <unistd.h>
3874#include <sys/syscall.h>
3875#include <signal.h>
3876int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3877EOF
3878
3879if compile_prog "" "" ; then
3880 signalfd=yes
3881fi
3882
Riku Voipioc2882b92009-08-12 15:08:24 +03003883# check if eventfd is supported
3884eventfd=no
3885cat > $TMPC << EOF
3886#include <sys/eventfd.h>
3887
3888int main(void)
3889{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003890 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003891}
3892EOF
3893if compile_prog "" "" ; then
3894 eventfd=yes
3895fi
3896
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003897# check if memfd is supported
3898memfd=no
3899cat > $TMPC << EOF
3900#include <sys/memfd.h>
3901
3902int main(void)
3903{
3904 return memfd_create("foo", MFD_ALLOW_SEALING);
3905}
3906EOF
3907if compile_prog "" "" ; then
3908 memfd=yes
3909fi
3910
3911
3912
Ulrich Hechtd0927932009-09-17 20:22:14 +03003913# check for fallocate
3914fallocate=no
3915cat > $TMPC << EOF
3916#include <fcntl.h>
3917
3918int main(void)
3919{
3920 fallocate(0, 0, 0, 0);
3921 return 0;
3922}
3923EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003924if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003925 fallocate=yes
3926fi
3927
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003928# check for fallocate hole punching
3929fallocate_punch_hole=no
3930cat > $TMPC << EOF
3931#include <fcntl.h>
3932#include <linux/falloc.h>
3933
3934int main(void)
3935{
3936 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3937 return 0;
3938}
3939EOF
3940if compile_prog "" "" ; then
3941 fallocate_punch_hole=yes
3942fi
3943
Denis V. Lunevb953f072015-01-30 11:42:14 +03003944# check that fallocate supports range zeroing inside the file
3945fallocate_zero_range=no
3946cat > $TMPC << EOF
3947#include <fcntl.h>
3948#include <linux/falloc.h>
3949
3950int main(void)
3951{
3952 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3953 return 0;
3954}
3955EOF
3956if compile_prog "" "" ; then
3957 fallocate_zero_range=yes
3958fi
3959
Kevin Wolfed911432014-09-29 17:12:59 +02003960# check for posix_fallocate
3961posix_fallocate=no
3962cat > $TMPC << EOF
3963#include <fcntl.h>
3964
3965int main(void)
3966{
3967 posix_fallocate(0, 0, 0);
3968 return 0;
3969}
3970EOF
3971if compile_prog "" "" ; then
3972 posix_fallocate=yes
3973fi
3974
Peter Maydellc727f472011-01-06 11:05:10 +00003975# check for sync_file_range
3976sync_file_range=no
3977cat > $TMPC << EOF
3978#include <fcntl.h>
3979
3980int main(void)
3981{
3982 sync_file_range(0, 0, 0, 0);
3983 return 0;
3984}
3985EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003986if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003987 sync_file_range=yes
3988fi
3989
Peter Maydelldace20d2011-01-10 13:11:24 +00003990# check for linux/fiemap.h and FS_IOC_FIEMAP
3991fiemap=no
3992cat > $TMPC << EOF
3993#include <sys/ioctl.h>
3994#include <linux/fs.h>
3995#include <linux/fiemap.h>
3996
3997int main(void)
3998{
3999 ioctl(0, FS_IOC_FIEMAP, 0);
4000 return 0;
4001}
4002EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004003if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00004004 fiemap=yes
4005fi
4006
Ulrich Hechtd0927932009-09-17 20:22:14 +03004007# check for dup3
4008dup3=no
4009cat > $TMPC << EOF
4010#include <unistd.h>
4011
4012int main(void)
4013{
4014 dup3(0, 0, 0);
4015 return 0;
4016}
4017EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01004018if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004019 dup3=yes
4020fi
4021
Alex Bligh4e0c6522013-08-21 16:02:43 +01004022# check for ppoll support
4023ppoll=no
4024cat > $TMPC << EOF
4025#include <poll.h>
4026
4027int main(void)
4028{
4029 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4030 ppoll(&pfd, 1, 0, 0);
4031 return 0;
4032}
4033EOF
4034if compile_prog "" "" ; then
4035 ppoll=yes
4036fi
4037
Alex Blighcd758dd2013-08-21 16:02:44 +01004038# check for prctl(PR_SET_TIMERSLACK , ... ) support
4039prctl_pr_set_timerslack=no
4040cat > $TMPC << EOF
4041#include <sys/prctl.h>
4042
4043int main(void)
4044{
4045 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4046 return 0;
4047}
4048EOF
4049if compile_prog "" "" ; then
4050 prctl_pr_set_timerslack=yes
4051fi
4052
Peter Maydell3b6edd12011-02-15 18:35:05 +00004053# check for epoll support
4054epoll=no
4055cat > $TMPC << EOF
4056#include <sys/epoll.h>
4057
4058int main(void)
4059{
4060 epoll_create(0);
4061 return 0;
4062}
4063EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004064if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004065 epoll=yes
4066fi
4067
Peter Maydell227f0212016-06-06 19:58:11 +01004068# epoll_create1 is a later addition
4069# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00004070epoll_create1=no
4071cat > $TMPC << EOF
4072#include <sys/epoll.h>
4073
4074int main(void)
4075{
Peter Maydell19e83f62011-04-26 16:56:40 +01004076 /* Note that we use epoll_create1 as a value, not as
4077 * a function being called. This is necessary so that on
4078 * old SPARC glibc versions where the function was present in
4079 * the library but not declared in the header file we will
4080 * fail the configure check. (Otherwise we will get a compiler
4081 * warning but not an error, and will proceed to fail the
4082 * qemu compile where we compile with -Werror.)
4083 */
Blue Swirlc075a722012-08-09 20:21:25 +00004084 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00004085}
4086EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004087if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004088 epoll_create1=yes
4089fi
4090
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004091# check for sendfile support
4092sendfile=no
4093cat > $TMPC << EOF
4094#include <sys/sendfile.h>
4095
4096int main(void)
4097{
4098 return sendfile(0, 0, 0, 0);
4099}
4100EOF
4101if compile_prog "" "" ; then
4102 sendfile=yes
4103fi
4104
Riku Voipio51834342014-06-22 11:25:42 +01004105# check for timerfd support (glibc 2.8 and newer)
4106timerfd=no
4107cat > $TMPC << EOF
4108#include <sys/timerfd.h>
4109
4110int main(void)
4111{
4112 return(timerfd_create(CLOCK_REALTIME, 0));
4113}
4114EOF
4115if compile_prog "" "" ; then
4116 timerfd=yes
4117fi
4118
Riku Voipio9af5c902014-08-12 15:58:57 +03004119# check for setns and unshare support
4120setns=no
4121cat > $TMPC << EOF
4122#include <sched.h>
4123
4124int main(void)
4125{
4126 int ret;
4127 ret = setns(0, 0);
4128 ret = unshare(0);
4129 return ret;
4130}
4131EOF
4132if compile_prog "" "" ; then
4133 setns=yes
4134fi
4135
Aleksandar Markovic38860a02016-10-10 13:23:29 +02004136# clock_adjtime probe
4137clock_adjtime=no
4138cat > $TMPC <<EOF
4139#include <time.h>
4140
4141int main(void)
4142{
4143 return clock_adjtime(0, 0);
4144}
4145EOF
4146clock_adjtime=no
4147if compile_prog "" "" ; then
4148 clock_adjtime=yes
4149fi
4150
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02004151# syncfs probe
4152syncfs=no
4153cat > $TMPC <<EOF
4154#include <unistd.h>
4155
4156int main(void)
4157{
4158 return syncfs(0);
4159}
4160EOF
4161syncfs=no
4162if compile_prog "" "" ; then
4163 syncfs=yes
4164fi
4165
pbrookcc8ae6d2006-04-23 17:57:59 +00004166# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004167if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004168 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004169 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004170 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004171 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004172 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004173 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004174 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004175 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004176fi
4177
Stefan Weilf514f412009-10-11 12:44:07 +02004178# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004179byteswap_h=no
4180cat > $TMPC << EOF
4181#include <byteswap.h>
4182int main(void) { return bswap_32(0); }
4183EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004184if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004185 byteswap_h=yes
4186fi
4187
Stefan Weil75f13592013-01-05 12:17:38 +01004188# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004189bswap_h=no
4190cat > $TMPC << EOF
4191#include <sys/endian.h>
4192#include <sys/types.h>
4193#include <machine/bswap.h>
4194int main(void) { return bswap32(0); }
4195EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004196if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004197 bswap_h=yes
4198fi
4199
aliguorida93a1f2008-12-12 20:02:52 +00004200##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004201# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004202if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004203 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004204 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004205 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4206 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004207 else
4208 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004209 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004210 fi
4211 libiscsi="no"
4212 fi
4213fi
4214
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004215##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004216# Do we need libm
4217cat > $TMPC << EOF
4218#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004219int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004220EOF
4221if compile_prog "" "" ; then
4222 :
4223elif compile_prog "" "-lm" ; then
4224 LIBS="-lm $LIBS"
4225 libs_qga="-lm $libs_qga"
4226else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004227 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004228fi
4229
4230##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004231# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004232# uClibc provides 2 versions of clock_gettime(), one with realtime
4233# support and one without. This means that the clock_gettime() don't
4234# need -lrt. We still need it for timer_create() so we check for this
4235# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004236cat > $TMPC <<EOF
4237#include <signal.h>
4238#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004239int main(void) {
4240 timer_create(CLOCK_REALTIME, NULL, NULL);
4241 return clock_gettime(CLOCK_REALTIME, NULL);
4242}
aliguorida93a1f2008-12-12 20:02:52 +00004243EOF
4244
Juan Quintela52166aa2009-08-03 14:46:03 +02004245if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004246 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004247# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004248elif compile_prog "" "$pthread_lib -lrt" ; then
4249 LIBS="$LIBS -lrt"
4250 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004251fi
4252
Blue Swirl31ff5042009-09-12 12:33:07 +00004253if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Peter Maydell78723752017-09-04 18:19:00 +01004254 "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004255 libs_softmmu="-lutil $libs_softmmu"
4256fi
4257
Blue Swirlde5071c2009-09-12 09:58:46 +00004258##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004259# spice probe
4260if test "$spice" != "no" ; then
4261 cat > $TMPC << EOF
4262#include <spice.h>
4263int main(void) { spice_server_new(); return 0; }
4264EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004265 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4266 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004267 if $pkg_config --atleast-version=0.12.0 spice-server && \
4268 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004269 compile_prog "$spice_cflags" "$spice_libs" ; then
4270 spice="yes"
4271 libs_softmmu="$libs_softmmu $spice_libs"
4272 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004273 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4274 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004275 else
4276 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004277 feature_not_found "spice" \
4278 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004279 fi
4280 spice="no"
4281 fi
4282fi
4283
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004284# check for smartcard support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004285if test "$smartcard" != "no"; then
4286 if $pkg_config libcacard; then
4287 libcacard_cflags=$($pkg_config --cflags libcacard)
4288 libcacard_libs=$($pkg_config --libs libcacard)
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004289 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004290 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004291 if test "$smartcard" = "yes"; then
4292 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004293 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004294 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004295 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004296fi
4297
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004298# check for libusb
4299if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004300 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004301 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004302 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4303 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004304 else
4305 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004306 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004307 fi
4308 libusb="no"
4309 fi
4310fi
4311
Hans de Goede69354a82011-07-19 11:04:10 +02004312# check for usbredirparser for usb network redirection support
4313if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004314 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004315 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004316 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4317 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004318 else
4319 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004320 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004321 fi
4322 usb_redir="no"
4323 fi
4324fi
4325
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004326##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004327# check if we have VSS SDK headers for win
4328
4329if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4330 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004331 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004332 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4333 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004334 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004335 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4336 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004337 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004338 esac
4339 cat > $TMPC << EOF
4340#define __MIDL_user_allocate_free_DEFINED__
4341#include <inc/win2003/vss.h>
4342int main(void) { return VSS_CTX_BACKUP; }
4343EOF
4344 if compile_prog "$vss_win32_include" "" ; then
4345 guest_agent_with_vss="yes"
4346 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004347 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004348 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004349 else
4350 if test "$vss_win32_sdk" != "" ; then
4351 echo "ERROR: Please download and install Microsoft VSS SDK:"
4352 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4353 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4354 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4355 echo "ERROR: The headers are extracted in the directory \`inc'."
4356 feature_not_found "VSS support"
4357 fi
4358 guest_agent_with_vss="no"
4359 fi
4360fi
4361
4362##########################################
4363# lookup Windows platform SDK (if not specified)
4364# The SDK is needed only to build .tlb (type library) file of guest agent
4365# VSS provider from the source. It is usually unnecessary because the
4366# pre-compiled .tlb file is included.
4367
4368if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4369 if test -z "$win_sdk"; then
4370 programfiles="$PROGRAMFILES"
4371 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4372 if test -n "$programfiles"; then
4373 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4374 else
4375 feature_not_found "Windows SDK"
4376 fi
4377 elif test "$win_sdk" = "no"; then
4378 win_sdk=""
4379 fi
4380fi
4381
4382##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004383# check if mingw environment provides a recent ntddscsi.h
4384if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4385 cat > $TMPC << EOF
4386#include <windows.h>
4387#include <ntddscsi.h>
4388int main(void) {
4389#if !defined(IOCTL_SCSI_GET_ADDRESS)
4390#error Missing required ioctl definitions
4391#endif
4392 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4393 return addr.Lun;
4394}
4395EOF
4396 if compile_prog "" "" ; then
4397 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004398 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004399 fi
4400fi
4401
4402##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004403# virgl renderer probe
4404
4405if test "$virglrenderer" != "no" ; then
4406 cat > $TMPC << EOF
4407#include <virglrenderer.h>
4408int main(void) { virgl_renderer_poll(); return 0; }
4409EOF
4410 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4411 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4412 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4413 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4414 virglrenderer="yes"
4415 else
4416 if test "$virglrenderer" = "yes" ; then
4417 feature_not_found "virglrenderer"
4418 fi
4419 virglrenderer="no"
4420 fi
4421fi
4422
4423##########################################
Richard Henderson8ca80762017-09-14 09:41:12 -07004424# capstone
4425
Richard Hendersone219c492017-09-28 09:01:23 -07004426case "$capstone" in
4427 "" | yes)
4428 if $pkg_config capstone; then
4429 capstone=system
4430 elif test -e "${source_path}/.git" ; then
4431 capstone=git
4432 elif test -e "${source_path}/capstone/Makefile" ; then
4433 capstone=internal
4434 elif test -z "$capstone" ; then
4435 capstone=no
4436 else
4437 feature_not_found "capstone" "Install capstone devel or git submodule"
4438 fi
4439 ;;
4440
4441 system)
4442 if ! $pkg_config capstone; then
4443 feature_not_found "capstone" "Install capstone devel"
4444 fi
4445 ;;
4446esac
4447
4448case "$capstone" in
4449 git | internal)
4450 if test "$capstone" = git; then
4451 git_submodules="${git_submodules} capstone"
4452 fi
4453 mkdir -p capstone
4454 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4455 if test "$mingw32" = "yes"; then
4456 LIBCAPSTONE=capstone.lib
4457 else
4458 LIBCAPSTONE=libcapstone.a
4459 fi
4460 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4461 ;;
4462
4463 system)
Richard Henderson8ca80762017-09-14 09:41:12 -07004464 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4465 LIBS="$($pkg_config --libs capstone) $LIBS"
Richard Hendersone219c492017-09-28 09:01:23 -07004466 ;;
4467
4468 no)
4469 ;;
4470 *)
4471 error_exit "Unknown state for capstone: $capstone"
4472 ;;
4473esac
Richard Henderson8ca80762017-09-14 09:41:12 -07004474
4475##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004476# check if we have fdatasync
4477
4478fdatasync=no
4479cat > $TMPC << EOF
4480#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004481int main(void) {
4482#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4483return fdatasync(0);
4484#else
Stefan Weile172fe12012-04-06 21:33:20 +02004485#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004486#endif
4487}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004488EOF
4489if compile_prog "" "" ; then
4490 fdatasync=yes
4491fi
4492
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004493##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004494# check if we have madvise
4495
4496madvise=no
4497cat > $TMPC << EOF
4498#include <sys/types.h>
4499#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004500#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004501int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4502EOF
4503if compile_prog "" "" ; then
4504 madvise=yes
4505fi
4506
4507##########################################
4508# check if we have posix_madvise
4509
4510posix_madvise=no
4511cat > $TMPC << EOF
4512#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004513#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004514int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4515EOF
4516if compile_prog "" "" ; then
4517 posix_madvise=yes
4518fi
4519
4520##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004521# check if we have posix_syslog
4522
4523posix_syslog=no
4524cat > $TMPC << EOF
4525#include <syslog.h>
4526int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4527EOF
4528if compile_prog "" "" ; then
4529 posix_syslog=yes
4530fi
4531
4532##########################################
Peter Maydell401bc052017-09-05 13:19:32 +01004533# check if we have sem_timedwait
4534
4535sem_timedwait=no
4536cat > $TMPC << EOF
4537#include <semaphore.h>
4538int main(void) { return sem_timedwait(0, 0); }
4539EOF
4540if compile_prog "" "" ; then
4541 sem_timedwait=yes
4542fi
4543
4544##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004545# check if trace backend exists
4546
Lluís Vilanova5b808272014-05-27 15:02:14 +02004547$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004548if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004549 error_exit "invalid trace backends" \
4550 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004551fi
4552
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004553##########################################
4554# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004555if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004556 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004557#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004558int main(void) { return 0; }
4559EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004560 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004561 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004562 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004563 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004564 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004565 fi
4566 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004567 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004568 else
4569 urcu_bp_libs="-lurcu-bp"
4570 fi
4571
4572 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4573 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004574 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004575 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004576 fi
4577fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004578
4579##########################################
4580# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004581if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004582 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004583 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004584 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004585 trace_backend_stap="no"
4586 if has 'stap' ; then
4587 trace_backend_stap="yes"
4588 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004589fi
4590
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004591##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004592# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304593
Peter Maydell7c2acc72013-04-08 12:11:27 +01004594# We prefer ucontext, but it's not always possible. The fallback
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004595# is sigcontext. On Windows the only valid backend is the Windows
4596# specific one.
Peter Maydell7c2acc72013-04-08 12:11:27 +01004597
4598ucontext_works=no
4599if test "$darwin" != "yes"; then
4600 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304601#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004602#ifdef __stub_makecontext
4603#error Ignoring glibc stub makecontext which will always fail
4604#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004605int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304606EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004607 if compile_prog "" "" ; then
4608 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304609 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004610fi
4611
4612if test "$coroutine" = ""; then
4613 if test "$mingw32" = "yes"; then
4614 coroutine=win32
4615 elif test "$ucontext_works" = "yes"; then
4616 coroutine=ucontext
4617 else
4618 coroutine=sigaltstack
4619 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004620else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004621 case $coroutine in
4622 windows)
4623 if test "$mingw32" != "yes"; then
4624 error_exit "'windows' coroutine backend only valid for Windows"
4625 fi
4626 # Unfortunately the user visible backend name doesn't match the
4627 # coroutine-*.c filename for this case, so we have to adjust it here.
4628 coroutine=win32
4629 ;;
4630 ucontext)
4631 if test "$ucontext_works" != "yes"; then
4632 feature_not_found "ucontext"
4633 fi
4634 ;;
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004635 sigaltstack)
Peter Maydell7c2acc72013-04-08 12:11:27 +01004636 if test "$mingw32" = "yes"; then
4637 error_exit "only the 'windows' coroutine backend is valid for Windows"
4638 fi
4639 ;;
4640 *)
4641 error_exit "unknown coroutine backend $coroutine"
4642 ;;
4643 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304644fi
4645
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004646if test "$coroutine_pool" = ""; then
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004647 coroutine_pool=yes
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004648fi
4649
Peter Lieven7d992e42016-09-27 11:58:45 +02004650if test "$debug_stack_usage" = "yes"; then
4651 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4652 error_exit "stack usage debugging is not supported for $cpu"
4653 fi
4654 if test "$coroutine_pool" = "yes"; then
4655 echo "WARN: disabling coroutine pool for stack usage debugging"
4656 coroutine_pool=no
4657 fi
4658fi
4659
4660
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304661##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304662# check if we have open_by_handle_at
4663
Stefan Weil4e1797f2012-06-18 22:11:06 +02004664open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304665cat > $TMPC << EOF
4666#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004667#if !defined(AT_EMPTY_PATH)
4668# error missing definition
4669#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004670int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004671#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304672EOF
4673if compile_prog "" "" ; then
4674 open_by_handle_at=yes
4675fi
4676
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304677########################################
4678# check if we have linux/magic.h
4679
4680linux_magic_h=no
4681cat > $TMPC << EOF
4682#include <linux/magic.h>
4683int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004684 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304685}
4686EOF
4687if compile_prog "" "" ; then
4688 linux_magic_h=yes
4689fi
4690
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004691########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004692# check whether we can disable warning option with a pragma (this is needed
4693# to silence warnings in the headers of some versions of external libraries).
4694# This test has to be compiled with -Werror as otherwise an unknown pragma is
4695# only a warning.
4696#
4697# If we can't selectively disable warning in the code, disable -Werror so that
4698# the build doesn't fail anyway.
4699
Peter Maydell06d71fa2012-07-30 16:13:07 +01004700pragma_disable_unused_but_set=no
4701cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004702#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004703#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004704#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004705#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004706
Peter Maydell06d71fa2012-07-30 16:13:07 +01004707int main(void) {
4708 return 0;
4709}
4710EOF
4711if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004712 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004713else
4714 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004715fi
4716
4717########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004718# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004719
4720valgrind_h=no
4721cat > $TMPC << EOF
4722#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004723int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004724 return 0;
4725}
4726EOF
4727if compile_prog "" "" ; then
4728 valgrind_h=yes
4729fi
4730
4731########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004732# check if environ is declared
4733
4734has_environ=no
4735cat > $TMPC << EOF
4736#include <unistd.h>
4737int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004738 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004739 return 0;
4740}
4741EOF
4742if compile_prog "" "" ; then
4743 has_environ=yes
4744fi
4745
Richard Henderson76a347e2012-12-28 14:17:02 -08004746########################################
4747# check if cpuid.h is usable.
4748
Richard Henderson76a347e2012-12-28 14:17:02 -08004749cat > $TMPC << EOF
4750#include <cpuid.h>
4751int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004752 unsigned a, b, c, d;
4753 int max = __get_cpuid_max(0, 0);
4754
4755 if (max >= 1) {
4756 __cpuid(1, a, b, c, d);
4757 }
4758
4759 if (max >= 7) {
4760 __cpuid_count(7, 0, a, b, c, d);
4761 }
4762
4763 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004764}
4765EOF
4766if compile_prog "" "" ; then
4767 cpuid_h=yes
4768fi
4769
Richard Henderson5dd89902017-07-18 18:40:18 -10004770##########################################
4771# avx2 optimization requirement check
4772#
4773# There is no point enabling this if cpuid.h is not usable,
4774# since we won't be able to select the new routines.
4775
4776if test $cpuid_h = yes; then
4777 cat > $TMPC << EOF
4778#pragma GCC push_options
4779#pragma GCC target("avx2")
4780#include <cpuid.h>
4781#include <immintrin.h>
4782static int bar(void *a) {
4783 __m256i x = *(__m256i *)a;
4784 return _mm256_testz_si256(x, x);
4785}
4786int main(int argc, char *argv[]) { return bar(argv[0]); }
4787EOF
4788 if compile_object "" ; then
4789 avx2_opt="yes"
4790 fi
4791fi
4792
Richard Hendersonf5401662013-02-16 12:46:59 -08004793########################################
4794# check if __[u]int128_t is usable.
4795
4796int128=no
4797cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004798#if defined(__clang_major__) && defined(__clang_minor__)
4799# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4800# error __int128_t does not work in CLANG before 3.2
4801# endif
4802#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004803__int128_t a;
4804__uint128_t b;
4805int main (void) {
4806 a = a + b;
4807 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004808 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004809 return 0;
4810}
4811EOF
4812if compile_prog "" "" ; then
4813 int128=yes
4814fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004815
Richard Henderson7ebee432016-06-29 21:10:59 -07004816#########################################
4817# See if 128-bit atomic operations are supported.
4818
4819atomic128=no
4820if test "$int128" = "yes"; then
4821 cat > $TMPC << EOF
4822int main(void)
4823{
4824 unsigned __int128 x = 0, y = 0;
4825 y = __atomic_load_16(&x, 0);
4826 __atomic_store_16(&x, y, 0);
4827 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4828 return 0;
4829}
4830EOF
4831 if compile_prog "" "" ; then
4832 atomic128=yes
4833 fi
4834fi
4835
Richard Hendersondf79b992016-09-02 12:23:57 -07004836#########################################
4837# See if 64-bit atomic operations are supported.
4838# Note that without __atomic builtins, we can only
4839# assume atomic loads/stores max at pointer size.
4840
4841cat > $TMPC << EOF
4842#include <stdint.h>
4843int main(void)
4844{
4845 uint64_t x = 0, y = 0;
4846#ifdef __ATOMIC_RELAXED
4847 y = __atomic_load_8(&x, 0);
4848 __atomic_store_8(&x, y, 0);
4849 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4850 __atomic_exchange_8(&x, y, 0);
4851 __atomic_fetch_add_8(&x, y, 0);
4852#else
4853 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4854 __sync_lock_test_and_set(&x, y);
4855 __sync_val_compare_and_swap(&x, y, 0);
4856 __sync_fetch_and_add(&x, y);
4857#endif
4858 return 0;
4859}
4860EOF
4861if compile_prog "" "" ; then
4862 atomic64=yes
4863fi
4864
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004865########################################
4866# check if getauxval is available.
4867
4868getauxval=no
4869cat > $TMPC << EOF
4870#include <sys/auxv.h>
4871int main(void) {
4872 return getauxval(AT_HWCAP) == 0;
4873}
4874EOF
4875if compile_prog "" "" ; then
4876 getauxval=yes
4877fi
4878
John Snowfd0e6052015-03-25 18:57:39 -04004879########################################
4880# check if ccache is interfering with
4881# semantic analysis of macros
4882
John Snow5e4dfd32015-10-28 13:56:40 -04004883unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004884ccache_cpp2=no
4885cat > $TMPC << EOF
4886static const int Z = 1;
4887#define fn() ({ Z; })
4888#define TAUT(X) ((X) == Z)
4889#define PAREN(X, Y) (X == Y)
4890#define ID(X) (X)
4891int main(int argc, char *argv[])
4892{
4893 int x = 0, y = 0;
4894 x = ID(x);
4895 x = fn();
4896 fn();
4897 if (PAREN(x, y)) return 0;
4898 if (TAUT(Z)) return 0;
4899 return 0;
4900}
4901EOF
4902
4903if ! compile_object "-Werror"; then
4904 ccache_cpp2=yes
4905fi
4906
John Snowb553a042015-11-03 15:43:42 -05004907#################################################
4908# clang does not support glibc + FORTIFY_SOURCE.
4909
4910if test "$fortify_source" != "no"; then
4911 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4912 fortify_source="no";
Peter Maydelle1890912017-06-26 16:25:24 +01004913 elif test -n "$cxx" && has $cxx &&
John Snowcfcc7c12015-11-12 11:29:49 -05004914 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004915 fortify_source="no";
4916 else
4917 fortify_source="yes"
4918 fi
4919fi
4920
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304921##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04004922# check if struct fsxattr is available via linux/fs.h
4923
4924have_fsxattr=no
4925cat > $TMPC << EOF
4926#include <linux/fs.h>
4927struct fsxattr foo;
4928int main(void) {
4929 return 0;
4930}
4931EOF
4932if compile_prog "" "" ; then
4933 have_fsxattr=yes
4934fi
4935
Peter Maydellb66e10e2016-06-08 18:34:32 +01004936##########################################
4937# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02004938have_rtnetlink=no
4939cat > $TMPC << EOF
4940#include <linux/rtnetlink.h>
4941int main(void) {
4942 return IFLA_PROTO_DOWN;
4943}
4944EOF
4945if compile_prog "" "" ; then
4946 have_rtnetlink=yes
4947fi
4948
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01004949##########################################
4950# check for usable AF_VSOCK environment
4951have_af_vsock=no
4952cat > $TMPC << EOF
4953#include <errno.h>
4954#include <sys/types.h>
4955#include <sys/socket.h>
4956#if !defined(AF_VSOCK)
4957# error missing AF_VSOCK flag
4958#endif
4959#include <linux/vm_sockets.h>
4960int main(void) {
4961 int sock, ret;
4962 struct sockaddr_vm svm;
4963 socklen_t len = sizeof(svm);
4964 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4965 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4966 if ((ret == -1) && (errno == ENOTCONN)) {
4967 return 0;
4968 }
4969 return -1;
4970}
4971EOF
4972if compile_prog "" "" ; then
4973 have_af_vsock=yes
4974fi
4975
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04004976##########################################
4977# check for usable AF_ALG environment
4978hava_afalg=no
4979cat > $TMPC << EOF
4980#include <errno.h>
4981#include <sys/types.h>
4982#include <sys/socket.h>
4983#include <linux/if_alg.h>
4984int main(void) {
4985 int sock;
4986 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
4987 return sock;
4988}
4989EOF
4990if compile_prog "" "" ; then
4991 have_afalg=yes
4992fi
4993if test "$crypto_afalg" = "yes"
4994then
4995 if test "$have_afalg" != "yes"
4996 then
4997 error_exit "AF_ALG requested but could not be detected"
4998 fi
4999fi
5000
5001
James Clarke6969ec62016-06-06 12:02:50 +01005002#################################################
5003# Sparc implicitly links with --relax, which is
5004# incompatible with -r, so --no-relax should be
5005# given. It does no harm to give it on other
5006# platforms too.
5007
5008# Note: the prototype is needed since QEMU_CFLAGS
5009# contains -Wmissing-prototypes
5010cat > $TMPC << EOF
5011extern int foo(void);
5012int foo(void) { return 0; }
5013EOF
5014if ! compile_object ""; then
5015 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5016fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01005017for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5018 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5019 LD_REL_FLAGS=$i
5020 break
5021 fi
5022done
5023if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5024 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01005025fi
5026
Jan Vesely277abf12016-04-29 13:15:23 -04005027##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05005028# check for sysmacros.h
5029
5030have_sysmacros=no
5031cat > $TMPC << EOF
5032#include <sys/sysmacros.h>
5033int main(void) {
5034 return makedev(0, 0);
5035}
5036EOF
5037if compile_prog "" "" ; then
5038 have_sysmacros=yes
5039fi
5040
5041##########################################
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005042# Veritas HyperScale block driver VxHS
5043# Check if libvxhs is installed
5044
5045if test "$vxhs" != "no" ; then
5046 cat > $TMPC <<EOF
5047#include <stdint.h>
5048#include <qnio/qnio_api.h>
5049
5050void *vxhs_callback;
5051
5052int main(void) {
5053 iio_init(QNIO_VERSION, vxhs_callback);
5054 return 0;
5055}
5056EOF
5057 vxhs_libs="-lvxhs -lssl"
5058 if compile_prog "" "$vxhs_libs" ; then
5059 vxhs=yes
5060 else
5061 if test "$vxhs" = "yes" ; then
5062 feature_not_found "vxhs block device" "Install libvxhs See github"
5063 fi
5064 vxhs=no
5065 fi
5066fi
5067
5068##########################################
Andreas Grapentin49e00a12017-03-14 17:59:53 +01005069# check for _Static_assert()
5070
5071have_static_assert=no
5072cat > $TMPC << EOF
5073_Static_assert(1, "success");
5074int main(void) {
5075 return 0;
5076}
5077EOF
5078if compile_prog "" "" ; then
5079 have_static_assert=yes
5080fi
5081
5082##########################################
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02005083# check for utmpx.h, it is missing e.g. on OpenBSD
5084
5085have_utmpx=no
5086cat > $TMPC << EOF
5087#include <utmpx.h>
5088struct utmpx user_info;
5089int main(void) {
5090 return 0;
5091}
5092EOF
5093if compile_prog "" "" ; then
5094 have_utmpx=yes
5095fi
5096
5097##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02005098# End of CC checks
5099# After here, no more $cc or $ld runs
5100
Blue Swirl1d728c32012-05-01 18:45:39 +00005101if test "$gcov" = "yes" ; then
5102 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5103 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05005104elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02005105 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00005106elif test "$debug" = "no"; then
5107 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005108fi
Juan Quintelaa316e372009-09-30 01:10:55 +02005109
Peter Lieven6542aa92014-02-03 10:26:13 +01005110##########################################
5111# Do we have libnfs
5112if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01005113 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01005114 libnfs="yes"
5115 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01005116 else
5117 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08005118 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01005119 fi
5120 libnfs="no"
5121 fi
5122fi
Blue Swirl1d728c32012-05-01 18:45:39 +00005123
Peter Maydell6ca026c2012-07-18 15:10:18 +01005124# Now we've finished running tests it's OK to add -Werror to the compiler flags
5125if test "$werror" = "yes"; then
5126 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5127fi
5128
Juan Quintelae86ecd42009-08-03 14:45:59 +02005129if test "$solaris" = "no" ; then
5130 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02005131 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005132 fi
5133fi
5134
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005135# test if pod2man has --utf8 option
5136if pod2man --help | grep -q utf8; then
5137 POD2MAN="pod2man --utf8"
5138else
5139 POD2MAN="pod2man"
5140fi
5141
Blue Swirl952afb72010-09-19 08:36:34 +00005142# Use ASLR, no-SEH and DEP if available
5143if test "$mingw32" = "yes" ; then
5144 for flag in --dynamicbase --no-seh --nxcompat; do
Christian Borntraegere9a35912017-08-23 12:16:23 +02005145 if ld_has $flag ; then
Blue Swirl952afb72010-09-19 08:36:34 +00005146 LDFLAGS="-Wl,$flag $LDFLAGS"
5147 fi
5148 done
5149fi
5150
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03005151qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08005152qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03005153qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06005154qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02005155
Kamil Rytarowskie0580342017-07-14 09:33:44 +01005156# We can only support ivshmem if we have eventfd
5157if [ "$eventfd" = "yes" ]; then
5158 ivshmem=yes
5159fi
5160
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005161tools=""
5162if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02005163 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005164 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5165 tools="qemu-nbd\$(EXESUF) $tools"
Kamil Rytarowskib1449ed2017-07-14 09:33:45 +01005166 fi
5167 if [ "$ivshmem" = "yes" ]; then
David Marchanda75eb032014-09-08 11:17:48 +02005168 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005169 fi
5170fi
5171if test "$softmmu" = yes ; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005172 if test "$linux" = yes; then
5173 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02005174 virtfs=yes
5175 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5176 else
5177 if test "$virtfs" = yes; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005178 error_exit "VirtFS requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05305179 fi
Andreas Färber17500372012-05-01 01:12:03 +02005180 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02005181 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005182 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5183 mpath=yes
5184 else
5185 if test "$mpath" = yes; then
5186 error_exit "Multipath requires libmpathpersist devel"
5187 fi
5188 mpath=no
5189 fi
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005190 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5191 else
5192 if test "$virtfs" = yes; then
5193 error_exit "VirtFS is supported only on Linux"
5194 fi
5195 virtfs=no
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005196 if test "$mpath" = yes; then
5197 error_exit "Multipath is supported only on Linux"
5198 fi
5199 mpath=no
M. Mohan Kumar17bff522011-12-14 13:58:42 +05305200 fi
Laurent Vivierff69fd82017-10-19 21:16:06 +02005201 if test "$xkbcommon" = "yes"; then
5202 tools="qemu-keymap\$(EXESUF) $tools"
5203 fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005204fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005205
5206# Probe for guest agent support/options
5207
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005208if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04005209 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05005210 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005211 guest_agent=yes
5212 elif [ "$guest_agent" != yes ]; then
5213 guest_agent=no
5214 else
5215 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02005216 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02005217fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005218
Michael Roth9d6bc272015-08-26 10:49:13 -05005219# Guest agent Window MSI package
5220
5221if test "$guest_agent" != yes; then
5222 if test "$guest_agent_msi" = yes; then
5223 error_exit "MSI guest agent package requires guest agent enabled"
5224 fi
5225 guest_agent_msi=no
5226elif test "$mingw32" != "yes"; then
5227 if test "$guest_agent_msi" = "yes"; then
5228 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5229 fi
5230 guest_agent_msi=no
5231elif ! has wixl; then
5232 if test "$guest_agent_msi" = "yes"; then
5233 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5234 fi
5235 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05005236else
5237 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5238 # disabled explicitly
5239 if test "$guest_agent_msi" != "no"; then
5240 guest_agent_msi=yes
5241 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005242fi
5243
Michael Roth1a349042015-08-26 11:14:31 -05005244if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05005245 if test "$guest_agent_with_vss" = "yes"; then
5246 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5247 fi
5248
5249 if test "$QEMU_GA_MANUFACTURER" = ""; then
5250 QEMU_GA_MANUFACTURER=QEMU
5251 fi
5252
5253 if test "$QEMU_GA_DISTRO" = ""; then
5254 QEMU_GA_DISTRO=Linux
5255 fi
5256
5257 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02005258 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05005259 fi
5260
Stefan Weil89138852016-05-16 15:10:20 +02005261 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05005262
5263 case "$cpu" in
5264 x86_64)
5265 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5266 ;;
5267 i386)
5268 QEMU_GA_MSI_ARCH="-D Arch=32"
5269 ;;
5270 *)
5271 error_exit "CPU $cpu not supported for building installation package"
5272 ;;
5273 esac
5274fi
5275
Paolo Bonzinica35f782010-05-26 16:08:29 +02005276# Mac OS X ships with a broken assembler
5277roms=
5278if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5279 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5280 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01005281 # Different host OS linkers have different ideas about the name of the ELF
5282 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
5283 # variant; and Windows uses i386pe.
5284 for emu in elf_i386 elf_i386_fbsd i386pe; do
5285 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5286 ld_i386_emulation="$emu"
5287 roms="optionrom"
5288 break
5289 fi
5290 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02005291fi
Andreas Färberd0384d12011-05-01 18:23:56 +02005292if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11005293 roms="$roms spapr-rtas"
5294fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005295
Christian Borntraeger9933c302013-04-23 01:23:03 +00005296if test "$cpu" = "s390x" ; then
5297 roms="$roms s390-ccw"
5298fi
5299
Richard Henderson964c6fa2013-06-21 19:10:16 -07005300# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005301if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005302 textseg_addr=
5303 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07005304 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5305 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07005306 textseg_addr=0x60000000
5307 ;;
5308 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07005309 # A 256M aligned address, high in the address space, with enough
5310 # room for the code_gen_buffer above it before the stack.
5311 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07005312 ;;
5313 esac
5314 if [ -n "$textseg_addr" ]; then
5315 cat > $TMPC <<EOF
5316 int main(void) { return 0; }
5317EOF
5318 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5319 if ! compile_prog "" "$textseg_ldflags"; then
5320 # In case ld does not support -Ttext-segment, edit the default linker
5321 # script via sed to set the .text start addr. This is needed on FreeBSD
5322 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005323 if ! $ld --verbose >/dev/null 2>&1; then
5324 error_exit \
5325 "We need to link the QEMU user mode binaries at a" \
5326 "specific text address. Unfortunately your linker" \
5327 "doesn't support either the -Ttext-segment option or" \
5328 "printing the default linker script with --verbose." \
5329 "If you don't want the user mode binaries, pass the" \
5330 "--disable-user option to configure."
5331 fi
5332
Richard Henderson964c6fa2013-06-21 19:10:16 -07005333 $ld --verbose | sed \
5334 -e '1,/==================================================/d' \
5335 -e '/==================================================/,$d' \
5336 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5337 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5338 textseg_ldflags="-Wl,-T../config-host.ld"
5339 fi
5340 fi
5341fi
5342
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005343# Check that the C++ compiler exists and works with the C compiler.
5344# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5345if has $cxx; then
5346 cat > $TMPC <<EOF
5347int c_function(void);
5348int main(void) { return c_function(); }
5349EOF
5350
5351 compile_object
5352
5353 cat > $TMPCXX <<EOF
5354extern "C" {
5355 int c_function(void);
5356}
5357int c_function(void) { return 42; }
5358EOF
5359
5360 update_cxxflags
5361
5362 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5363 # C++ compiler $cxx works ok with C compiler $cc
5364 :
5365 else
5366 echo "C++ compiler $cxx does not work with C compiler $cc"
5367 echo "Disabling C++ specific optional code"
5368 cxx=
5369 fi
5370else
5371 echo "No C++ compiler available; disabling C++ specific optional code"
5372 cxx=
5373fi
5374
Cole Robinson02d34f62016-05-06 14:03:09 -04005375echo_version() {
5376 if test "$1" = "yes" ; then
5377 echo "($2)"
5378 fi
5379}
5380
Jan Kiszka50e12062014-10-02 10:03:55 +02005381# prepend pixman and ftd flags after all config tests are done
5382QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5383libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005384
bellard43ce4df2003-06-09 19:53:12 +00005385echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005386echo "BIOS directory $(eval echo $qemu_datadir)"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005387echo "firmware path $(eval echo $firmwarepath)"
Stefan Weil89138852016-05-16 15:10:20 +02005388echo "binary directory $(eval echo $bindir)"
5389echo "library directory $(eval echo $libdir)"
5390echo "module directory $(eval echo $qemu_moddir)"
5391echo "libexec directory $(eval echo $libexecdir)"
5392echo "include directory $(eval echo $includedir)"
5393echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005394if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005395echo "local state directory $(eval echo $local_statedir)"
5396echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005397echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005398else
5399echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005400echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005401fi
bellard5a671352003-10-01 00:13:48 +00005402echo "Source path $source_path"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005403echo "GIT submodules $git_submodules"
bellard43ce4df2003-06-09 19:53:12 +00005404echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005405echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005406echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005407echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005408echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005409echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005410echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005411echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005412echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005413echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005414echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005415if test "$slirp" = "yes" ; then
5416 echo "smbd $smbd"
5417fi
Fam Zheng17969262014-02-10 14:48:56 +08005418echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00005419echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00005420echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00005421echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +00005422echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00005423echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00005424echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00005425echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00005426echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00005427if test "$darwin" = "yes" ; then
5428 echo "Cocoa support $cocoa"
5429fi
Stefan Weil89138852016-05-16 15:10:20 +02005430echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5431echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005432echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02005433echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005434echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005435echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005436echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005437echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005438echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02005439echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005440echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005441echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00005442echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005443echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02005444echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00005445echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00005446echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005447echo "Block whitelist (rw) $block_drv_rw_whitelist"
5448echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05305449echo "VirtFS support $virtfs"
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005450echo "Multipath support $mpath"
Jes Sorensen821601e2011-03-16 13:33:36 +01005451echo "VNC support $vnc"
5452if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01005453 echo "VNC SASL support $vnc_sasl"
5454 echo "VNC JPEG support $vnc_jpeg"
5455 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01005456fi
blueswir131422552007-04-16 18:27:06 +00005457if test -n "$sparc_cpu"; then
5458 echo "Target Sparc Arch $sparc_cpu"
5459fi
aliguorie37630c2009-04-22 15:19:10 +00005460echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00005461if test "$xen" = "yes" ; then
5462 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00005463 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00005464fi
aurel322e4d9fb2008-04-08 06:01:02 +00005465echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02005466echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02005467echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02005468echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00005469echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01005470echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005471echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005472echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00005473echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02005474echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01005475echo "HAX support $hax"
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02005476echo "TCG support $tcg"
5477if test "$tcg" = "yes" ; then
5478 echo "TCG debug enabled $debug_tcg"
5479 echo "TCG interpreter $tcg_interpreter"
5480fi
Michael R. Hines2da776d2013-07-22 10:01:54 -04005481echo "RDMA support $rdma"
aurel32f652e6a2008-12-16 10:43:48 +00005482echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00005483echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005484echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00005485echo "madvise $madvise"
5486echo "posix_madvise $posix_madvise"
Corey Bryant47e98652012-01-26 09:42:26 -05005487echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005488echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005489echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005490echo "vhost-vsock support $vhost_vsock"
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005491echo "vhost-user support $vhost_user"
Lluís Vilanova5b808272014-05-27 15:02:14 +02005492echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01005493if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01005494echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01005495fi
Stefan Weil89138852016-05-16 15:10:20 +02005496echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005497echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005498echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005499echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005500echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02005501echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005502echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005503echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005504echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01005505echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05005506echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005507echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05005508echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05005509echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03005510echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01005511echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005512echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02005513echo "debug stack usage $debug_stack_usage"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005514echo "crypto afalg $crypto_afalg"
Bharata B Raoeb100392012-09-24 14:42:45 +05305515echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00005516echo "gcov $gcov_tool"
5517echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05005518echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005519echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005520echo "TPM passthrough $tpm_passthrough"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03005521echo "TPM emulator $tpm_emulator"
Paolo Bonzini3556c232013-05-10 14:16:40 +02005522echo "QOM debugging $qom_cast_debug"
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01005523echo "Live block migration $live_block_migration"
qiaonuohan607dacd2014-02-18 14:11:30 +08005524echo "lzo support $lzo"
5525echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01005526echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005527echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08005528echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02005529echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08005530echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005531echo "replication support $replication"
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005532echo "VxHS block device $vxhs"
Richard Henderson8ca80762017-09-14 09:41:12 -07005533echo "capstone $capstone"
bellard67b915a2004-03-31 23:37:16 +00005534
Stefan Weil1ba16962011-07-29 22:40:45 +02005535if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00005536echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00005537fi
bellard97a847b2003-08-10 21:36:04 +00005538
Peter Maydell898be3e2017-03-21 14:31:57 +00005539if test "$supported_cpu" = "no"; then
5540 echo
5541 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5542 echo
5543 echo "CPU host architecture $cpu support is not currently maintained."
5544 echo "The QEMU project intends to remove support for this host CPU in"
5545 echo "a future release if nobody volunteers to maintain it and to"
5546 echo "provide a build host for our continuous integration setup."
5547 echo "configure has succeeded and you can continue to build, but"
5548 echo "if you care about QEMU on this platform you should contact"
5549 echo "us upstream at qemu-devel@nongnu.org."
5550fi
5551
5552if test "$supported_os" = "no"; then
5553 echo
5554 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5555 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00005556 echo "Host OS $targetos support is not currently maintained."
5557 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00005558 echo "a future release if nobody volunteers to maintain it and to"
5559 echo "provide a build host for our continuous integration setup."
5560 echo "configure has succeeded and you can continue to build, but"
5561 echo "if you care about QEMU on this platform you should contact"
5562 echo "us upstream at qemu-devel@nongnu.org."
5563fi
5564
Juan Quintela98ec69a2009-07-16 18:34:18 +02005565config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00005566
Stefan Weildbd99ae2013-01-01 18:33:44 +01005567echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5568
Juan Quintela98ec69a2009-07-16 18:34:18 +02005569echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005570echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005571
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02005572echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005573echo "prefix=$prefix" >> $config_host_mak
5574echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03005575echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04005576echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02005577echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005578echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005579echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03005580echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005581echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005582echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005583echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08005584echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005585if test "$mingw32" = "no" ; then
5586 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5587fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04005588echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005589echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005590echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005591echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06005592echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02005593echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005594echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005595
Juan Quintela98ec69a2009-07-16 18:34:18 +02005596echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02005597
aurel32f8393942009-04-13 18:45:38 +00005598if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005599 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00005600fi
aliguori1625af82009-04-05 17:41:02 +00005601if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07005602 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00005603fi
bellard7d132992003-03-06 23:23:54 +00005604if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02005605 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005606fi
bellard67b915a2004-03-31 23:37:16 +00005607if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005608 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02005609 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00005610 version_major=${rc_version%%.*}
5611 rc_version=${rc_version#*.}
5612 version_minor=${rc_version%%.*}
5613 rc_version=${rc_version#*.}
5614 version_subminor=${rc_version%%.*}
5615 version_micro=0
5616 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5617 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005618 if test "$guest_agent_with_vss" = "yes" ; then
5619 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05005620 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005621 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5622 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05005623 if test "$guest_agent_ntddscsi" = "yes" ; then
5624 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5625 fi
Michael Roth1a349042015-08-26 11:14:31 -05005626 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03005627 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5628 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5629 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5630 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5631 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5632 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5633 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5634 fi
pbrook210fa552007-02-27 21:04:49 +00005635else
Juan Quintela35f4df22009-07-27 16:13:07 +02005636 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00005637fi
blueswir1128ab2f2008-08-15 18:33:42 +00005638
Mark McLoughlindffcb712009-10-22 17:49:11 +01005639if test "$linux" = "yes" ; then
5640 echo "CONFIG_LINUX=y" >> $config_host_mak
5641fi
5642
bellard83fb7ad2004-07-05 21:25:26 +00005643if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005644 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00005645fi
malcb29fe3e2008-11-18 01:42:22 +00005646
bellardec530c82006-04-25 22:36:06 +00005647if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005648 echo "CONFIG_SOLARIS=y" >> $config_host_mak
bellardec530c82006-04-25 22:36:06 +00005649fi
Andreas Färber179cf402010-09-20 00:50:43 +02005650if test "$haiku" = "yes" ; then
5651 echo "CONFIG_HAIKU=y" >> $config_host_mak
5652fi
bellard97a847b2003-08-10 21:36:04 +00005653if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005654 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005655fi
Stefan Weil1ba16962011-07-29 22:40:45 +02005656if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005657 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00005658fi
bellardc20709a2004-04-21 23:27:19 +00005659if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005660 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04005661 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00005662fi
ths8a16d272008-07-19 09:56:24 +00005663if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005664 echo "CONFIG_VDE=y" >> $config_host_mak
Fam Zhenge2ad6f12017-09-07 16:35:52 +08005665 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005666fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005667if test "$netmap" = "yes" ; then
5668 echo "CONFIG_NETMAP=y" >> $config_host_mak
5669fi
Gonglei015a33b2014-07-01 20:58:08 +08005670if test "$l2tpv3" = "yes" ; then
5671 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5672fi
Corey Bryant47e98652012-01-26 09:42:26 -05005673if test "$cap_ng" = "yes" ; then
5674 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5675fi
Juan Quintela2358a492009-07-27 16:13:25 +02005676echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005677for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005678 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005679 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005680done
Fam Zhengb1149912017-09-07 16:29:13 +08005681echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5682echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5683echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5684echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5685echo "OSS_LIBS=$oss_libs" >> $config_host_mak
Juan Quintela67f86e82009-08-03 14:46:59 +02005686if test "$audio_pt_int" = "yes" ; then
5687 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5688fi
malcd5631632009-10-10 01:13:41 +04005689if test "$audio_win_int" = "yes" ; then
5690 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5691fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005692echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5693echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005694if test "$vnc" = "yes" ; then
5695 echo "CONFIG_VNC=y" >> $config_host_mak
5696fi
aliguori2f9606b2009-03-06 20:27:28 +00005697if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005698 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005699fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005700if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005701 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005702fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005703if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005704 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005705fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005706if test "$xkbcommon" = "yes" ; then
5707 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5708 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5709fi
aliguori76655d62009-03-06 20:27:37 +00005710if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005711 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005712fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005713if test "$xfs" = "yes" ; then
5714 echo "CONFIG_XFS=y" >> $config_host_mak
5715fi
Stefan Weil89138852016-05-16 15:10:20 +02005716qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005717echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005718echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005719echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005720echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005721if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005722 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005723fi
Fam Zheng17969262014-02-10 14:48:56 +08005724if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005725 # $shacmd can generate a hash started with digit, which the compiler doesn't
5726 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005727 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005728 echo "CONFIG_MODULES=y" >> $config_host_mak
5729fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005730if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005731 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005732 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005733 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
Fam Zheng8ecc89f2017-09-07 16:29:11 +08005734 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005735fi
5736if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005737 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005738fi
5739if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005740 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005741fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005742if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005743 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005744fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005745if test "$accept4" = "yes" ; then
5746 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5747fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305748if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005749 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305750fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005751if test "$eventfd" = "yes" ; then
5752 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5753fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005754if test "$memfd" = "yes" ; then
5755 echo "CONFIG_MEMFD=y" >> $config_host_mak
5756fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005757if test "$fallocate" = "yes" ; then
5758 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5759fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005760if test "$fallocate_punch_hole" = "yes" ; then
5761 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5762fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005763if test "$fallocate_zero_range" = "yes" ; then
5764 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5765fi
Kevin Wolfed911432014-09-29 17:12:59 +02005766if test "$posix_fallocate" = "yes" ; then
5767 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5768fi
Peter Maydellc727f472011-01-06 11:05:10 +00005769if test "$sync_file_range" = "yes" ; then
5770 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5771fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005772if test "$fiemap" = "yes" ; then
5773 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5774fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005775if test "$dup3" = "yes" ; then
5776 echo "CONFIG_DUP3=y" >> $config_host_mak
5777fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005778if test "$ppoll" = "yes" ; then
5779 echo "CONFIG_PPOLL=y" >> $config_host_mak
5780fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005781if test "$prctl_pr_set_timerslack" = "yes" ; then
5782 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5783fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005784if test "$epoll" = "yes" ; then
5785 echo "CONFIG_EPOLL=y" >> $config_host_mak
5786fi
5787if test "$epoll_create1" = "yes" ; then
5788 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5789fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005790if test "$sendfile" = "yes" ; then
5791 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5792fi
Riku Voipio51834342014-06-22 11:25:42 +01005793if test "$timerfd" = "yes" ; then
5794 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5795fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005796if test "$setns" = "yes" ; then
5797 echo "CONFIG_SETNS=y" >> $config_host_mak
5798fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02005799if test "$clock_adjtime" = "yes" ; then
5800 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5801fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02005802if test "$syncfs" = "yes" ; then
5803 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5804fi
aurel323b3f24a2009-04-15 16:12:13 +00005805if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005806 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005807fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005808if test "$inotify1" = "yes" ; then
5809 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5810fi
Peter Maydell401bc052017-09-05 13:19:32 +01005811if test "$sem_timedwait" = "yes" ; then
5812 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5813fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005814if test "$byteswap_h" = "yes" ; then
5815 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5816fi
5817if test "$bswap_h" = "yes" ; then
5818 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5819fi
Alexander Graf769ce762009-05-11 17:41:42 +02005820if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005821 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005822 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005823 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005824fi
aurel322e4d9fb2008-04-08 06:01:02 +00005825if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005826 echo "CONFIG_BRLAPI=y" >> $config_host_mak
Fam Zheng8eca2882017-09-07 16:47:00 +08005827 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005828fi
balrogfb599c92008-09-28 23:49:55 +00005829if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005830 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005831 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005832fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005833if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005834 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5835fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005836if test "$gtk" = "yes" ; then
5837 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005838 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005839 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005840 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005841 if test "$gtk_gl" = "yes" ; then
5842 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5843 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005844fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005845echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005846if test "$gnutls" = "yes" ; then
5847 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5848fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005849if test "$gnutls_rnd" = "yes" ; then
5850 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5851fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005852if test "$gcrypt" = "yes" ; then
5853 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08005854 if test "$gcrypt_hmac" = "yes" ; then
5855 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5856 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005857 if test "$gcrypt_kdf" = "yes" ; then
5858 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5859 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005860fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005861if test "$nettle" = "yes" ; then
5862 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005863 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005864 if test "$nettle_kdf" = "yes" ; then
5865 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5866 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005867fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005868if test "$tasn1" = "yes" ; then
5869 echo "CONFIG_TASN1=y" >> $config_host_mak
5870fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005871if test "$have_ifaddrs_h" = "yes" ; then
5872 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5873fi
Eric Blake6b39b062016-10-11 10:46:23 -05005874if test "$have_broken_size_max" = "yes" ; then
5875 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5876fi
Jan Vesely277abf12016-04-29 13:15:23 -04005877
5878# Work around a system header bug with some kernel/XFS header
5879# versions where they both try to define 'struct fsxattr':
5880# xfs headers will not try to redefine structs from linux headers
5881# if this macro is set.
5882if test "$have_fsxattr" = "yes" ; then
5883 echo "HAVE_FSXATTR=y" >> $config_host_mak
5884fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005885if test "$vte" = "yes" ; then
5886 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005887 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5888fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005889if test "$virglrenderer" = "yes" ; then
5890 echo "CONFIG_VIRGL=y" >> $config_host_mak
5891 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5892 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5893fi
aliguorie37630c2009-04-22 15:19:10 +00005894if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005895 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005896 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005897 if test "$xen_pv_domain_build" = "yes" ; then
5898 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5899 fi
aliguorie37630c2009-04-22 15:19:10 +00005900fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005901if test "$linux_aio" = "yes" ; then
5902 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5903fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005904if test "$attr" = "yes" ; then
5905 echo "CONFIG_ATTR=y" >> $config_host_mak
5906fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005907if test "$libattr" = "yes" ; then
5908 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5909fi
Meador Inge983eef52012-02-24 14:00:42 +05305910if test "$virtfs" = "yes" ; then
5911 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005912fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005913if test "$mpath" = "yes" ; then
5914 echo "CONFIG_MPATH=y" >> $config_host_mak
5915fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005916if test "$vhost_scsi" = "yes" ; then
5917 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5918fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005919if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005920 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5921fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005922if test "$vhost_vsock" = "yes" ; then
5923 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5924fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005925if test "$vhost_user" = "yes" ; then
5926 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
5927fi
ths77755342008-11-27 15:45:16 +00005928if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005929 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005930fi
aliguoribf9298b2008-12-05 20:05:26 +00005931if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005932 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005933fi
aliguoriceb42de2009-04-07 18:43:28 +00005934if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005935 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005936fi
aurel32f652e6a2008-12-16 10:43:48 +00005937if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005938 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005939fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005940if test "$signalfd" = "yes" ; then
5941 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5942fi
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02005943if test "$tcg" = "yes"; then
5944 echo "CONFIG_TCG=y" >> $config_host_mak
5945 if test "$tcg_interpreter" = "yes" ; then
5946 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5947 fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005948fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005949if test "$fdatasync" = "yes" ; then
5950 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5951fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005952if test "$madvise" = "yes" ; then
5953 echo "CONFIG_MADVISE=y" >> $config_host_mak
5954fi
5955if test "$posix_madvise" = "yes" ; then
5956 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5957fi
bellard97a847b2003-08-10 21:36:04 +00005958
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005959if test "$spice" = "yes" ; then
5960 echo "CONFIG_SPICE=y" >> $config_host_mak
5961fi
5962
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005963if test "$smartcard" = "yes" ; then
5964 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Fam Zheng7b62bf52017-09-07 16:29:16 +08005965 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
5966 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005967fi
5968
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005969if test "$libusb" = "yes" ; then
5970 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
Fam Zhengb878b652017-09-07 16:29:17 +08005971 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
5972 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005973fi
5974
Hans de Goede69354a82011-07-19 11:04:10 +02005975if test "$usb_redir" = "yes" ; then
5976 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
Fam Zhengcc7923f2017-09-07 16:29:18 +08005977 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
5978 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
Hans de Goede69354a82011-07-19 11:04:10 +02005979fi
5980
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005981if test "$opengl" = "yes" ; then
5982 echo "CONFIG_OPENGL=y" >> $config_host_mak
5983 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005984 if test "$opengl_dmabuf" = "yes" ; then
5985 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5986 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005987fi
5988
Liang Li99f2dbd2016-03-08 13:53:16 +08005989if test "$avx2_opt" = "yes" ; then
5990 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5991fi
5992
qiaonuohan607dacd2014-02-18 14:11:30 +08005993if test "$lzo" = "yes" ; then
5994 echo "CONFIG_LZO=y" >> $config_host_mak
5995fi
5996
5997if test "$snappy" = "yes" ; then
5998 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5999fi
6000
Peter Wu6b383c02015-01-06 18:48:14 +01006001if test "$bzip2" = "yes" ; then
6002 echo "CONFIG_BZIP2=y" >> $config_host_mak
6003 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6004fi
6005
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006006if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006007 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006008 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6009 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006010fi
6011
Peter Lieven6542aa92014-02-03 10:26:13 +01006012if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04006013 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6014 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01006015fi
6016
Eduardo Otubof7945732012-08-14 18:44:05 -03006017if test "$seccomp" = "yes"; then
6018 echo "CONFIG_SECCOMP=y" >> $config_host_mak
Fam Zhengc3883e12017-09-07 16:53:16 +08006019 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6020 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
Eduardo Otubof7945732012-08-14 18:44:05 -03006021fi
6022
bellard83fb7ad2004-07-05 21:25:26 +00006023# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00006024if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006025 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00006026fi
6027
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01006028if test "$localtime_r" = "yes" ; then
6029 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6030fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02006031if test "$qom_cast_debug" = "yes" ; then
6032 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6033fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006034if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006035 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006036 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6037 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006038fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06006039
Peter Maydell7c2acc72013-04-08 12:11:27 +01006040echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006041if test "$coroutine_pool" = "yes" ; then
6042 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6043else
6044 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6045fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05306046
Peter Lieven7d992e42016-09-27 11:58:45 +02006047if test "$debug_stack_usage" = "yes" ; then
6048 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6049fi
6050
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006051if test "$crypto_afalg" = "yes" ; then
6052 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6053fi
6054
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05306055if test "$open_by_handle_at" = "yes" ; then
6056 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6057fi
6058
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05306059if test "$linux_magic_h" = "yes" ; then
6060 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6061fi
6062
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01006063if test "$pragma_diagnostic_available" = "yes" ; then
6064 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01006065fi
6066
Kevin Wolf3f4349d2012-06-29 13:40:27 +02006067if test "$valgrind_h" = "yes" ; then
6068 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6069fi
6070
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03006071if test "$has_environ" = "yes" ; then
6072 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6073fi
6074
Richard Henderson76a347e2012-12-28 14:17:02 -08006075if test "$cpuid_h" = "yes" ; then
6076 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6077fi
6078
Richard Hendersonf5401662013-02-16 12:46:59 -08006079if test "$int128" = "yes" ; then
6080 echo "CONFIG_INT128=y" >> $config_host_mak
6081fi
6082
Richard Henderson7ebee432016-06-29 21:10:59 -07006083if test "$atomic128" = "yes" ; then
6084 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6085fi
6086
Richard Hendersondf79b992016-09-02 12:23:57 -07006087if test "$atomic64" = "yes" ; then
6088 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6089fi
6090
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08006091if test "$getauxval" = "yes" ; then
6092 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6093fi
6094
Bharata B Raoeb100392012-09-24 14:42:45 +05306095if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006096 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006097 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6098 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05306099fi
6100
Jeff Codyd85fa9e2016-04-05 10:40:09 -04006101if test "$glusterfs_xlator_opt" = "yes" ; then
6102 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6103fi
6104
Bharata B Rao0c14fb42013-07-16 21:47:42 +05306105if test "$glusterfs_discard" = "yes" ; then
6106 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6107fi
6108
Niels de Vosdf3a4292017-05-28 12:01:14 +05306109if test "$glusterfs_fallocate" = "yes" ; then
6110 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6111fi
6112
Bharata B Rao7c815372013-12-21 14:51:25 +05306113if test "$glusterfs_zerofill" = "yes" ; then
6114 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6115fi
6116
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006117if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006118 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006119 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6120 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006121fi
6122
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006123if test "$live_block_migration" = "yes" ; then
6124 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6125fi
6126
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006127if test "$tpm" = "yes"; then
6128 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006129 # TPM passthrough support?
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006130 if test "$tpm_passthrough" = "yes"; then
6131 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6132 fi
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006133 # TPM emulator support?
6134 if test "$tpm_emulator" = "yes"; then
6135 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6136 fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006137fi
6138
Lluís Vilanova5b808272014-05-27 15:02:14 +02006139echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6140if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02006141 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05306142fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006143if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02006144 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6145 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02006146 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01006147fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03006148if have_backend "log"; then
6149 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02006150fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006151if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02006152 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6153fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006154if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02006155 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6156 if test "$trace_backend_stap" = "yes" ; then
6157 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6158 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00006159fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006160if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006161 if test "$linux" = "yes" ; then
6162 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006163 else
Stewart Smith21684af2014-01-24 12:39:10 +11006164 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006165 fi
6166fi
Paul Durrant0a852412016-08-04 14:44:14 +01006167if have_backend "syslog"; then
6168 if test "$posix_syslog" = "yes" ; then
6169 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6170 else
6171 feature_not_found "syslog(trace backend)" "syslog not available"
6172 fi
6173fi
Prerna Saxena9410b562010-07-13 09:26:32 +01006174echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6175
Michael R. Hines2da776d2013-07-22 10:01:54 -04006176if test "$rdma" = "yes" ; then
6177 echo "CONFIG_RDMA=y" >> $config_host_mak
Fam Zheng392fb642017-09-07 16:42:30 +08006178 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
Michael R. Hines2da776d2013-07-22 10:01:54 -04006179fi
6180
Laurent Vivier575b22b2016-06-02 22:14:15 +02006181if test "$have_rtnetlink" = "yes" ; then
6182 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6183fi
6184
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006185if test "$replication" = "yes" ; then
6186 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6187fi
6188
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01006189if test "$have_af_vsock" = "yes" ; then
6190 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6191fi
6192
Christopher Covington4d043512016-12-28 15:04:33 -05006193if test "$have_sysmacros" = "yes" ; then
6194 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6195fi
6196
Andreas Grapentin49e00a12017-03-14 17:59:53 +01006197if test "$have_static_assert" = "yes" ; then
6198 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6199fi
6200
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02006201if test "$have_utmpx" = "yes" ; then
6202 echo "HAVE_UTMPX=y" >> $config_host_mak
6203fi
6204
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006205if test "$ivshmem" = "yes" ; then
6206 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6207fi
Richard Hendersone219c492017-09-28 09:01:23 -07006208if test "$capstone" != "no" ; then
Richard Henderson8ca80762017-09-14 09:41:12 -07006209 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6210fi
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006211
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00006212# Hold two types of flag:
6213# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6214# a thread we have a handle to
6215# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6216# platform
6217if test "$pthread_setname_np" = "yes" ; then
6218 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6219 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6220fi
6221
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006222if test "$vxhs" = "yes" ; then
6223 echo "CONFIG_VXHS=y" >> $config_host_mak
6224 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6225fi
6226
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006227if test "$tcg_interpreter" = "yes"; then
6228 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6229elif test "$ARCH" = "sparc64" ; then
6230 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6231elif test "$ARCH" = "s390x" ; then
6232 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006233elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006234 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07006235elif test "$ARCH" = "ppc64" ; then
6236 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006237else
6238 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6239fi
6240QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6241
Juan Quintela98ec69a2009-07-16 18:34:18 +02006242echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006243echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006244echo "MAKE=$make" >> $config_host_mak
6245echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04006246echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6247echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03006248echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6249echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00006250echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006251echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006252if $iasl -h > /dev/null 2>&1; then
6253 echo "IASL=$iasl" >> $config_host_mak
6254fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02006255echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006256echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04006257echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01006258echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006259echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01006260echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006261echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006262echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006263echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006264echo "OBJCOPY=$objcopy" >> $config_host_mak
6265echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02006266echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00006267echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006268echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006269echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02006270echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01006271echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01006272echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006273if test "$sparse" = "yes" ; then
6274 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01006275 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02006276 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006277 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6278 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6279fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01006280if test "$cross_prefix" != ""; then
6281 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6282else
6283 echo "AUTOCONF_HOST := " >> $config_host_mak
6284fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006285echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006286echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01006287echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01006288echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02006289echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02006290echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01006291echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006292echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006293echo "DSOSUF=$DSOSUF" >> $config_host_mak
6294echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05006295echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01006296echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6297echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02006298echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01006299echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00006300if test "$gcov" = "yes" ; then
6301 echo "CONFIG_GCOV=y" >> $config_host_mak
6302 echo "GCOV=$gcov_tool" >> $config_host_mak
6303fi
Juan Quintela804edf22009-07-27 16:12:49 +02006304
Peter Maydell6efd7512011-11-30 11:59:04 +00006305# use included Linux headers
6306if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00006307 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00006308 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006309 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01006310 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00006311 ;;
6312 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01006313 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00006314 ;;
6315 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01006316 linux_arch=s390
6317 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01006318 aarch64)
6319 linux_arch=arm64
6320 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01006321 mips64)
6322 linux_arch=mips
6323 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01006324 *)
6325 # For most CPUs the kernel architecture name and QEMU CPU name match.
6326 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00006327 ;;
6328 esac
Peter Maydell08312a62012-08-03 13:51:25 +01006329 # For non-KVM architectures we will not have asm headers
6330 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6331 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
6332 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00006333fi
6334
bellard1d14ffa2005-10-30 18:58:22 +00006335for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00006336target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02006337config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02006338target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00006339target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02006340
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006341case "$target_name" in
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006342 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
Juan Quintelaea2d6a32009-07-16 18:34:10 +02006343 target_bigendian=yes
6344 ;;
6345esac
bellard97a847b2003-08-10 21:36:04 +00006346target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00006347target_user_only="no"
ths831b7822007-01-18 20:06:33 +00006348target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00006349target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00006350case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006351 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00006352 target_softmmu="yes"
6353 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006354 ${target_name}-linux-user)
pbrook9e407a82007-05-26 16:38:53 +00006355 target_user_only="yes"
6356 target_linux_user="yes"
6357 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006358 ${target_name}-bsd-user)
blueswir184778502008-10-26 20:33:16 +00006359 target_user_only="yes"
6360 target_bsd_user="yes"
6361 ;;
pbrook9e407a82007-05-26 16:38:53 +00006362 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006363 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00006364 exit 1
6365 ;;
6366esac
ths831b7822007-01-18 20:06:33 +00006367
bellard97a847b2003-08-10 21:36:04 +00006368mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02006369echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006370
pbrooke5fe0c52006-06-11 13:32:59 +00006371bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00006372mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02006373interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00006374gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00006375
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006376TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02006377TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02006378TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02006379
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006380case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00006381 i386)
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006382 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006383 ;;
6384 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006385 TARGET_BASE_ARCH=i386
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006386 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006387 ;;
6388 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11006389 mttcg="yes"
aurel322408a522008-04-20 20:19:44 +00006390 ;;
6391 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006392 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00006393 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006394 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00006395 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00006396 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01006397 aarch64)
6398 TARGET_BASE_ARCH=arm
6399 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006400 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01006401 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 +01006402 ;;
aurel322408a522008-04-20 20:19:44 +00006403 cris)
aurel322408a522008-04-20 20:19:44 +00006404 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08006405 hppa)
6406 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01006407 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01006408 ;;
aurel322408a522008-04-20 20:19:44 +00006409 m68k)
aurel322408a522008-04-20 20:19:44 +00006410 bflt="yes"
Laurent Vivier5a4526b2017-06-20 22:51:19 +02006411 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
aurel322408a522008-04-20 20:19:44 +00006412 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006413 microblaze|microblazeel)
6414 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006415 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006416 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02006417 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006418 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006419 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006420 ;;
6421 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08006422 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006423 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006424 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08006425 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006426 ;;
6427 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006428 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006429 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006430 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006431 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006432 moxie)
6433 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006434 nios2)
6435 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006436 or1k)
Jia Liue67db062012-07-20 15:50:39 +08006437 TARGET_ARCH=openrisc
6438 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08006439 ;;
aurel322408a522008-04-20 20:19:44 +00006440 ppc)
aurel32c8b35322009-01-24 15:07:34 +00006441 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006442 ;;
6443 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006444 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006445 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00006446 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006447 ;;
6448 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006449 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006450 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306451 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006452 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006453 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05006454 ppc64le)
6455 TARGET_ARCH=ppc64
6456 TARGET_BASE_ARCH=ppc
6457 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306458 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006459 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
Doug Kwan9c351262014-05-29 09:12:21 -05006460 ;;
aurel322408a522008-04-20 20:19:44 +00006461 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006462 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006463 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006464 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02006465 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01006466 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006467 ;;
6468 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006469 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00006470 bflt="yes"
6471 ;;
6472 sparc)
aurel322408a522008-04-20 20:19:44 +00006473 ;;
6474 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006475 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00006476 ;;
6477 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006478 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006479 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006480 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02006481 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006482 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006483 s390x)
Christian Borntraeger86158a22017-03-08 12:41:14 +01006484 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01006485 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08006486 tilegx)
6487 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07006488 tricore)
6489 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006490 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006491 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006492 xtensa|xtensaeb)
6493 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04006494 ;;
aurel322408a522008-04-20 20:19:44 +00006495 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006496 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00006497 ;;
6498esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006499# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6500if [ "$TARGET_BASE_ARCH" = "" ]; then
6501 TARGET_BASE_ARCH=$TARGET_ARCH
6502fi
6503
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006504symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6505
Daniel P. Berrange99afc912012-08-20 15:31:38 +01006506upper() {
6507 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6508}
6509
Stefan Weil89138852016-05-16 15:10:20 +02006510target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02006511echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006512echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02006513echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02006514if [ "$TARGET_ABI_DIR" = "" ]; then
6515 TARGET_ABI_DIR=$TARGET_ARCH
6516fi
Juan Quintela25be2102009-10-07 02:41:00 +02006517echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07006518if [ "$HOST_VARIANT_DIR" != "" ]; then
6519 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6520fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006521
6522if supported_xen_target $target; then
6523 echo "CONFIG_XEN=y" >> $config_target_mak
6524 if test "$xen_pci_passthrough" = yes; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00006525 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006526 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006527fi
6528if supported_kvm_target $target; then
6529 echo "CONFIG_KVM=y" >> $config_target_mak
6530 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006531 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006532 if test "$vhost_user" = "yes" ; then
6533 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6534 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02006535 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006536fi
6537if supported_hax_target $target; then
6538 echo "CONFIG_HAX=y" >> $config_target_mak
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006539fi
bellardde83cd02003-06-15 20:25:43 +00006540if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006541 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006542fi
6543if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006544 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00006545 if test "$mttcg" = "yes" ; then
6546 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6547 fi
bellardde83cd02003-06-15 20:25:43 +00006548fi
bellard997344f2003-10-27 21:10:39 +00006549if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006550 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01006551 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00006552fi
ths831b7822007-01-18 20:06:33 +00006553if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006554 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00006555fi
pbrook56aebc82008-10-11 17:55:29 +00006556list=""
6557if test ! -z "$gdb_xml_files" ; then
6558 for x in $gdb_xml_files; do
6559 list="$list $source_path/gdb-xml/$x"
6560 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02006561 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00006562fi
bellardde83cd02003-06-15 20:25:43 +00006563
pbrooke5fe0c52006-06-11 13:32:59 +00006564if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02006565 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00006566fi
blueswir184778502008-10-26 20:33:16 +00006567if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006568 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00006569fi
bellard5b0753e2005-03-01 21:37:28 +00006570
Juan Quintela4afddb52009-08-03 14:46:45 +02006571# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02006572
Juan Quintela4afddb52009-08-03 14:46:45 +02006573cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02006574ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02006575
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006576disas_config() {
6577 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6578 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6579}
6580
Juan Quintela64656022009-08-03 14:46:53 +02006581for i in $ARCH $TARGET_BASE_ARCH ; do
6582 case "$i" in
6583 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006584 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02006585 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05006586 aarch64)
6587 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006588 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05006589 fi
6590 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006591 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006592 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006593 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006594 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006595 fi
Juan Quintela64656022009-08-03 14:46:53 +02006596 ;;
6597 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006598 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02006599 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07006600 hppa)
6601 disas_config "HPPA"
6602 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006603 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006604 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02006605 ;;
Michael Walle79368f42012-03-31 19:54:20 +02006606 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006607 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02006608 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006609 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006610 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02006611 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006612 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006613 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02006614 ;;
6615 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006616 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02006617 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006618 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006619 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04006620 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006621 nios2)
6622 disas_config "NIOS2"
6623 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006624 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006625 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08006626 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006627 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006628 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02006629 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006630 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006631 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02006632 ;;
6633 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006634 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02006635 ;;
6636 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006637 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02006638 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006639 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006640 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04006641 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006642 esac
6643done
Stefan Weil9195b2c2011-10-19 07:07:18 +02006644if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006645 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02006646fi
Juan Quintela64656022009-08-03 14:46:53 +02006647
Juan Quintela6ee71262009-08-03 14:46:47 +02006648case "$ARCH" in
6649alpha)
6650 # Ensure there's only a single GP
6651 cflags="-msmall-data $cflags"
6652;;
6653esac
6654
Juan Quintelad02c1db2009-08-03 14:46:50 +02006655if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006656 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006657 if test "$target_linux_user" = "yes" ; then
6658 cflags="-p $cflags"
6659 ldflags="-p $ldflags"
6660 fi
6661 if test "$target_softmmu" = "yes" ; then
6662 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02006663 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006664 fi
6665fi
6666
Juan Quintela9b8e1112009-08-03 14:46:46 +02006667if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07006668 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02006669fi
Juan Quintelafa282482009-07-22 22:37:39 +02006670
Christian Borntraegere9a35912017-08-23 12:16:23 +02006671# Newer kernels on s390 check for an S390_PGSTE program header and
6672# enable the pgste page table extensions in that case. This makes
6673# the vm.allocate_pgste sysctl unnecessary. We enable this program
6674# header if
6675# - we build on s390x
6676# - we build the system emulation for s390x (qemu-system-s390x)
6677# - KVM is enabled
6678# - the linker supports --s390-pgste
6679if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6680 if ld_has --s390-pgste ; then
6681 ldflags="-Wl,--s390-pgste $ldflags"
6682 fi
6683fi
6684
Juan Quintela25be2102009-10-07 02:41:00 +02006685echo "LDFLAGS+=$ldflags" >> $config_target_mak
6686echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02006687
bellard97a847b2003-08-10 21:36:04 +00006688done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00006689
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006690if [ "$dtc_internal" = "yes" ]; then
6691 echo "config-host.h: subdir-dtc" >> $config_host_mak
6692fi
Richard Hendersone219c492017-09-28 09:01:23 -07006693if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6694 echo "config-host.h: subdir-capstone" >> $config_host_mak
6695fi
6696if test -n "$LIBCAPSTONE"; then
6697 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6698fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006699
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08006700if test "$numa" = "yes"; then
6701 echo "CONFIG_NUMA=y" >> $config_host_mak
6702fi
6703
John Snowfd0e6052015-03-25 18:57:39 -04006704if test "$ccache_cpp2" = "yes"; then
6705 echo "export CCACHE_CPP2=y" >> $config_host_mak
6706fi
6707
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006708# build tree in object directory in case the source is not in the current directory
Fam Zhengb1fb9a62017-09-05 10:11:58 +08006709DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02006710DIRS="$DIRS docs docs/interop fsdev scsi"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006711DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006712DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02006713DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06006714FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6715FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02006716FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006717FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02006718FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006719FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006720FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01006721FILES="$FILES pc-bios/qemu-icon.bmp"
Stefan Hajnoczi3a586d22017-05-17 13:40:42 +01006722FILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
Richard Henderson753d11f2011-06-24 11:58:37 -07006723for bios_file in \
6724 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11006725 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01006726 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07006727 $source_path/pc-bios/*.rom \
6728 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00006729 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07006730 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01006731 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07006732 $source_path/pc-bios/palcode-*
6733do
Stefan Weil89138852016-05-16 15:10:20 +02006734 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006735done
Stefan Weil89138852016-05-16 15:10:20 +02006736for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006737do
Stefan Weil89138852016-05-16 15:10:20 +02006738 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006739done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006740mkdir -p $DIRS
6741for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03006742 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01006743 symlink "$source_path/$f" "$f"
6744 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006745done
Paul Brook1ad21342009-05-19 16:17:58 +01006746
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006747# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06006748for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006749 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01006750 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006751 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006752 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006753 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006754 echo "CC=$cc" >> $config_mak
6755 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006756 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006757 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006758 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006759 echo "LD=$ld" >> $config_mak
6760done
6761
Marc-André Lureaufe310172016-06-15 13:06:00 +02006762# set up tests data directory
6763if [ ! -e tests/data ]; then
6764 symlink "$source_path/tests/data" tests/data
6765fi
6766
Max Reitz76c75602014-05-24 23:24:56 +02006767# set up qemu-iotests in this build directory
6768iotests_common_env="tests/qemu-iotests/common.env"
6769iotests_check="tests/qemu-iotests/check"
6770
6771echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6772echo >> "$iotests_common_env"
6773echo "export PYTHON='$python'" >> "$iotests_common_env"
6774
6775if [ ! -e "$iotests_check" ]; then
6776 symlink "$source_path/$iotests_check" "$iotests_check"
6777fi
6778
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006779# Save the configure command line for later reuse.
6780cat <<EOD >config.status
6781#!/bin/sh
6782# Generated by configure.
6783# Run this file to recreate the current configuration.
6784# Compiler output produced by configure, useful for debugging
6785# configure, is in config.log if it exists.
6786EOD
6787printf "exec" >>config.status
6788printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006789echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006790chmod +x config.status
6791
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006792rm -r "$TMPDIR1"