blob: 0a3c6a72c3b7f82298f71ccb5fb4af0cc2954d5c [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
Ian Jackson8bbe05d2017-09-25 16:41:03 +010063 if test -n "$BASH_VERSION"; then eval '
64 echo >>config.log "
65funcs: ${FUNCNAME[*]}
66lines: ${BASH_LINENO[*]}"
67 '; fi
Peter Maydell9c83ffd2014-02-25 18:27:49 +000068 echo $compiler "$@" >> config.log
69 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010070 # Test passed. If this is an --enable-werror build, rerun
71 # the test with -Werror and bail out if it fails. This
72 # makes warning-generating-errors in configure test code
73 # obvious to developers.
74 if test "$werror" != "yes"; then
75 return 0
76 fi
77 # Don't bother rerunning the compile if we were already using -Werror
78 case "$*" in
79 *-Werror*)
80 return 0
81 ;;
82 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000083 echo $compiler -Werror "$@" >> config.log
84 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010085 error_exit "configure test passed without -Werror but failed with -Werror." \
86 "This is probably a bug in the configure script. The failing command" \
87 "will be at the bottom of config.log." \
88 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010089}
90
Peter Maydell9c83ffd2014-02-25 18:27:49 +000091do_cc() {
92 do_compiler "$cc" "$@"
93}
94
95do_cxx() {
96 do_compiler "$cxx" "$@"
97}
98
99update_cxxflags() {
100 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
101 # options which some versions of GCC's C++ compiler complain about
102 # because they only make sense for C programs.
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100103 QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
104
Peter Maydell9c83ffd2014-02-25 18:27:49 +0000105 for arg in $QEMU_CFLAGS; do
106 case $arg in
107 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
108 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
109 ;;
110 *)
111 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
112 ;;
113 esac
114 done
115}
116
Juan Quintela52166aa2009-08-03 14:46:03 +0200117compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400118 local_cflags="$1"
119 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200120}
121
122compile_prog() {
123 local_cflags="$1"
124 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100125 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200126}
127
Paolo Bonzini11568d62010-12-23 11:43:58 +0100128# symbolically link $1 to $2. Portable version of "ln -sf".
129symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100130 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800131 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100132 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100133}
134
LoĂŻc Minier0dba6192010-01-28 21:26:51 +0000135# check whether a command is available to this shell (may be either an
136# executable or a builtin)
137has() {
138 type "$1" >/dev/null 2>&1
139}
140
141# search for an executable in PATH
142path_of() {
143 local_command="$1"
144 local_ifs="$IFS"
145 local_dir=""
146
147 # pathname has a dir component?
148 if [ "${local_command#*/}" != "$local_command" ]; then
149 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
150 echo "$local_command"
151 return 0
152 fi
153 fi
154 if [ -z "$local_command" ]; then
155 return 1
156 fi
157
158 IFS=:
159 for local_dir in $PATH; do
160 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
161 echo "$local_dir/$local_command"
162 IFS="${local_ifs:-$(printf ' \t\n')}"
163 return 0
164 fi
165 done
166 # not found
167 IFS="${local_ifs:-$(printf ' \t\n')}"
168 return 1
169}
170
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +0200171have_backend () {
172 echo "$trace_backends" | grep "$1" >/dev/null
173}
174
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200175glob() {
176 eval test -z '"${1#'"$2"'}"'
177}
178
179supported_hax_target() {
180 test "$hax" = "yes" || return 1
181 glob "$1" "*-softmmu" || return 1
182 case "${1%-softmmu}" in
183 i386|x86_64)
184 return 0
185 ;;
186 esac
187 return 1
188}
189
190supported_kvm_target() {
191 test "$kvm" = "yes" || return 1
192 glob "$1" "*-softmmu" || return 1
193 case "${1%-softmmu}:$cpu" in
194 arm:arm | aarch64:aarch64 | \
195 i386:i386 | i386:x86_64 | i386:x32 | \
196 x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \
197 mips:mips | mipsel:mips | \
Thomas Hutha69dc532018-08-21 13:27:48 +0200198 ppc:ppc | ppc64:ppc | ppc:ppc64 | ppc64:ppc64 | \
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200199 s390x:s390x)
200 return 0
201 ;;
202 esac
203 return 1
204}
205
206supported_xen_target() {
207 test "$xen" = "yes" || return 1
208 glob "$1" "*-softmmu" || return 1
Paolo Bonzinib5ed2e12017-07-11 12:00:49 +0200209 # Only i386 and x86_64 provide the xenpv machine.
210 case "${1%-softmmu}" in
211 i386|x86_64)
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200212 return 0
213 ;;
214 esac
215 return 1
216}
217
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500218supported_hvf_target() {
219 test "$hvf" = "yes" || return 1
220 glob "$1" "*-softmmu" || return 1
221 case "${1%-softmmu}" in
222 x86_64)
223 return 0
224 ;;
225 esac
226 return 1
227}
228
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800229supported_whpx_target() {
230 test "$whpx" = "yes" || return 1
231 glob "$1" "*-softmmu" || return 1
232 case "${1%-softmmu}" in
233 i386|x86_64)
234 return 0
235 ;;
236 esac
237 return 1
238}
239
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200240supported_target() {
241 case "$1" in
242 *-softmmu)
243 ;;
244 *-linux-user)
245 if test "$linux" != "yes"; then
246 print_error "Target '$target' is only available on a Linux host"
247 return 1
248 fi
249 ;;
250 *-bsd-user)
251 if test "$bsd" != "yes"; then
252 print_error "Target '$target' is only available on a BSD host"
253 return 1
254 fi
255 ;;
256 *)
257 print_error "Invalid target name '$target'"
258 return 1
259 ;;
260 esac
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200261 test "$tcg" = "yes" && return 0
262 supported_kvm_target "$1" && return 0
263 supported_xen_target "$1" && return 0
264 supported_hax_target "$1" && return 0
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500265 supported_hvf_target "$1" && return 0
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800266 supported_whpx_target "$1" && return 0
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200267 print_error "TCG disabled, but hardware accelerator not available for '$target'"
268 return 1
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200269}
270
Christian Borntraegere9a35912017-08-23 12:16:23 +0200271
272ld_has() {
273 $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
274}
275
bellard7d132992003-03-06 23:23:54 +0000276# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200277source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200278cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300279iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000280interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000281static="no"
bellard7d132992003-03-06 23:23:54 +0000282cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000283audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800284block_drv_rw_whitelist=""
285block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000286host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200287libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200288libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200289audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400290audio_win_int=""
Michael Roth957f1f92011-08-11 15:38:12 -0500291libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100292debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100293stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000294
Daniel P. Berrange92712822017-09-29 11:11:58 +0100295if test -e "$source_path/.git"
296then
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100297 git_update=yes
Daniel P. Berrange92712822017-09-29 11:11:58 +0100298 git_submodules="ui/keycodemapdb"
Emilio G. Cota3ac1f812018-03-08 21:09:40 -0500299 git_submodules="$git_submodules tests/fp/berkeley-testfloat-3"
300 git_submodules="$git_submodules tests/fp/berkeley-softfloat-3"
Daniel P. Berrange92712822017-09-29 11:11:58 +0100301else
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100302 git_update=no
Daniel P. Berrange92712822017-09-29 11:11:58 +0100303 git_submodules=""
Daniel P. Berrangé5c0ef672018-04-18 18:11:51 +0100304
305 if ! test -f "$source_path/ui/keycodemapdb/README"
306 then
307 echo
308 echo "ERROR: missing file $source_path/ui/keycodemapdb/README"
309 echo
310 echo "This is not a GIT checkout but module content appears to"
311 echo "be missing. Do not use 'git archive' or GitHub download links"
312 echo "to acquire QEMU source archives. Non-GIT builds are only"
313 echo "supported with source archives linked from:"
314 echo
315 echo " https://www.qemu.org/download/"
316 echo
317 echo "Developers working with GIT can use scripts/archive-source.sh"
318 echo "if they need to create valid source archives."
319 echo
320 exit 1
321 fi
Daniel P. Berrange92712822017-09-29 11:11:58 +0100322fi
Daniel P. Berrangecc84d632017-10-20 15:02:43 +0100323git="git"
aliguoriac0df512008-12-29 17:14:15 +0000324
Stefan Weilafb63eb2012-09-26 22:04:38 +0200325# Don't accept a target_list environment variable.
326unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100327
328# Default value for a variable defining feature "foo".
329# * foo="no" feature will only be used if --enable-foo arg is given
330# * foo="" feature will be searched for, and if found, will be used
331# unless --disable-foo is given
332# * foo="yes" this value will only be set by --enable-foo flag.
333# feature will searched for,
334# if not found, configure exits with error
335#
336# Always add --enable-foo and --disable-foo command line args.
337# Distributions want to ensure that several features are compiled in, and it
338# is impossible without a --enable-foo that exits if a feature is not found.
339
340bluez=""
341brlapi=""
342curl=""
343curses=""
344docs=""
345fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100346netmap="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100347sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400348sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530349virtfs=""
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200350mpath=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100351vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100352sparse="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100353vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100354vnc_sasl=""
355vnc_jpeg=""
356vnc_png=""
Gerd Hoffmann6a021532017-10-05 17:33:28 +0200357xkbcommon=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100358xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000359xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000360xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000361xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100362linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500363cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100364attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200365libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100366xfs=""
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200367tcg="yes"
Paolo Bonzinia40161c2018-02-16 10:05:23 +0100368membarrier=""
Bradd41a75a2011-07-26 23:11:26 -0400369vhost_net="no"
Gonglei042cea22018-03-01 21:46:28 +0800370vhost_crypto="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000371vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100372vhost_vsock="no"
Marc-André Lureaue6a74862017-08-03 11:07:46 +0200373vhost_user=""
Bradd41a75a2011-07-26 23:11:26 -0400374kvm="no"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100375hax="no"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500376hvf="no"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800377whpx="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400378rdma=""
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +0300379pvrdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100380gprof="no"
381debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100382debug="no"
Marc-André Lureau247724c2018-01-16 16:11:51 +0100383sanitizers="no"
John Snowb553a042015-11-03 15:43:42 -0500384fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100385strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200386tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100387bigendian="no"
388mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000389gcov="no"
390gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100391EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800392DSOSUF=".so"
393LDFLAGS_SHARED="-shared"
394modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100395prefix="/usr/local"
396mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300397datadir="\${prefix}/share"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200398firmwarepath="\${prefix}/share/qemu-firmware"
Eduardo Habkost850da182012-04-18 16:55:38 -0300399qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100400bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300401libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400402libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200403includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100404sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300405local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100406confsuffix="/qemu"
407slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100408oss_lib=""
409bsd="no"
410linux="no"
411solaris="no"
412profiler="no"
413cocoa="no"
414softmmu="yes"
415linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100416bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100417blobs="yes"
418pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200419pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200420qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300421trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100422trace_file="trace"
423spice=""
424rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200425smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100426libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200427usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100428opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100429opengl_dmabuf="no"
Richard Henderson5dd89902017-07-18 18:40:18 -1000430cpuid_h="no"
Liam Merwick86583a02018-10-19 21:38:59 +0100431avx2_opt=""
Alon Levy1ece9902011-07-26 12:30:40 +0300432zlib="yes"
Richard Henderson8ca80762017-09-14 09:41:12 -0700433capstone=""
Stefan Weilb25c9df2014-04-29 08:21:16 +0200434lzo=""
435snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100436bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400437guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400438guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500439guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300440guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400441vss_win32_sdk=""
442win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100443want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100444libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100445libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100446coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200447coroutine_pool=""
Peter Lieven7d992e42016-09-27 11:58:45 +0200448debug_stack_usage="no"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -0400449crypto_afalg="no"
Eduardo Otubof7945732012-08-14 18:44:05 -0300450seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530451glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400452glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530453glusterfs_discard="no"
Niels de Vosdf3a4292017-05-28 12:01:14 +0530454glusterfs_fallocate="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530455glusterfs_zerofill="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600456gtk=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200457gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100458tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100459gnutls=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100460nettle=""
461gcrypt=""
Longpeng(Mike)1f923c72016-12-13 18:42:55 +0800462gcrypt_hmac="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100463vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200464virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400465tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100466libssh2=""
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +0100467live_block_migration="yes"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800468numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800469tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200470jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800471replication="yes"
Ashish Mittalda92c3f2017-04-03 20:48:08 -0700472vxhs=""
Jeff Cody2f740132018-11-07 07:36:44 +0100473bochs="yes"
474cloop="yes"
475dmg="yes"
476qcow1="yes"
477vdi="yes"
478vvfat="yes"
479qed="yes"
480parallels="yes"
481sheepdog="yes"
Klim Kireeved279a02018-01-12 12:01:19 +0300482libxml2=""
Alex Bennée51a12b52018-04-04 14:24:39 +0100483docker="no"
Paolo Bonziniba59fb72018-06-13 14:23:08 +0200484debug_mutex="no"
Junyan He17824402018-07-18 15:47:59 +0800485libpmem=""
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +0200486libudev="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100487
Alex Bennéed75402b2018-04-04 20:27:05 +0100488# cross compilers defaults, can be overridden with --cross-cc-ARCH
489cross_cc_aarch64="aarch64-linux-gnu-gcc"
Alex Bennéed422b2b2018-04-13 11:07:58 +0100490cross_cc_aarch64_be="$cross_cc_aarch64"
491cross_cc_cflags_aarch64_be="-mbig-endian"
Alex Bennéed75402b2018-04-04 20:27:05 +0100492cross_cc_arm="arm-linux-gnueabihf-gcc"
Alex Bennéed422b2b2018-04-13 11:07:58 +0100493cross_cc_cflags_armeb="-mbig-endian"
Alex Bennée716a5072018-04-10 12:19:40 +0100494cross_cc_i386="i386-pc-linux-gnu-gcc"
495cross_cc_cflags_i386=""
Alex Bennéed75402b2018-04-04 20:27:05 +0100496cross_cc_powerpc="powerpc-linux-gnu-gcc"
Alex Bennéed422b2b2018-04-13 11:07:58 +0100497cross_cc_powerpc="powerpc-linux-gnu-gcc"
Alex Bennéed75402b2018-04-04 20:27:05 +0100498
499enabled_cross_compilers=""
500
Peter Maydell898be3e2017-03-21 14:31:57 +0000501supported_cpu="no"
502supported_os="no"
Peter Maydellfb59dab2017-03-28 14:01:52 +0100503bogus_os="no"
Yang Zhong5a22ab72017-12-20 21:16:46 +0800504malloc_trim=""
Peter Maydell898be3e2017-03-21 14:31:57 +0000505
aliguoriac0df512008-12-29 17:14:15 +0000506# parse CC options first
507for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200508 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000509 case "$opt" in
510 --cross-prefix=*) cross_prefix="$optarg"
511 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100512 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000513 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400514 --cxx=*) CXX="$optarg"
515 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100516 --source-path=*) source_path="$optarg"
517 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200518 --cpu=*) cpu="$optarg"
519 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100520 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200521 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100522 --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100523 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100524 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100525 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200526 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100527 --enable-debug-info) debug_info="yes"
528 ;;
529 --disable-debug-info) debug_info="no"
530 ;;
Alex Bennéed75402b2018-04-04 20:27:05 +0100531 --cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option"
532 ;;
Alex Bennéed422b2b2018-04-13 11:07:58 +0100533 --cross-cc-cflags-*) cc_arch=${opt#--cross-cc-flags-}; cc_arch=${cc_arch%%=*}
534 eval "cross_cc_cflags_${cc_arch}=\$optarg"
535 ;;
Alex Bennéed75402b2018-04-04 20:27:05 +0100536 --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*}
537 eval "cross_cc_${cc_arch}=\$optarg"
538 ;;
aliguoriac0df512008-12-29 17:14:15 +0000539 esac
540done
aliguoriac0df512008-12-29 17:14:15 +0000541# OS specific
542# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100543# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000544
Peter Maydelle49d0212012-12-07 15:39:13 +0000545# Preferred compiler:
546# ${CC} (if set)
547# ${cross_prefix}gcc (if cross-prefix specified)
548# system compiler
549if test -z "${CC}${cross_prefix}"; then
550 cc="$host_cc"
551else
552 cc="${CC-${cross_prefix}gcc}"
553fi
554
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400555if test -z "${CXX}${cross_prefix}"; then
556 cxx="c++"
557else
558 cxx="${CXX-${cross_prefix}g++}"
559fi
560
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500561ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700562as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700563ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000564cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500565objcopy="${OBJCOPY-${cross_prefix}objcopy}"
566ld="${LD-${cross_prefix}ld}"
Alistair Francis9f81aeb2017-11-07 17:10:46 -0800567ranlib="${RANLIB-${cross_prefix}ranlib}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200568nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500569strip="${STRIP-${cross_prefix}strip}"
570windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300571pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
572query_pkg_config() {
573 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
574}
575pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500576sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000577sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000578
Peter Maydell45d285a2013-10-21 21:03:06 +0100579# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
580ARFLAGS="${ARFLAGS-rv}"
581
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200582# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100583# We use -fwrapv to tell the compiler that we require a C dialect where
584# left shift of signed integers is well defined and has the expected
585# 2s-complement style results. (Both clang and gcc agree that it
586# provides these semantics.)
587QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400588QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100589QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200590QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +0200591QEMU_INCLUDES="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100592if test "$debug_info" = "yes"; then
593 CFLAGS="-g $CFLAGS"
594 LDFLAGS="-g $LDFLAGS"
595fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200596
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100597# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200598source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100599
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300600# running configure in the source tree?
601# we know that's the case if configure is there.
602if test -f "./configure"; then
603 pwd_is_source_path="y"
604else
605 pwd_is_source_path="n"
606fi
607
aliguoriac0df512008-12-29 17:14:15 +0000608check_define() {
609cat > $TMPC <<EOF
610#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000611#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000612#endif
613int main(void) { return 0; }
614EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200615 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000616}
617
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200618check_include() {
619cat > $TMPC <<EOF
620#include <$1>
621int main(void) { return 0; }
622EOF
623 compile_object
624}
625
John Snow93b25862015-03-25 18:57:37 -0400626write_c_skeleton() {
627 cat > $TMPC <<EOF
628int main(void) { return 0; }
629EOF
630}
631
Peter Maydellbbea4052012-08-14 15:35:34 +0100632if check_define __linux__ ; then
633 targetos="Linux"
634elif check_define _WIN32 ; then
635 targetos='MINGW32'
636elif check_define __OpenBSD__ ; then
637 targetos='OpenBSD'
638elif check_define __sun__ ; then
639 targetos='SunOS'
640elif check_define __HAIKU__ ; then
641 targetos='Haiku'
Peter Maydell951fedf2017-07-13 16:15:32 +0100642elif check_define __FreeBSD__ ; then
643 targetos='FreeBSD'
644elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
645 targetos='GNU/kFreeBSD'
646elif check_define __DragonFly__ ; then
647 targetos='DragonFly'
648elif check_define __NetBSD__; then
649 targetos='NetBSD'
650elif check_define __APPLE__; then
651 targetos='Darwin'
Peter Maydellbbea4052012-08-14 15:35:34 +0100652else
Peter Maydell951fedf2017-07-13 16:15:32 +0100653 # This is a fatal error, but don't report it yet, because we
654 # might be going to just print the --help text, or it might
655 # be the result of a missing compiler.
656 targetos='bogus'
657 bogus_os='yes'
Peter Maydellbbea4052012-08-14 15:35:34 +0100658fi
659
660# Some host OSes need non-standard checks for which CPU to use.
661# Note that these checks are broken for cross-compilation: if you're
662# cross-compiling to one of these OSes then you'll need to specify
663# the correct CPU with the --cpu option.
664case $targetos in
665Darwin)
666 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
667 # run 64-bit userspace code.
668 # If the user didn't specify a CPU explicitly and the kernel says this is
669 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
670 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
671 cpu="x86_64"
672 fi
673 ;;
674SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200675 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100676 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
677 cpu="x86_64"
678 fi
679esac
680
Juan Quintela2ff6b912009-08-03 14:45:55 +0200681if test ! -z "$cpu" ; then
682 # command line argument
683 :
684elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000685 cpu="i386"
686elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700687 if check_define __ILP32__ ; then
688 cpu="x32"
689 else
690 cpu="x86_64"
691 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000692elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000693 if check_define __arch64__ ; then
694 cpu="sparc64"
695 else
696 cpu="sparc"
697 fi
malcfdf7ed92009-01-14 18:39:52 +0000698elif check_define _ARCH_PPC ; then
699 if check_define _ARCH_PPC64 ; then
700 cpu="ppc64"
701 else
702 cpu="ppc"
703 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200704elif check_define __mips__ ; then
705 cpu="mips"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200706elif check_define __s390__ ; then
707 if check_define __s390x__ ; then
708 cpu="s390x"
709 else
710 cpu="s390"
711 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100712elif check_define __arm__ ; then
713 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100714elif check_define __aarch64__ ; then
715 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000716else
Stefan Weil89138852016-05-16 15:10:20 +0200717 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000718fi
719
Peter Maydell359bc952011-12-24 13:07:25 +0000720ARCH=
721# Normalise host CPU name and set ARCH.
722# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000723case "$cpu" in
Peter Maydell6499fd12017-03-28 11:58:38 +0100724 ppc|ppc64|s390|s390x|sparc64|x32)
Peter Maydell898be3e2017-03-21 14:31:57 +0000725 cpu="$cpu"
726 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100727 eval "cross_cc_${cpu}=\$host_cc"
Peter Maydell898be3e2017-03-21 14:31:57 +0000728 ;;
bellard7d132992003-03-06 23:23:54 +0000729 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000730 cpu="i386"
Peter Maydell898be3e2017-03-21 14:31:57 +0000731 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100732 cross_cc_i386=$host_cc
bellard7d132992003-03-06 23:23:54 +0000733 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000734 x86_64|amd64)
735 cpu="x86_64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000736 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100737 cross_cc_x86_64=$host_cc
aurel32aaa5fa12008-04-11 22:04:22 +0000738 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100739 armv*b|armv*l|arm)
740 cpu="arm"
Peter Maydell898be3e2017-03-21 14:31:57 +0000741 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100742 cross_cc_arm=$host_cc
bellard7d132992003-03-06 23:23:54 +0000743 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100744 aarch64)
745 cpu="aarch64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000746 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100747 cross_cc_aarch64=$host_cc
Claudio Fontana1f080312013-06-12 16:20:23 +0100748 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200749 mips*)
750 cpu="mips"
Peter Maydell898be3e2017-03-21 14:31:57 +0000751 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100752 cross_cc_mips=$host_cc
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200753 ;;
blueswir131422552007-04-16 18:27:06 +0000754 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000755 cpu="sparc"
Peter Maydell6499fd12017-03-28 11:58:38 +0100756 supported_cpu="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +0100757 cross_cc_sparc=$host_cc
bellardae228532003-05-13 18:59:59 +0000758 ;;
bellard7d132992003-03-06 23:23:54 +0000759 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000760 # This will result in either an error or falling back to TCI later
761 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000762 ;;
763esac
Peter Maydell359bc952011-12-24 13:07:25 +0000764if test -z "$ARCH"; then
765 ARCH="$cpu"
766fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200767
bellard7d132992003-03-06 23:23:54 +0000768# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200769
Stacey Sonadfc3e92014-06-08 09:57:22 -0700770# host *BSD for user mode
771HOST_VARIANT_DIR=""
772
bellard7d132992003-03-06 23:23:54 +0000773case $targetos in
bellard67b915a2004-03-31 23:37:16 +0000774MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200775 mingw32="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100776 hax="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200777 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200778 if check_include dsound.h; then
779 audio_drv_list="dsound"
780 else
781 audio_drv_list=""
782 fi
Peter Maydell898be3e2017-03-21 14:31:57 +0000783 supported_os="yes"
bellard67b915a2004-03-31 23:37:16 +0000784;;
ths5c40d2b2007-06-23 16:03:36 +0000785GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100786 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200787 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200788 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000789;;
bellard7d3505c2004-05-12 19:32:15 +0000790FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200791 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100792 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200793 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200794 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100795 # needed for kinfo_getvmmap(3) in libutil.h
796 LIBS="-lutil $LIBS"
Ed Mastea7764f12016-11-21 20:32:45 -0500797 # needed for kinfo_getproc
798 libs_qga="-lutil $libs_qga"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100799 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700800 HOST_VARIANT_DIR="freebsd"
Peter Maydell898be3e2017-03-21 14:31:57 +0000801 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000802;;
blueswir1c5e97232009-03-07 20:06:23 +0000803DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200804 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100805 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200806 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200807 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700808 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000809;;
bellard7d3505c2004-05-12 19:32:15 +0000810NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200811 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100812 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200813 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200814 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200815 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700816 HOST_VARIANT_DIR="netbsd"
Kamil Rytarowski3c2bdbc2017-05-13 04:21:43 +0200817 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000818;;
819OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200820 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100821 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400822 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200823 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700824 HOST_VARIANT_DIR="openbsd"
Brad Smith0a773d52018-02-16 11:46:20 -0500825 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000826;;
bellard83fb7ad2004-07-05 21:25:26 +0000827Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200828 bsd="yes"
829 darwin="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100830 hax="yes"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500831 hvf="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800832 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200833 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200834 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200835 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200836 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200837 cocoa="yes"
838 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200839 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200840 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200841 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100842 # Disable attempts to use ObjectiveC features in os/object.h since they
843 # won't work when we're compiling with gcc as a C compiler.
844 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700845 HOST_VARIANT_DIR="darwin"
Peter Maydell898be3e2017-03-21 14:31:57 +0000846 supported_os="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000847;;
bellardec530c82006-04-25 22:36:06 +0000848SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200849 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100850 make="${MAKE-gmake}"
851 install="${INSTALL-ginstall}"
Brade2d88302011-09-02 16:53:28 -0400852 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200853 if test -f /usr/include/sys/soundcard.h ; then
854 audio_drv_list="oss"
855 fi
856 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000857# needed for CMSG_ macros in sys/socket.h
858 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
859# needed for TIOCWIN* defines in termios.h
860 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200861 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200862 solarisnetlibs="-lsocket -lnsl -lresolv"
863 LIBS="$solarisnetlibs $LIBS"
864 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000865;;
Andreas Färber179cf402010-09-20 00:50:43 +0200866Haiku)
867 haiku="yes"
868 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
869 LIBS="-lposix_error_mapper -lnetwork $LIBS"
870;;
Peter Maydell898be3e2017-03-21 14:31:57 +0000871Linux)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200872 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200873 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200874 linux="yes"
875 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200876 kvm="yes"
877 vhost_net="yes"
Gonglei042cea22018-03-01 21:46:28 +0800878 vhost_crypto="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000879 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100880 vhost_vsock="yes"
Mao Zhongyie8d81a62018-11-16 14:33:03 -0600881 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES"
Peter Maydell898be3e2017-03-21 14:31:57 +0000882 supported_os="yes"
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +0200883 libudev="yes"
Peter Maydell898be3e2017-03-21 14:31:57 +0000884;;
bellard7d132992003-03-06 23:23:54 +0000885esac
886
bellard7d3505c2004-05-12 19:32:15 +0000887if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000888 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200889 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000890 fi
bellard7d3505c2004-05-12 19:32:15 +0000891fi
892
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100893: ${make=${MAKE-make}}
894: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100895: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400896: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100897
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100898# Default objcc to clang if available, otherwise use CC
899if has clang; then
900 objcc=clang
901else
902 objcc="$cc"
903fi
904
Juan Quintela3457a3f2009-08-03 14:46:07 +0200905if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200906 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800907 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200908 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100909 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
910 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100911 # MinGW needs -mthreads for TLS and macro _MT.
912 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100913 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400914 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100915 if compile_prog "" "-liberty" ; then
916 LIBS="-liberty $LIBS"
917 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200918 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200919 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300920 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300921 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200922 bindir="\${prefix}"
923 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200924 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200925 confsuffix=""
Bishara AbuHattoum105fad62017-08-22 16:55:04 +0300926 libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200927fi
928
Anthony Liguori487fefd2009-06-11 13:28:25 -0500929werror=""
bellard85aa5182007-11-11 20:17:03 +0000930
bellard7d132992003-03-06 23:23:54 +0000931for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200932 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000933 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000934 --help|-h) show_help=yes
935 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400936 --version|-V) exec cat $source_path/VERSION
937 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000938 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000939 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000940 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000941 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100942 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000943 ;;
aliguoriac0df512008-12-29 17:14:15 +0000944 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000945 ;;
aliguoriac0df512008-12-29 17:14:15 +0000946 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000947 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000948 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000949 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400950 --cxx=*)
951 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200952 --iasl=*) iasl="$optarg"
953 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100954 --objcc=*) objcc="$optarg"
955 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000956 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000957 ;;
pbrook6a882642006-04-17 13:57:12 +0000958 --install=*) install="$optarg"
959 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000960 --python=*) python="$optarg"
961 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000962 --gcov=*) gcov_tool="$optarg"
963 ;;
Brade2d88302011-09-02 16:53:28 -0400964 --smbd=*) smbd="$optarg"
965 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200966 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000967 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100968 --extra-cxxflags=*)
969 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200970 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000971 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100972 --enable-debug-info)
973 ;;
974 --disable-debug-info)
975 ;;
Alex Bennéed75402b2018-04-04 20:27:05 +0100976 --cross-cc-*)
977 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800978 --enable-modules)
979 modules="yes"
980 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000981 --disable-modules)
982 modules="no"
983 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200984 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000985 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000986 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000987 ;;
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +0200988 --enable-trace-backends=*) trace_backends="$optarg"
989 ;;
990 # XXX: backwards compatibility
991 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100992 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100993 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100994 ;;
bellard7d132992003-03-06 23:23:54 +0000995 --enable-gprof) gprof="yes"
996 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000997 --enable-gcov) gcov="yes"
998 ;;
LoĂŻc Minier79427692010-01-31 12:23:45 +0100999 --static)
1000 static="yes"
1001 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +03001002 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +00001003 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +02001004 --mandir=*) mandir="$optarg"
1005 ;;
1006 --bindir=*) bindir="$optarg"
1007 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +03001008 --libdir=*) libdir="$optarg"
1009 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +04001010 --libexecdir=*) libexecdir="$optarg"
1011 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +02001012 --includedir=*) includedir="$optarg"
1013 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03001014 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +02001015 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -03001016 --with-confsuffix=*) confsuffix="$optarg"
1017 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -03001018 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +02001019 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +01001020 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -06001021 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -03001022 --localstatedir=*) local_statedir="$optarg"
1023 ;;
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02001024 --firmwarepath=*) firmwarepath="$optarg"
1025 ;;
Olaf Hering181ce1d2018-04-18 09:50:44 +02001026 --host=*|--build=*|\
1027 --disable-dependency-tracking|\
Luiz Capitulino785c23a2012-10-03 18:35:57 -03001028 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +04001029 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
1030 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
1031 # These switches are silently ignored, for compatibility with
1032 # autoconf-generated configure scripts. This allows QEMU's
1033 # configure to be used by RPM and similar macros that set
1034 # lots of directory switches by default.
1035 ;;
bellard97a847b2003-08-10 21:36:04 +00001036 --disable-sdl) sdl="no"
1037 ;;
Juan Quintelac4198152009-08-12 18:29:53 +02001038 --enable-sdl) sdl="yes"
1039 ;;
Dave Airlie47c03742013-12-10 14:05:51 +10001040 --with-sdlabi=*) sdlabi="$optarg"
1041 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +02001042 --disable-qom-cast-debug) qom_cast_debug="no"
1043 ;;
1044 --enable-qom-cast-debug) qom_cast_debug="yes"
1045 ;;
Meador Inge983eef52012-02-24 14:00:42 +05301046 --disable-virtfs) virtfs="no"
1047 ;;
1048 --enable-virtfs) virtfs="yes"
1049 ;;
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02001050 --disable-mpath) mpath="no"
1051 ;;
1052 --enable-mpath) mpath="yes"
1053 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +01001054 --disable-vnc) vnc="no"
1055 ;;
1056 --enable-vnc) vnc="yes"
1057 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +00001058 --oss-lib=*) oss_lib="$optarg"
1059 ;;
malc0c58ac12008-06-25 21:04:05 +00001060 --audio-drv-list=*) audio_drv_list="$optarg"
1061 ;;
Stefan Weil89138852016-05-16 15:10:20 +02001062 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +08001063 ;;
Stefan Weil89138852016-05-16 15:10:20 +02001064 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +01001065 ;;
aurel32f8393942009-04-13 18:45:38 +00001066 --enable-debug-tcg) debug_tcg="yes"
1067 ;;
1068 --disable-debug-tcg) debug_tcg="no"
1069 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +01001070 --enable-debug)
1071 # Enable debugging options that aren't excessively noisy
1072 debug_tcg="yes"
Peter Xu1fcc6d42018-04-25 10:54:59 +08001073 debug_mutex="yes"
Paul Brookf3d08ee2009-06-04 11:39:04 +01001074 debug="yes"
1075 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -05001076 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +01001077 ;;
Marc-André Lureau247724c2018-01-16 16:11:51 +01001078 --enable-sanitizers) sanitizers="yes"
1079 ;;
1080 --disable-sanitizers) sanitizers="no"
1081 ;;
aliguori03b4fe72008-10-07 19:16:17 +00001082 --enable-sparse) sparse="yes"
1083 ;;
1084 --disable-sparse) sparse="no"
1085 ;;
aliguori1625af82009-04-05 17:41:02 +00001086 --disable-strip) strip_opt="no"
1087 ;;
aliguori2f9606b2009-03-06 20:27:28 +00001088 --disable-vnc-sasl) vnc_sasl="no"
1089 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +02001090 --enable-vnc-sasl) vnc_sasl="yes"
1091 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +02001092 --disable-vnc-jpeg) vnc_jpeg="no"
1093 ;;
1094 --enable-vnc-jpeg) vnc_jpeg="yes"
1095 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +02001096 --disable-vnc-png) vnc_png="no"
1097 ;;
1098 --enable-vnc-png) vnc_png="yes"
1099 ;;
bellard443f1372004-06-04 11:13:20 +00001100 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +00001101 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +00001102 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +00001103 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +02001104 --enable-vde) vde="yes"
1105 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +01001106 --disable-netmap) netmap="no"
1107 ;;
1108 --enable-netmap) netmap="yes"
1109 ;;
aliguorie37630c2009-04-22 15:19:10 +00001110 --disable-xen) xen="no"
1111 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +02001112 --enable-xen) xen="yes"
1113 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +00001114 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
1115 ;;
1116 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
1117 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +00001118 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
1119 ;;
1120 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
1121 ;;
aurel322e4d9fb2008-04-08 06:01:02 +00001122 --disable-brlapi) brlapi="no"
1123 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +02001124 --enable-brlapi) brlapi="yes"
1125 ;;
balrogfb599c92008-09-28 23:49:55 +00001126 --disable-bluez) bluez="no"
1127 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +02001128 --enable-bluez) bluez="yes"
1129 ;;
aliguori7ba1e612008-11-05 16:04:33 +00001130 --disable-kvm) kvm="no"
1131 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +02001132 --enable-kvm) kvm="yes"
1133 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001134 --disable-hax) hax="no"
zhanghailiang180fb752016-10-27 14:43:08 +08001135 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001136 --enable-hax) hax="yes"
zhanghailiang180fb752016-10-27 14:43:08 +08001137 ;;
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05001138 --disable-hvf) hvf="no"
1139 ;;
1140 --enable-hvf) hvf="yes"
1141 ;;
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08001142 --disable-whpx) whpx="no"
1143 ;;
1144 --enable-whpx) whpx="yes"
1145 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +02001146 --disable-tcg-interpreter) tcg_interpreter="no"
1147 ;;
1148 --enable-tcg-interpreter) tcg_interpreter="yes"
1149 ;;
Corey Bryant47e98652012-01-26 09:42:26 -05001150 --disable-cap-ng) cap_ng="no"
1151 ;;
1152 --enable-cap-ng) cap_ng="yes"
1153 ;;
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02001154 --disable-tcg) tcg="no"
1155 ;;
1156 --enable-tcg) tcg="yes"
1157 ;;
Yang Zhong5a22ab72017-12-20 21:16:46 +08001158 --disable-malloc-trim) malloc_trim="no"
1159 ;;
1160 --enable-malloc-trim) malloc_trim="yes"
1161 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01001162 --disable-spice) spice="no"
1163 ;;
1164 --enable-spice) spice="yes"
1165 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11001166 --disable-libiscsi) libiscsi="no"
1167 ;;
1168 --enable-libiscsi) libiscsi="yes"
1169 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +01001170 --disable-libnfs) libnfs="no"
1171 ;;
1172 --enable-libnfs) libnfs="yes"
1173 ;;
bellard05c2a3e2006-02-08 22:39:17 +00001174 --enable-profiler) profiler="yes"
1175 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +04001176 --disable-cocoa) cocoa="no"
1177 ;;
malcc2de5c92008-06-28 19:13:06 +00001178 --enable-cocoa)
1179 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +02001180 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +00001181 ;;
pbrookcad25d62006-03-19 16:31:11 +00001182 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001183 ;;
pbrookcad25d62006-03-19 16:31:11 +00001184 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +00001185 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -10001186 --disable-user)
1187 linux_user="no" ;
1188 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -10001189 ;;
1190 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +00001191 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001192 ;;
ths831b7822007-01-18 20:06:33 +00001193 --enable-linux-user) linux_user="yes"
1194 ;;
blueswir184778502008-10-26 20:33:16 +00001195 --disable-bsd-user) bsd_user="no"
1196 ;;
1197 --enable-bsd-user) bsd_user="yes"
1198 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001199 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001200 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001201 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001202 ;;
bellard85aa5182007-11-11 20:17:03 +00001203 --enable-werror) werror="yes"
1204 ;;
1205 --disable-werror) werror="no"
1206 ;;
Steven Noonan63678e12014-03-28 17:19:02 +01001207 --enable-stack-protector) stack_protector="yes"
1208 ;;
1209 --disable-stack-protector) stack_protector="no"
1210 ;;
balrog4d3b6f62008-02-10 16:33:14 +00001211 --disable-curses) curses="no"
1212 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +02001213 --enable-curses) curses="yes"
1214 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001215 --disable-curl) curl="no"
1216 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001217 --enable-curl) curl="yes"
1218 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001219 --disable-fdt) fdt="no"
1220 ;;
1221 --enable-fdt) fdt="yes"
1222 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001223 --disable-linux-aio) linux_aio="no"
1224 ;;
1225 --enable-linux-aio) linux_aio="yes"
1226 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001227 --disable-attr) attr="no"
1228 ;;
1229 --enable-attr) attr="yes"
1230 ;;
Paolo Bonzinia40161c2018-02-16 10:05:23 +01001231 --disable-membarrier) membarrier="no"
1232 ;;
1233 --enable-membarrier) membarrier="yes"
1234 ;;
ths77755342008-11-27 15:45:16 +00001235 --disable-blobs) blobs="no"
1236 ;;
Thomas Huth7e563bf2018-02-15 12:06:47 +01001237 --with-pkgversion=*) pkgversion="$optarg"
pbrook4a19f1e2009-04-07 23:17:49 +00001238 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001239 --with-coroutine=*) coroutine="$optarg"
1240 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001241 --disable-coroutine-pool) coroutine_pool="no"
1242 ;;
1243 --enable-coroutine-pool) coroutine_pool="yes"
1244 ;;
Peter Lieven7d992e42016-09-27 11:58:45 +02001245 --enable-debug-stack-usage) debug_stack_usage="yes"
1246 ;;
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001247 --enable-crypto-afalg) crypto_afalg="yes"
1248 ;;
1249 --disable-crypto-afalg) crypto_afalg="no"
1250 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001251 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001252 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001253 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001254 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001255 --disable-vhost-net) vhost_net="no"
1256 ;;
1257 --enable-vhost-net) vhost_net="yes"
1258 ;;
Gonglei042cea22018-03-01 21:46:28 +08001259 --disable-vhost-crypto) vhost_crypto="no"
1260 ;;
1261 --enable-vhost-crypto)
1262 vhost_crypto="yes"
1263 if test "$mingw32" = "yes"; then
1264 error_exit "vhost-crypto isn't available on win32"
1265 fi
1266 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001267 --disable-vhost-scsi) vhost_scsi="no"
1268 ;;
1269 --enable-vhost-scsi) vhost_scsi="yes"
1270 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001271 --disable-vhost-vsock) vhost_vsock="no"
1272 ;;
1273 --enable-vhost-vsock) vhost_vsock="yes"
1274 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001275 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001276 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001277 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001278 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001279 --disable-rbd) rbd="no"
1280 ;;
1281 --enable-rbd) rbd="yes"
1282 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001283 --disable-xfsctl) xfs="no"
1284 ;;
1285 --enable-xfsctl) xfs="yes"
1286 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001287 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001288 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001289 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001290 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001291 --disable-libusb) libusb="no"
1292 ;;
1293 --enable-libusb) libusb="yes"
1294 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001295 --disable-usb-redir) usb_redir="no"
1296 ;;
1297 --enable-usb-redir) usb_redir="yes"
1298 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001299 --disable-zlib-test) zlib="no"
1300 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001301 --disable-lzo) lzo="no"
1302 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001303 --enable-lzo) lzo="yes"
1304 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001305 --disable-snappy) snappy="no"
1306 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001307 --enable-snappy) snappy="yes"
1308 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001309 --disable-bzip2) bzip2="no"
1310 ;;
1311 --enable-bzip2) bzip2="yes"
1312 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001313 --enable-guest-agent) guest_agent="yes"
1314 ;;
1315 --disable-guest-agent) guest_agent="no"
1316 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001317 --enable-guest-agent-msi) guest_agent_msi="yes"
1318 ;;
1319 --disable-guest-agent-msi) guest_agent_msi="no"
1320 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001321 --with-vss-sdk) vss_win32_sdk=""
1322 ;;
1323 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1324 ;;
1325 --without-vss-sdk) vss_win32_sdk="no"
1326 ;;
1327 --with-win-sdk) win_sdk=""
1328 ;;
1329 --with-win-sdk=*) win_sdk="$optarg"
1330 ;;
1331 --without-win-sdk) win_sdk="no"
1332 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001333 --enable-tools) want_tools="yes"
1334 ;;
1335 --disable-tools) want_tools="no"
1336 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001337 --enable-seccomp) seccomp="yes"
1338 ;;
1339 --disable-seccomp) seccomp="no"
1340 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301341 --disable-glusterfs) glusterfs="no"
1342 ;;
Liam Merwick86583a02018-10-19 21:38:59 +01001343 --disable-avx2) avx2_opt="no"
1344 ;;
1345 --enable-avx2) avx2_opt="yes"
1346 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301347 --enable-glusterfs) glusterfs="yes"
1348 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001349 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1350 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001351 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001352 --enable-vhdx|--disable-vhdx)
1353 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1354 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001355 --enable-uuid|--disable-uuid)
1356 echo "$0: $opt is obsolete, UUID support is always built" >&2
1357 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001358 --disable-gtk) gtk="no"
1359 ;;
1360 --enable-gtk) gtk="yes"
1361 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001362 --tls-priority=*) tls_priority="$optarg"
1363 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001364 --disable-gnutls) gnutls="no"
1365 ;;
1366 --enable-gnutls) gnutls="yes"
1367 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001368 --disable-nettle) nettle="no"
1369 ;;
1370 --enable-nettle) nettle="yes"
1371 ;;
1372 --disable-gcrypt) gcrypt="no"
1373 ;;
1374 --enable-gcrypt) gcrypt="yes"
1375 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001376 --enable-rdma) rdma="yes"
1377 ;;
1378 --disable-rdma) rdma="no"
1379 ;;
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03001380 --enable-pvrdma) pvrdma="yes"
1381 ;;
1382 --disable-pvrdma) pvrdma="no"
1383 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001384 --disable-vte) vte="no"
1385 ;;
1386 --enable-vte) vte="yes"
1387 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001388 --disable-virglrenderer) virglrenderer="no"
1389 ;;
1390 --enable-virglrenderer) virglrenderer="yes"
1391 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001392 --disable-tpm) tpm="no"
1393 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001394 --enable-tpm) tpm="yes"
1395 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001396 --disable-libssh2) libssh2="no"
1397 ;;
1398 --enable-libssh2) libssh2="yes"
1399 ;;
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001400 --disable-live-block-migration) live_block_migration="no"
1401 ;;
1402 --enable-live-block-migration) live_block_migration="yes"
1403 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001404 --disable-numa) numa="no"
1405 ;;
1406 --enable-numa) numa="yes"
1407 ;;
Klim Kireeved279a02018-01-12 12:01:19 +03001408 --disable-libxml2) libxml2="no"
1409 ;;
1410 --enable-libxml2) libxml2="yes"
1411 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001412 --disable-tcmalloc) tcmalloc="no"
1413 ;;
1414 --enable-tcmalloc) tcmalloc="yes"
1415 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001416 --disable-jemalloc) jemalloc="no"
1417 ;;
1418 --enable-jemalloc) jemalloc="yes"
1419 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001420 --disable-replication) replication="no"
1421 ;;
1422 --enable-replication) replication="yes"
1423 ;;
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001424 --disable-vxhs) vxhs="no"
1425 ;;
1426 --enable-vxhs) vxhs="yes"
1427 ;;
Jeff Cody2f740132018-11-07 07:36:44 +01001428 --disable-bochs) bochs="no"
1429 ;;
1430 --enable-bochs) bochs="yes"
1431 ;;
1432 --disable-cloop) cloop="no"
1433 ;;
1434 --enable-cloop) cloop="yes"
1435 ;;
1436 --disable-dmg) dmg="no"
1437 ;;
1438 --enable-dmg) dmg="yes"
1439 ;;
1440 --disable-qcow1) qcow1="no"
1441 ;;
1442 --enable-qcow1) qcow1="yes"
1443 ;;
1444 --disable-vdi) vdi="no"
1445 ;;
1446 --enable-vdi) vdi="yes"
1447 ;;
1448 --disable-vvfat) vvfat="no"
1449 ;;
1450 --enable-vvfat) vvfat="yes"
1451 ;;
1452 --disable-qed) qed="no"
1453 ;;
1454 --enable-qed) qed="yes"
1455 ;;
1456 --disable-parallels) parallels="no"
1457 ;;
1458 --enable-parallels) parallels="yes"
1459 ;;
1460 --disable-sheepdog) sheepdog="no"
1461 ;;
1462 --enable-sheepdog) sheepdog="yes"
1463 ;;
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001464 --disable-vhost-user) vhost_user="no"
1465 ;;
1466 --enable-vhost-user)
1467 vhost_user="yes"
1468 if test "$mingw32" = "yes"; then
1469 error_exit "vhost-user isn't available on win32"
1470 fi
1471 ;;
Richard Henderson8ca80762017-09-14 09:41:12 -07001472 --disable-capstone) capstone="no"
1473 ;;
1474 --enable-capstone) capstone="yes"
1475 ;;
Richard Hendersone219c492017-09-28 09:01:23 -07001476 --enable-capstone=git) capstone="git"
1477 ;;
1478 --enable-capstone=system) capstone="system"
1479 ;;
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01001480 --with-git=*) git="$optarg"
1481 ;;
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01001482 --enable-git-update) git_update=yes
1483 ;;
1484 --disable-git-update) git_update=no
1485 ;;
Paolo Bonziniba59fb72018-06-13 14:23:08 +02001486 --enable-debug-mutex) debug_mutex=yes
1487 ;;
1488 --disable-debug-mutex) debug_mutex=no
1489 ;;
Junyan He17824402018-07-18 15:47:59 +08001490 --enable-libpmem) libpmem=yes
1491 ;;
1492 --disable-libpmem) libpmem=no
1493 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001494 *)
1495 echo "ERROR: unknown option $opt"
1496 echo "Try '$0 --help' for more information"
1497 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001498 ;;
bellard7d132992003-03-06 23:23:54 +00001499 esac
1500done
1501
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001502if test "$vhost_user" = ""; then
1503 if test "$mingw32" = "yes"; then
1504 vhost_user="no"
1505 else
1506 vhost_user="yes"
1507 fi
1508fi
1509
bellard40293e52008-01-31 11:32:10 +00001510case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001511 ppc)
1512 CPU_CFLAGS="-m32"
1513 LDFLAGS="-m32 $LDFLAGS"
Alex Bennée13a5abe2018-04-13 16:15:07 +01001514 cross_cc_powerpc=$cc
1515 cross_cc_cflags_powerpc=$CPU_CFLAGS
Richard Hendersone3608d62013-08-28 15:48:21 -07001516 ;;
1517 ppc64)
1518 CPU_CFLAGS="-m64"
1519 LDFLAGS="-m64 $LDFLAGS"
Alex Bennée13a5abe2018-04-13 16:15:07 +01001520 cross_cc_ppc64=$cc
1521 cross_cc_cflags_ppc64=$CPU_CFLAGS
Richard Hendersone3608d62013-08-28 15:48:21 -07001522 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001523 sparc)
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001524 CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
1525 LDFLAGS="-m32 -mv8plus $LDFLAGS"
Alex Bennée13a5abe2018-04-13 16:15:07 +01001526 cross_cc_sparc=$cc
1527 cross_cc_cflags_sparc=$CPU_CFLAGS
blueswir131422552007-04-16 18:27:06 +00001528 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001529 sparc64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001530 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001531 LDFLAGS="-m64 $LDFLAGS"
Alex Bennée13a5abe2018-04-13 16:15:07 +01001532 cross_cc_sparc64=$cc
1533 cross_cc_cflags_sparc64=$CPU_CFLAGS
blueswir131422552007-04-16 18:27:06 +00001534 ;;
ths76d83bd2007-11-18 21:22:10 +00001535 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001536 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001537 LDFLAGS="-m31 $LDFLAGS"
Alex Bennée13a5abe2018-04-13 16:15:07 +01001538 cross_cc_s390=$cc
1539 cross_cc_cflags_s390=$CPU_CFLAGS
Richard Henderson28d7cc42010-06-04 12:14:09 -07001540 ;;
1541 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001542 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001543 LDFLAGS="-m64 $LDFLAGS"
Alex Bennée13a5abe2018-04-13 16:15:07 +01001544 cross_cc_s390x=$cc
1545 cross_cc_cflags_s390x=$CPU_CFLAGS
ths76d83bd2007-11-18 21:22:10 +00001546 ;;
bellard40293e52008-01-31 11:32:10 +00001547 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001548 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001549 LDFLAGS="-m32 $LDFLAGS"
Alex Bennée716a5072018-04-10 12:19:40 +01001550 cross_cc_i386=$cc
1551 cross_cc_cflags_i386=$CPU_CFLAGS
bellard40293e52008-01-31 11:32:10 +00001552 ;;
1553 x86_64)
Richard Henderson7ebee432016-06-29 21:10:59 -07001554 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1555 # If we truly care, we should simply detect this case at
1556 # runtime and generate the fallback to serial emulation.
1557 CPU_CFLAGS="-m64 -mcx16"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001558 LDFLAGS="-m64 $LDFLAGS"
Alex Bennée716a5072018-04-10 12:19:40 +01001559 cross_cc_x86_64=$cc
1560 cross_cc_cflags_x86_64=$CPU_CFLAGS
Paul Brook379f6692009-07-17 12:48:08 +01001561 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001562 x32)
1563 CPU_CFLAGS="-mx32"
1564 LDFLAGS="-mx32 $LDFLAGS"
Alex Bennée716a5072018-04-10 12:19:40 +01001565 cross_cc_i386=$cc
Alex Bennée13a5abe2018-04-13 16:15:07 +01001566 cross_cc_cflags_i386=$CPU_CFLAGS
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001567 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001568 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001569esac
1570
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001571QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001572
Peter Maydellaffc88c2016-06-13 11:32:24 +01001573# For user-mode emulation the host arch has to be one we explicitly
1574# support, even if we're using TCI.
1575if [ "$ARCH" = "unknown" ]; then
1576 bsd_user="no"
1577 linux_user="no"
1578fi
1579
Peter Maydell60e0df22011-05-03 14:50:13 +01001580default_target_list=""
1581
Peter Maydell6e92f822013-05-20 16:16:15 +01001582mak_wilds=""
1583
1584if [ "$softmmu" = "yes" ]; then
1585 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001586fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001587if [ "$linux_user" = "yes" ]; then
1588 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001589fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001590if [ "$bsd_user" = "yes" ]; then
1591 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001592fi
1593
Peter Maydell6e92f822013-05-20 16:16:15 +01001594for config in $mak_wilds; do
1595 default_target_list="${default_target_list} $(basename "$config" .mak)"
1596done
1597
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001598# Enumerate public trace backends for --help output
Greg Kurz64a60472017-04-26 15:36:07 +02001599trace_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 +01001600
pbrookaf5db582006-04-08 14:26:41 +00001601if test x"$show_help" = x"yes" ; then
1602cat << EOF
1603
1604Usage: configure [options]
1605Options: [defaults in brackets after descriptions]
1606
Stefan Weil08fb77e2013-12-18 22:09:39 +01001607Standard options:
1608 --help print this message
1609 --prefix=PREFIX install in PREFIX [$prefix]
1610 --interp-prefix=PREFIX where to find shared libraries, etc.
1611 use %M for cpu name [$interp_prefix]
1612 --target-list=LIST set target list (default: build everything)
1613$(echo Available targets: $default_target_list | \
1614 fold -s -w 53 | sed -e 's/^/ /')
1615
1616Advanced options (experts only):
1617 --source-path=PATH path of source code [$source_path]
1618 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1619 --cc=CC use C compiler CC [$cc]
1620 --iasl=IASL use ACPI compiler IASL [$iasl]
1621 --host-cc=CC use C compiler CC [$host_cc] for code run at
1622 build time
1623 --cxx=CXX use C++ compiler CXX [$cxx]
1624 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1625 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01001626 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
Stefan Weil08fb77e2013-12-18 22:09:39 +01001627 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
Alex Bennéed75402b2018-04-04 20:27:05 +01001628 --cross-cc-ARCH=CC use compiler when building ARCH guest test cases
Alex Bennéed422b2b2018-04-13 11:07:58 +01001629 --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests
Stefan Weil08fb77e2013-12-18 22:09:39 +01001630 --make=MAKE use specified make [$make]
1631 --install=INSTALL use specified install [$install]
1632 --python=PYTHON use specified python [$python]
1633 --smbd=SMBD use specified smbd [$smbd]
Thomas Huthdb1b5f12018-03-27 17:09:30 +02001634 --with-git=GIT use specified git [$git]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001635 --static enable static build [$static]
1636 --mandir=PATH install man pages in PATH
1637 --datadir=PATH install firmware in PATH$confsuffix
1638 --docdir=PATH install documentation in PATH$confsuffix
1639 --bindir=PATH install binaries in PATH
1640 --libdir=PATH install libraries in PATH
Thomas Huthdb1b5f12018-03-27 17:09:30 +02001641 --libexecdir=PATH install helper binaries in PATH
Stefan Weil08fb77e2013-12-18 22:09:39 +01001642 --sysconfdir=PATH install config in PATH$confsuffix
1643 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02001644 --firmwarepath=PATH search PATH for firmware files
Fam Zhenge26110c2014-02-10 14:48:57 +08001645 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Thomas Huthdb1b5f12018-03-27 17:09:30 +02001646 --with-pkgversion=VERS use specified string as sub-version of the package
Stefan Weil08fb77e2013-12-18 22:09:39 +01001647 --enable-debug enable common debug build options
Marc-André Lureau247724c2018-01-16 16:11:51 +01001648 --enable-sanitizers enable default sanitizers
Stefan Weil08fb77e2013-12-18 22:09:39 +01001649 --disable-strip disable stripping binaries
1650 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001651 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001652 --audio-drv-list=LIST set audio drivers list:
1653 Available drivers: $audio_possible_drivers
1654 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1655 --block-drv-rw-whitelist=L
1656 set block driver read-write whitelist
1657 (affects only QEMU, not qemu-img)
1658 --block-drv-ro-whitelist=L
1659 set block driver read-only whitelist
1660 (affects only QEMU, not qemu-img)
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02001661 --enable-trace-backends=B Set trace backend
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001662 Available backends: $trace_backend_list
Stefan Weil08fb77e2013-12-18 22:09:39 +01001663 --with-trace-file=NAME Full PATH,NAME of file to store traces
1664 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001665 --disable-slirp disable SLIRP userspace network connectivity
1666 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
Yang Zhong5a22ab72017-12-20 21:16:46 +08001667 --enable-malloc-trim enable libc malloc_trim() for memory optimization
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001668 --oss-lib path to OSS library
1669 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001670 --with-coroutine=BACKEND coroutine backend. Supported options:
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01001671 ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001672 --enable-gcov enable test coverage analysis with gcov
1673 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001674 --disable-blobs disable installing provided firmware blobs
1675 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1676 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001677 --tls-priority default TLS protocol/cipher priority string
Lin Mac12d66a2017-03-10 18:14:05 +08001678 --enable-gprof QEMU profiling with gprof
1679 --enable-profiler profiler support
1680 --enable-xen-pv-domain-build
1681 xen pv domain builder
1682 --enable-debug-stack-usage
1683 track the maximum stack usage of stacks created by qemu_alloc_stack
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001684
1685Optional features, enabled with --enable-FEATURE and
1686disabled with --disable-FEATURE, default is enabled if available:
1687
1688 system all system emulation targets
1689 user supported user emulation targets
1690 linux-user all linux usermode emulation targets
1691 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001692 docs build documentation
1693 guest-agent build the QEMU Guest Agent
1694 guest-agent-msi build guest agent Windows MSI installation package
1695 pie Position Independent Executables
1696 modules modules support
1697 debug-tcg TCG debugging (default is disabled)
1698 debug-info debugging information
1699 sparse sparse checker
1700
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001701 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001702 nettle nettle cryptography support
1703 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001704 sdl SDL UI
1705 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1706 gtk gtk UI
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001707 vte vte support for the gtk UI
1708 curses curses UI
1709 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001710 vnc-sasl SASL encryption for VNC server
1711 vnc-jpeg JPEG lossy compression for VNC server
1712 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001713 cocoa Cocoa UI (Mac OS X only)
1714 virtfs VirtFS
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02001715 mpath Multipath persistent reservation passthrough
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001716 xen xen backend driver support
Anthony PERARD70c292a2018-05-04 10:17:56 +01001717 xen-pci-passthrough PCI passthrough support for Xen
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001718 brlapi BrlAPI (Braile)
1719 curl curl connectivity
Paolo Bonzinia40161c2018-02-16 10:05:23 +01001720 membarrier membarrier system call (for Linux 4.14+ or Windows)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001721 fdt fdt device tree
1722 bluez bluez stack connectivity
1723 kvm KVM acceleration support
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001724 hax HAX acceleration support
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05001725 hvf Hypervisor.framework acceleration support
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08001726 whpx Windows Hypervisor Platform acceleration support
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03001727 rdma Enable RDMA-based migration
1728 pvrdma Enable PVRDMA support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001729 vde support for vde network
1730 netmap support for netmap network
1731 linux-aio Linux AIO support
1732 cap-ng libcap-ng support
1733 attr attr and xattr support
1734 vhost-net vhost-net acceleration support
Gonglei042cea22018-03-01 21:46:28 +08001735 vhost-crypto vhost-crypto acceleration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001736 spice spice
1737 rbd rados block device (rbd)
1738 libiscsi iscsi support
1739 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001740 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001741 libusb libusb (for usb passthrough)
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001742 live-block-migration Block migration in the main migration stream
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001743 usb-redir usb network redirection support
1744 lzo support of lzo compression library
1745 snappy support of snappy compression library
1746 bzip2 support of bzip2 compression library
1747 (for reading bzip2-compressed dmg images)
1748 seccomp seccomp support
1749 coroutine-pool coroutine freelist (better performance)
1750 glusterfs GlusterFS backend
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001751 tpm TPM support
1752 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001753 numa libnuma support
Klim Kireeved279a02018-01-12 12:01:19 +03001754 libxml2 for Parallels image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001755 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001756 jemalloc jemalloc support
Liam Merwick86583a02018-10-19 21:38:59 +01001757 avx2 AVX2 optimization support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001758 replication replication support
Lin Mac12d66a2017-03-10 18:14:05 +08001759 vhost-vsock virtio sockets device support
1760 opengl opengl support
1761 virglrenderer virgl rendering support
1762 xfsctl xfsctl support
1763 qom-cast-debug cast debugging support
1764 tools build qemu-io, qemu-nbd and qemu-image tools
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001765 vxhs Veritas HyperScale vDisk backend support
Jeff Cody2f740132018-11-07 07:36:44 +01001766 bochs bochs image format support
1767 cloop cloop image format support
1768 dmg dmg image format support
1769 qcow1 qcow v1 image format support
1770 vdi vdi image format support
1771 vvfat vvfat image format support
1772 qed qed image format support
1773 parallels parallels image format support
1774 sheepdog sheepdog block driver support
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001775 crypto-afalg Linux AF_ALG crypto backend driver
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001776 vhost-user vhost-user support
Richard Henderson8ca80762017-09-14 09:41:12 -07001777 capstone capstone disassembler support
Paolo Bonziniba59fb72018-06-13 14:23:08 +02001778 debug-mutex mutex debugging support
Junyan He17824402018-07-18 15:47:59 +08001779 libpmem libpmem support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001780
1781NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001782EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001783exit 0
pbrookaf5db582006-04-08 14:26:41 +00001784fi
1785
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001786if ! has $python; then
1787 error_exit "Python not found. Use --python=/path/to/python"
1788fi
1789
1790# Note that if the Python conditional here evaluates True we will exit
1791# with status 1 which is a shell 'false' value.
Eduardo Habkost7f2b5542018-06-08 11:30:26 -03001792if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then
1793 error_exit "Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001794 "Use --python=/path/to/python to specify a supported Python."
1795fi
1796
1797# Suppress writing compiled files
1798python="$python -B"
1799
Daniel Henrique Barboza9aae6e52017-11-02 07:09:06 -02001800# Check that the C compiler works. Doing this here before testing
1801# the host CPU ensures that we had a valid CC to autodetect the
1802# $cpu var (and we should bail right here if that's not the case).
1803# It also allows the help message to be printed without a CC.
1804write_c_skeleton;
1805if compile_object ; then
1806 : C compiler works ok
1807else
1808 error_exit "\"$cc\" either does not exist or does not work"
1809fi
1810if ! compile_prog ; then
1811 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1812fi
1813
Peter Maydell359bc952011-12-24 13:07:25 +00001814# Now we have handled --enable-tcg-interpreter and know we're not just
1815# printing the help message, bail out if the host CPU isn't supported.
1816if test "$ARCH" = "unknown"; then
1817 if test "$tcg_interpreter" = "yes" ; then
1818 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001819 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001820 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001821 fi
1822fi
1823
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001824# Consult white-list to determine whether to enable werror
1825# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001826if test -z "$werror" ; then
1827 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001828 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001829 werror="yes"
1830 else
1831 werror="no"
1832 fi
1833fi
1834
Peter Maydellfb59dab2017-03-28 14:01:52 +01001835if test "$bogus_os" = "yes"; then
1836 # Now that we know that we're not printing the help and that
1837 # the compiler works (so the results of the check_defines we used
1838 # to identify the OS are reliable), if we didn't recognize the
1839 # host OS we should stop now.
Peter Maydell951fedf2017-07-13 16:15:32 +01001840 error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
Peter Maydellfb59dab2017-03-28 14:01:52 +01001841fi
1842
Paolo Bonzini8d050952010-12-23 11:43:52 +01001843gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1844gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001845gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001846gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Paolo Bonzinib98fcfd2017-07-11 10:08:55 +02001847gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001848gcc_flags="-Wno-string-plus-int $gcc_flags"
Gerd Hoffmann0e39c4a2018-03-09 14:59:45 +01001849gcc_flags="-Wno-error=address-of-packed-member $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001850# Note that we do not add -Werror to gcc_flags here, because that would
1851# enable it for all configure tests. If a configure test failed due
1852# to -Werror this would just silently disable some features,
1853# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001854
1855cc_has_warning_flag() {
1856 write_c_skeleton;
1857
Peter Maydella1d29d62012-10-27 22:19:07 +01001858 # Use the positive sense of the flag when testing for -Wno-wombat
1859 # support (gcc will happily accept the -Wno- form of unknown
1860 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001861 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1862 compile_prog "-Werror $optflag" ""
1863}
1864
1865for flag in $gcc_flags; do
1866 if cc_has_warning_flag $flag ; then
1867 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001868 fi
1869done
1870
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001871if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001872 cat > $TMPC << EOF
1873int main(int argc, char *argv[])
1874{
1875 char arr[64], *p = arr, *c = argv[0];
1876 while (*c) {
1877 *p++ = *c++;
1878 }
1879 return 0;
1880}
1881EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001882 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001883 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001884 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001885 # We need to check both a compile and a link, since some compiler
1886 # setups fail only on a .c->.o compile and some only at link time
1887 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1888 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001889 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001890 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001891 break
1892 fi
1893 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001894 if test "$stack_protector" = yes; then
1895 if test $sp_on = 0; then
1896 error_exit "Stack protector not supported"
1897 fi
1898 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001899fi
1900
Paolo Bonzini20bc94a2017-10-20 12:11:32 +02001901# Disable -Wmissing-braces on older compilers that warn even for
1902# the "universal" C zero initializer {0}.
1903cat > $TMPC << EOF
1904struct {
1905 int a[2];
1906} x = {0};
1907EOF
1908if compile_object "-Werror" "" ; then
1909 :
1910else
1911 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
1912fi
1913
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001914# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1915# large functions that use global variables. The bug is in all releases of
1916# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1917# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1918cat > $TMPC << EOF
1919#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1920int main(void) { return 0; }
1921#else
1922#error No bug in this compiler.
1923#endif
1924EOF
1925if compile_prog "-Werror -fno-gcse" "" ; then
1926 TRANSLATE_OPT_CFLAGS=-fno-gcse
1927fi
1928
Avi Kivity40d64442011-11-15 20:12:17 +02001929if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001930 if test "$modules" = "yes" ; then
1931 error_exit "static and modules are mutually incompatible"
1932 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001933 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001934 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001935 else
1936 pie="no"
1937 fi
1938fi
1939
Emilio G. Cota768b7852015-04-29 13:09:02 +02001940# Unconditional check for compiler __thread support
1941 cat > $TMPC << EOF
1942static __thread int tls_var;
1943int main(void) { return tls_var; }
1944EOF
1945
1946if ! compile_prog "-Werror" "" ; then
1947 error_exit "Your compiler does not support the __thread specifier for " \
1948 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1949fi
1950
Avi Kivity40d64442011-11-15 20:12:17 +02001951if test "$pie" = ""; then
1952 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001953 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001954 ;;
1955 *)
1956 pie="no"
1957 ;;
1958 esac
1959fi
1960
1961if test "$pie" != "no" ; then
1962 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001963
1964#ifdef __linux__
1965# define THREAD __thread
1966#else
1967# define THREAD
1968#endif
1969
1970static THREAD int tls_var;
1971
1972int main(void) { return tls_var; }
1973
Avi Kivity40d64442011-11-15 20:12:17 +02001974EOF
1975 if compile_prog "-fPIE -DPIE" "-pie"; then
1976 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1977 LDFLAGS="-pie $LDFLAGS"
1978 pie="yes"
1979 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1980 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1981 fi
1982 else
1983 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001984 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001985 else
1986 echo "Disabling PIE due to missing toolchain support"
1987 pie="no"
1988 fi
1989 fi
Brad46eef332013-12-10 19:49:08 -05001990
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001991 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001992 CFLAGS_NOPIE="-fno-pie"
1993 LDFLAGS_NOPIE="-nopie"
1994 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001995fi
1996
Paolo Bonzini09dada42013-04-17 16:26:47 +02001997##########################################
1998# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1999# use i686 as default anyway, but for those that don't, an explicit
2000# specification is necessary
2001
2002if test "$cpu" = "i386"; then
2003 cat > $TMPC << EOF
2004static int sfaa(int *ptr)
2005{
2006 return __sync_fetch_and_and(ptr, 0);
2007}
2008
2009int main(void)
2010{
2011 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02002012 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02002013 sfaa(&val);
2014 return val;
2015}
2016EOF
2017 if ! compile_prog "" "" ; then
2018 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
2019 fi
2020fi
2021
2022#########################################
bellardec530c82006-04-25 22:36:06 +00002023# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02002024
bellardec530c82006-04-25 22:36:06 +00002025if test "$solaris" = "yes" ; then
LoĂŻc Minier6792aa12010-01-20 11:35:54 +01002026 if has $install; then
2027 :
2028 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002029 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
2030 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
2031 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00002032 fi
Stefan Weil89138852016-05-16 15:10:20 +02002033 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002034 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
2035 "try ginstall from the GNU fileutils available from www.blastwave.org" \
2036 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00002037 fi
LoĂŻc Minier6792aa12010-01-20 11:35:54 +01002038 if has ar; then
2039 :
2040 else
bellardec530c82006-04-25 22:36:06 +00002041 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002042 error_exit "No path includes ar" \
2043 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00002044 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002045 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00002046 fi
ths5fafdf22007-09-16 21:08:06 +00002047fi
bellardec530c82006-04-25 22:36:06 +00002048
Stefan Weilafb63eb2012-09-26 22:04:38 +02002049if test -z "${target_list+xxx}" ; then
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02002050 for target in $default_target_list; do
2051 supported_target $target 2>/dev/null && \
2052 target_list="$target_list $target"
2053 done
2054 target_list="${target_list# }"
Anthony Liguori121afa92012-09-14 08:17:03 -05002055else
Stefan Weil89138852016-05-16 15:10:20 +02002056 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02002057 for target in $target_list; do
2058 # Check that we recognised the target name; this allows a more
2059 # friendly error message than if we let it fall through.
2060 case " $default_target_list " in
2061 *" $target "*)
2062 ;;
2063 *)
2064 error_exit "Unknown target name '$target'"
2065 ;;
2066 esac
2067 supported_target $target || exit 1
2068 done
bellard5327cf42005-01-10 23:18:50 +00002069fi
Peter Maydell25b48332013-05-20 16:16:16 +01002070
Paolo Bonzinif55fe272010-05-26 16:08:17 +02002071# see if system emulation was really requested
2072case " $target_list " in
2073 *"-softmmu "*) softmmu=yes
2074 ;;
2075 *) softmmu=no
2076 ;;
2077esac
bellard5327cf42005-01-10 23:18:50 +00002078
Juan Quintela249247c2009-08-12 18:20:25 +02002079feature_not_found() {
2080 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11002081 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02002082
Peter Maydell76ad07a2013-04-08 12:11:26 +01002083 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11002084 "configure was not able to find it." \
2085 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02002086}
2087
bellard7d132992003-03-06 23:23:54 +00002088# ---
2089# big/little endian test
2090cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04002091short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2092short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2093extern int foo(short *, short *);
2094int main(int argc, char *argv[]) {
2095 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00002096}
2097EOF
2098
Mike Frysinger61cc9192013-06-30 23:30:18 -04002099if compile_object ; then
Alice Frosi12f15c92018-01-30 14:38:28 +01002100 if strings -a $TMPO | grep -q BiGeNdIaN ; then
Mike Frysinger61cc9192013-06-30 23:30:18 -04002101 bigendian="yes"
Alice Frosi12f15c92018-01-30 14:38:28 +01002102 elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then
Mike Frysinger61cc9192013-06-30 23:30:18 -04002103 bigendian="no"
2104 else
2105 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01002106 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04002107else
2108 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00002109fi
2110
Juan Quintelab0a47e72009-08-12 18:29:49 +02002111##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01002112# cocoa implies not SDL or GTK
2113# (the cocoa UI code currently assumes it is always the active UI
2114# and doesn't interact well with other UI frontend code)
2115if test "$cocoa" = "yes"; then
2116 if test "$sdl" = "yes"; then
2117 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
2118 fi
2119 if test "$gtk" = "yes"; then
2120 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
2121 fi
2122 gtk=no
2123 sdl=no
2124fi
2125
Eric Blake6b39b062016-10-11 10:46:23 -05002126# Some versions of Mac OS X incorrectly define SIZE_MAX
2127cat > $TMPC << EOF
2128#include <stdint.h>
2129#include <stdio.h>
2130int main(int argc, char *argv[]) {
2131 return printf("%zu", SIZE_MAX);
2132}
2133EOF
2134have_broken_size_max=no
2135if ! compile_object -Werror ; then
2136 have_broken_size_max=yes
2137fi
2138
Peter Maydella30878e2015-08-14 16:10:52 +01002139##########################################
Gonglei015a33b2014-07-01 20:58:08 +08002140# L2TPV3 probe
2141
2142cat > $TMPC <<EOF
2143#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04002144#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08002145int main(void) { return sizeof(struct mmsghdr); }
2146EOF
2147if compile_prog "" "" ; then
2148 l2tpv3=yes
2149else
2150 l2tpv3=no
2151fi
2152
2153##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01002154# MinGW / Mingw-w64 localtime_r/gmtime_r check
2155
2156if test "$mingw32" = "yes"; then
2157 # Some versions of MinGW / Mingw-w64 lack localtime_r
2158 # and gmtime_r entirely.
2159 #
2160 # Some versions of Mingw-w64 define a macro for
2161 # localtime_r/gmtime_r.
2162 #
2163 # Some versions of Mingw-w64 will define functions
2164 # for localtime_r/gmtime_r, but only if you have
2165 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2166 # though, unistd.h and pthread.h both define
2167 # that for you.
2168 #
2169 # So this #undef localtime_r and #include <unistd.h>
2170 # are not in fact redundant.
2171cat > $TMPC << EOF
2172#include <unistd.h>
2173#include <time.h>
2174#undef localtime_r
2175int main(void) { localtime_r(NULL, NULL); return 0; }
2176EOF
2177 if compile_prog "" "" ; then
2178 localtime_r="yes"
2179 else
2180 localtime_r="no"
2181 fi
2182fi
2183
2184##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01002185# pkg-config probe
2186
2187if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002188 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01002189fi
2190
2191##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02002192# NPTL probe
2193
Peter Maydell24cb36a2013-07-16 18:45:00 +01002194if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02002195 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00002196#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00002197#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01002198int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00002199#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2200#error bork
2201#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01002202 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00002203}
2204EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01002205 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002206 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02002207 fi
pbrookbd0c5662008-05-29 14:34:11 +00002208fi
2209
balrogac629222008-10-11 09:56:04 +00002210##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08002211# lzo check
2212
2213if test "$lzo" != "no" ; then
2214 cat > $TMPC << EOF
2215#include <lzo/lzo1x.h>
2216int main(void) { lzo_version(); return 0; }
2217EOF
2218 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002219 libs_softmmu="$libs_softmmu -llzo2"
2220 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002221 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002222 if test "$lzo" = "yes"; then
2223 feature_not_found "liblzo2" "Install liblzo2 devel"
2224 fi
2225 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002226 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002227fi
2228
2229##########################################
2230# snappy check
2231
2232if test "$snappy" != "no" ; then
2233 cat > $TMPC << EOF
2234#include <snappy-c.h>
2235int main(void) { snappy_max_compressed_length(4096); return 0; }
2236EOF
2237 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002238 libs_softmmu="$libs_softmmu -lsnappy"
2239 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002240 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002241 if test "$snappy" = "yes"; then
2242 feature_not_found "libsnappy" "Install libsnappy devel"
2243 fi
2244 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002245 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002246fi
2247
2248##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01002249# bzip2 check
2250
2251if test "$bzip2" != "no" ; then
2252 cat > $TMPC << EOF
2253#include <bzlib.h>
2254int main(void) { BZ2_bzlibVersion(); return 0; }
2255EOF
2256 if compile_prog "" "-lbz2" ; then
2257 bzip2="yes"
2258 else
2259 if test "$bzip2" = "yes"; then
2260 feature_not_found "libbzip2" "Install libbzip2 devel"
2261 fi
2262 bzip2="no"
2263 fi
2264fi
2265
2266##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03002267# libseccomp check
2268
Marc-André Lureaud0699bd2018-08-22 19:02:49 +02002269libseccomp_minver="2.2.0"
Eduardo Otubof7945732012-08-14 18:44:05 -03002270if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04002271 case "$cpu" in
Marc-André Lureaud0699bd2018-08-22 19:02:49 +02002272 i386|x86_64|mips)
James Hogan5ce43972016-04-08 14:16:34 +01002273 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002274 arm|aarch64)
2275 libseccomp_minver="2.2.3"
2276 ;;
Thomas Huth3aa35fc2017-09-14 12:36:03 +02002277 ppc|ppc64|s390x)
Michael Strosaker3e684452016-06-01 18:30:18 -05002278 libseccomp_minver="2.3.0"
2279 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002280 *)
2281 libseccomp_minver=""
2282 ;;
2283 esac
2284
2285 if test "$libseccomp_minver" != "" &&
2286 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Fam Zhengc3883e12017-09-07 16:53:16 +08002287 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2288 seccomp_libs="$($pkg_config --libs libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04002289 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03002290 else
Andrew Jones693e5912015-09-30 11:59:18 -04002291 if test "$seccomp" = "yes" ; then
2292 if test "$libseccomp_minver" != "" ; then
2293 feature_not_found "libseccomp" \
2294 "Install libseccomp devel >= $libseccomp_minver"
2295 else
2296 feature_not_found "libseccomp" \
2297 "libseccomp is not supported for host cpu $cpu"
2298 fi
2299 fi
2300 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03002301 fi
2302fi
2303##########################################
aliguorie37630c2009-04-22 15:19:10 +00002304# xen probe
2305
Juan Quintelafc321b42009-08-12 18:29:55 +02002306if test "$xen" != "no" ; then
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002307 # Check whether Xen library path is specified via --extra-ldflags to avoid
2308 # overriding this setting with pkg-config output. If not, try pkg-config
2309 # to obtain all needed flags.
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002310
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002311 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2312 $pkg_config --exists xencontrol ; then
2313 xen_ctrl_version="$(printf '%d%02d%02d' \
2314 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2315 xen=yes
2316 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2317 xen_pc="$xen_pc xenevtchn xendevicemodel"
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002318 if $pkg_config --exists xentoolcore; then
2319 xen_pc="$xen_pc xentoolcore"
2320 fi
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002321 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2322 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2323 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2324 else
Stefan Weil50ced5b2011-12-17 09:27:39 +01002325
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002326 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd9506ca2017-05-11 12:35:42 +01002327 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002328
2329 # First we test whether Xen headers and libraries are available.
2330 # If no, we are done and there is no Xen support.
2331 # If yes, more tests are run to detect the Xen version.
2332
2333 # Xen (any)
2334 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002335#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002336int main(void) {
2337 return 0;
2338}
2339EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002340 if ! compile_prog "" "$xen_libs" ; then
2341 # Xen not found
2342 if test "$xen" = "yes" ; then
2343 feature_not_found "xen" "Install xen devel"
2344 fi
2345 xen=no
Stefan Weil50ced5b2011-12-17 09:27:39 +01002346
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002347 # Xen unstable
2348 elif
2349 cat > $TMPC <<EOF &&
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002350#undef XC_WANT_COMPAT_DEVICEMODEL_API
2351#define __XEN_TOOLS__
2352#include <xendevicemodel.h>
Paul Durrantd3c49eb2018-05-15 17:40:53 +01002353#include <xenforeignmemory.h>
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002354int main(void) {
2355 xendevicemodel_handle *xd;
Paul Durrantd3c49eb2018-05-15 17:40:53 +01002356 xenforeignmemory_handle *xfmem;
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002357
2358 xd = xendevicemodel_open(0, 0);
2359 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2360
Paul Durrantd3c49eb2018-05-15 17:40:53 +01002361 xfmem = xenforeignmemory_open(0, 0);
2362 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2363
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002364 return 0;
2365}
2366EOF
2367 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2368 then
2369 xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2370 xen_ctrl_version=41100
2371 xen=yes
2372 elif
2373 cat > $TMPC <<EOF &&
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002374#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2375#include <xenforeignmemory.h>
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002376#include <xentoolcore.h>
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002377int main(void) {
2378 xenforeignmemory_handle *xfmem;
2379
2380 xfmem = xenforeignmemory_open(0, 0);
2381 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002382 xentoolcore_restrict_all(0);
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002383
2384 return 0;
2385}
2386EOF
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002387 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002388 then
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002389 xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore"
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002390 xen_ctrl_version=41000
2391 xen=yes
2392 elif
2393 cat > $TMPC <<EOF &&
Paul Durrantda8090c2017-03-07 10:55:33 +00002394#undef XC_WANT_COMPAT_DEVICEMODEL_API
2395#define __XEN_TOOLS__
2396#include <xendevicemodel.h>
2397int main(void) {
2398 xendevicemodel_handle *xd;
2399
2400 xd = xendevicemodel_open(0, 0);
2401 xendevicemodel_close(xd);
2402
2403 return 0;
2404}
2405EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002406 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2407 then
2408 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2409 xen_ctrl_version=40900
2410 xen=yes
2411 elif
2412 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002413/*
2414 * If we have stable libs the we don't want the libxc compat
2415 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002416 *
2417 * Also, check if xengnttab_grant_copy_segment_t is defined and
2418 * grant copy operation is implemented.
2419 */
2420#undef XC_WANT_COMPAT_EVTCHN_API
2421#undef XC_WANT_COMPAT_GNTTAB_API
2422#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2423#include <xenctrl.h>
2424#include <xenstore.h>
2425#include <xenevtchn.h>
2426#include <xengnttab.h>
2427#include <xenforeignmemory.h>
2428#include <stdint.h>
2429#include <xen/hvm/hvm_info_table.h>
2430#if !defined(HVM_MAX_VCPUS)
2431# error HVM_MAX_VCPUS not defined
2432#endif
2433int main(void) {
2434 xc_interface *xc = NULL;
2435 xenforeignmemory_handle *xfmem;
2436 xenevtchn_handle *xe;
2437 xengnttab_handle *xg;
2438 xen_domain_handle_t handle;
2439 xengnttab_grant_copy_segment_t* seg = NULL;
2440
2441 xs_daemon_open();
2442
2443 xc = xc_interface_open(0, 0, 0);
2444 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2445 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2446 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2447 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2448 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2449
2450 xfmem = xenforeignmemory_open(0, 0);
2451 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2452
2453 xe = xenevtchn_open(0, 0);
2454 xenevtchn_fd(xe);
2455
2456 xg = xengnttab_open(0, 0);
2457 xengnttab_grant_copy(xg, 0, seg);
2458
2459 return 0;
2460}
2461EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002462 compile_prog "" "$xen_libs $xen_stable_libs"
2463 then
2464 xen_ctrl_version=40800
2465 xen=yes
2466 elif
2467 cat > $TMPC <<EOF &&
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002468/*
2469 * If we have stable libs the we don't want the libxc compat
2470 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002471 */
2472#undef XC_WANT_COMPAT_EVTCHN_API
2473#undef XC_WANT_COMPAT_GNTTAB_API
2474#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2475#include <xenctrl.h>
2476#include <xenstore.h>
2477#include <xenevtchn.h>
2478#include <xengnttab.h>
2479#include <xenforeignmemory.h>
2480#include <stdint.h>
2481#include <xen/hvm/hvm_info_table.h>
2482#if !defined(HVM_MAX_VCPUS)
2483# error HVM_MAX_VCPUS not defined
2484#endif
2485int main(void) {
2486 xc_interface *xc = NULL;
2487 xenforeignmemory_handle *xfmem;
2488 xenevtchn_handle *xe;
2489 xengnttab_handle *xg;
2490 xen_domain_handle_t handle;
2491
2492 xs_daemon_open();
2493
2494 xc = xc_interface_open(0, 0, 0);
2495 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2496 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2497 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2498 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2499 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2500
2501 xfmem = xenforeignmemory_open(0, 0);
2502 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2503
2504 xe = xenevtchn_open(0, 0);
2505 xenevtchn_fd(xe);
2506
2507 xg = xengnttab_open(0, 0);
2508 xengnttab_map_grant_ref(xg, 0, 0, 0);
2509
2510 return 0;
2511}
2512EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002513 compile_prog "" "$xen_libs $xen_stable_libs"
2514 then
2515 xen_ctrl_version=40701
2516 xen=yes
2517 elif
2518 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002519#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002520#include <stdint.h>
2521int main(void) {
2522 xc_interface *xc = NULL;
2523 xen_domain_handle_t handle;
2524 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2525 return 0;
2526}
2527EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002528 compile_prog "" "$xen_libs"
2529 then
2530 xen_ctrl_version=40700
2531 xen=yes
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002532
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002533 # Xen 4.6
2534 elif
2535 cat > $TMPC <<EOF &&
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002536#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002537#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002538#include <stdint.h>
2539#include <xen/hvm/hvm_info_table.h>
2540#if !defined(HVM_MAX_VCPUS)
2541# error HVM_MAX_VCPUS not defined
2542#endif
2543int main(void) {
2544 xc_interface *xc;
2545 xs_daemon_open();
2546 xc = xc_interface_open(0, 0, 0);
2547 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2548 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002549 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002550 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002551 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002552 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002553 return 0;
2554}
2555EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002556 compile_prog "" "$xen_libs"
2557 then
2558 xen_ctrl_version=40600
2559 xen=yes
Jan Beulichd8b441a2015-07-24 03:38:28 -06002560
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002561 # Xen 4.5
2562 elif
2563 cat > $TMPC <<EOF &&
Jan Beulichd8b441a2015-07-24 03:38:28 -06002564#include <xenctrl.h>
2565#include <xenstore.h>
2566#include <stdint.h>
2567#include <xen/hvm/hvm_info_table.h>
2568#if !defined(HVM_MAX_VCPUS)
2569# error HVM_MAX_VCPUS not defined
2570#endif
2571int main(void) {
2572 xc_interface *xc;
2573 xs_daemon_open();
2574 xc = xc_interface_open(0, 0, 0);
2575 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2576 xc_gnttab_open(NULL, 0);
2577 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2578 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002579 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2580 return 0;
2581}
2582EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002583 compile_prog "" "$xen_libs"
2584 then
2585 xen_ctrl_version=40500
2586 xen=yes
Paul Durrant3996e852015-01-20 11:06:19 +00002587
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002588 elif
2589 cat > $TMPC <<EOF &&
Paul Durrant3996e852015-01-20 11:06:19 +00002590#include <xenctrl.h>
2591#include <xenstore.h>
2592#include <stdint.h>
2593#include <xen/hvm/hvm_info_table.h>
2594#if !defined(HVM_MAX_VCPUS)
2595# error HVM_MAX_VCPUS not defined
2596#endif
2597int main(void) {
2598 xc_interface *xc;
2599 xs_daemon_open();
2600 xc = xc_interface_open(0, 0, 0);
2601 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2602 xc_gnttab_open(NULL, 0);
2603 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2604 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002605 return 0;
2606}
2607EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002608 compile_prog "" "$xen_libs"
2609 then
2610 xen_ctrl_version=40200
2611 xen=yes
Stefano Stabellini8688e062012-04-17 17:04:18 +00002612
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002613 else
2614 if test "$xen" = "yes" ; then
2615 feature_not_found "xen (unsupported version)" \
2616 "Install a supported xen (xen 4.2 or newer)"
2617 fi
2618 xen=no
Juan Quintelafc321b42009-08-12 18:29:55 +02002619 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002620
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002621 if test "$xen" = yes; then
2622 if test $xen_ctrl_version -ge 40701 ; then
2623 libs_softmmu="$xen_stable_libs $libs_softmmu"
2624 fi
2625 libs_softmmu="$xen_libs $libs_softmmu"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002626 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002627 fi
aliguorie37630c2009-04-22 15:19:10 +00002628fi
2629
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002630if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002631 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002632 xen_pci_passthrough=yes
2633 else
2634 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002635 error_exit "User requested feature Xen PCI Passthrough" \
2636 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002637 fi
2638 xen_pci_passthrough=no
2639 fi
2640fi
2641
Ian Campbell64a7ad62016-01-15 13:23:44 +00002642if test "$xen_pv_domain_build" = "yes" &&
2643 test "$xen" != "yes"; then
2644 error_exit "User requested Xen PV domain builder support" \
2645 "which requires Xen support."
2646fi
2647
aliguorie37630c2009-04-22 15:19:10 +00002648##########################################
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002649# Windows Hypervisor Platform accelerator (WHPX) check
2650if test "$whpx" != "no" ; then
Lucian Petrut327fccb2018-05-15 20:35:21 +03002651 if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002652 whpx="yes"
2653 else
2654 if test "$whpx" = "yes"; then
Justin Terry (VM) via Qemu-devel53537bb2018-02-26 09:13:29 -08002655 feature_not_found "WinHvPlatform" "WinHvEmulation is not installed"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002656 fi
2657 whpx="no"
2658 fi
2659fi
2660
2661##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002662# Sparse probe
2663if test "$sparse" != "no" ; then
LoĂŻc Minier0dba6192010-01-28 21:26:51 +00002664 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002665 sparse=yes
2666 else
2667 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002668 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002669 fi
2670 sparse=no
2671 fi
2672fi
2673
2674##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002675# X11 probe
Jeremy Whitef676c672015-01-09 13:08:49 -06002676if $pkg_config --exists "x11"; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002677 have_x11=yes
Stefan Weil89138852016-05-16 15:10:20 +02002678 x11_cflags=$($pkg_config --cflags x11)
2679 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002680fi
2681
2682##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002683# GTK probe
2684
2685if test "$gtk" != "no"; then
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002686 gtkpackage="gtk+-3.0"
2687 gtkx11package="gtk+-x11-3.0"
Daniel P. Berrangé58296cb2018-08-22 14:15:53 +01002688 gtkversion="3.14.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002689 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002690 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2691 gtk_libs=$($pkg_config --libs $gtkpackage)
2692 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002693 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002694 need_x11=yes
Jeremy Whitef676c672015-01-09 13:08:49 -06002695 gtk_cflags="$gtk_cflags $x11_cflags"
2696 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002697 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002698 gtk="yes"
2699 elif test "$gtk" = "yes"; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002700 feature_not_found "gtk" "Install gtk3-devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002701 else
2702 gtk="no"
2703 fi
2704fi
2705
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002706
2707##########################################
2708# GNUTLS probe
2709
2710if test "$gnutls" != "no"; then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002711 if $pkg_config --exists "gnutls >= 3.1.18"; then
Stefan Weil89138852016-05-16 15:10:20 +02002712 gnutls_cflags=$($pkg_config --cflags gnutls)
2713 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002714 libs_softmmu="$gnutls_libs $libs_softmmu"
2715 libs_tools="$gnutls_libs $libs_tools"
2716 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2717 gnutls="yes"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002718 elif test "$gnutls" = "yes"; then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002719 feature_not_found "gnutls" "Install gnutls devel >= 3.1.18"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002720 else
2721 gnutls="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002722 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002723fi
2724
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002725
2726# If user didn't give a --disable/enable-gcrypt flag,
2727# then mark as disabled if user requested nettle
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002728# explicitly
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002729if test -z "$gcrypt"
2730then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002731 if test "$nettle" = "yes"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002732 then
2733 gcrypt="no"
2734 fi
2735fi
2736
2737# If user didn't give a --disable/enable-nettle flag,
2738# then mark as disabled if user requested gcrypt
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002739# explicitly
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002740if test -z "$nettle"
2741then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002742 if test "$gcrypt" = "yes"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002743 then
2744 nettle="no"
2745 fi
2746fi
2747
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002748has_libgcrypt() {
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002749 if ! has "libgcrypt-config"
2750 then
2751 return 1
2752 fi
2753
2754 if test -n "$cross_prefix"
2755 then
Stefan Weil89138852016-05-16 15:10:20 +02002756 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002757 if test "$host-" != $cross_prefix
2758 then
2759 return 1
2760 fi
2761 fi
2762
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002763 maj=`libgcrypt-config --version | awk -F . '{print $1}'`
2764 min=`libgcrypt-config --version | awk -F . '{print $2}'`
2765
2766 if test $maj != 1 || test $min -lt 5
2767 then
2768 return 1
2769 fi
2770
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002771 return 0
2772}
2773
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002774
2775if test "$nettle" != "no"; then
Daniel P. Berrangé64dd2f32018-07-18 11:55:05 +01002776 if $pkg_config --exists "nettle >= 2.7.1"; then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002777 nettle_cflags=$($pkg_config --cflags nettle)
2778 nettle_libs=$($pkg_config --libs nettle)
2779 nettle_version=$($pkg_config --modversion nettle)
2780 libs_softmmu="$nettle_libs $libs_softmmu"
2781 libs_tools="$nettle_libs $libs_tools"
2782 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2783 nettle="yes"
2784
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002785 if test -z "$gcrypt"; then
2786 gcrypt="no"
2787 fi
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002788 else
2789 if test "$nettle" = "yes"; then
Daniel P. Berrangé64dd2f32018-07-18 11:55:05 +01002790 feature_not_found "nettle" "Install nettle devel >= 2.7.1"
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002791 else
2792 nettle="no"
2793 fi
2794 fi
2795fi
2796
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002797if test "$gcrypt" != "no"; then
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002798 if has_libgcrypt; then
Stefan Weil89138852016-05-16 15:10:20 +02002799 gcrypt_cflags=$(libgcrypt-config --cflags)
2800 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002801 # Debian has remove -lgpg-error from libgcrypt-config
2802 # as it "spreads unnecessary dependencies" which in
2803 # turn breaks static builds...
2804 if test "$static" = "yes"
2805 then
2806 gcrypt_libs="$gcrypt_libs -lgpg-error"
2807 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002808 libs_softmmu="$gcrypt_libs $libs_softmmu"
2809 libs_tools="$gcrypt_libs $libs_tools"
2810 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002811 gcrypt="yes"
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002812
2813 cat > $TMPC << EOF
2814#include <gcrypt.h>
2815int main(void) {
2816 gcry_mac_hd_t handle;
2817 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2818 GCRY_MAC_FLAG_SECURE, NULL);
2819 return 0;
2820}
2821EOF
2822 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2823 gcrypt_hmac=yes
2824 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002825 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002826 if test "$gcrypt" = "yes"; then
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002827 feature_not_found "gcrypt" "Install gcrypt devel >= 1.5.0"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002828 else
2829 gcrypt="no"
2830 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002831 fi
2832fi
2833
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002834
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002835if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2836then
2837 error_exit "Only one of gcrypt & nettle can be enabled"
2838fi
2839
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002840##########################################
2841# libtasn1 - only for the TLS creds/session test suite
2842
2843tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002844tasn1_cflags=""
2845tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002846if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002847 tasn1_cflags=$($pkg_config --cflags libtasn1)
2848 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002849else
2850 tasn1=no
2851fi
2852
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002853
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002854##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002855# getifaddrs (for tests/test-io-channel-socket )
2856
2857have_ifaddrs_h=yes
2858if ! check_include "ifaddrs.h" ; then
2859 have_ifaddrs_h=no
2860fi
2861
2862##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002863# VTE probe
2864
2865if test "$vte" != "no"; then
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002866 vteminversion="0.32.0"
2867 if $pkg_config --exists "vte-2.91"; then
2868 vtepackage="vte-2.91"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002869 else
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002870 vtepackage="vte-2.90"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002871 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002872 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002873 vte_cflags=$($pkg_config --cflags $vtepackage)
2874 vte_libs=$($pkg_config --libs $vtepackage)
2875 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002876 vte="yes"
2877 elif test "$vte" = "yes"; then
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002878 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Peter Maydell0d185e62013-07-18 16:42:01 +01002879 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002880 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002881 fi
2882fi
2883
2884##########################################
bellard11d9f692004-04-02 20:55:59 +00002885# SDL probe
2886
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002887# Look for sdl configuration program (pkg-config or sdl-config). Try
2888# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002889
Peter Xuc6093a02018-04-10 13:40:34 +08002890sdl_probe ()
2891{
2892 sdl_too_old=no
2893 if test "$sdlabi" = ""; then
2894 if $pkg_config --exists "sdl2"; then
2895 sdlabi=2.0
2896 elif $pkg_config --exists "sdl"; then
2897 sdlabi=1.2
2898 else
2899 sdlabi=2.0
2900 fi
LoĂŻc Miniera0dfd8a2010-01-28 21:15:18 +00002901 fi
bellard11d9f692004-04-02 20:55:59 +00002902
Peter Xuc6093a02018-04-10 13:40:34 +08002903 if test $sdlabi = "2.0"; then
2904 sdl_config=$sdl2_config
2905 sdlname=sdl2
2906 sdlconfigname=sdl2_config
2907 elif test $sdlabi = "1.2"; then
2908 sdlname=sdl
2909 sdlconfigname=sdl_config
2910 else
2911 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2912 fi
2913
2914 if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
2915 sdl_config=$sdlconfigname
2916 fi
2917
2918 if $pkg_config $sdlname --exists; then
2919 sdlconfig="$pkg_config $sdlname"
2920 sdlversion=$($sdlconfig --modversion 2>/dev/null)
2921 elif has ${sdl_config}; then
2922 sdlconfig="$sdl_config"
2923 sdlversion=$($sdlconfig --version)
2924 else
2925 if test "$sdl" = "yes" ; then
2926 feature_not_found "sdl" "Install SDL2-devel"
2927 fi
2928 sdl=no
2929 # no need to do the rest
2930 return
2931 fi
2932 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2933 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2934 fi
2935
Juan Quintelaac119f92009-07-27 16:13:15 +02002936 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002937#include <SDL.h>
2938#undef main /* We don't want SDL to override our main() */
2939int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2940EOF
Stefan Weil89138852016-05-16 15:10:20 +02002941 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
Gerd Hoffmann2ca5c432018-03-07 16:42:57 +01002942 sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
TeLeMan74f42e12010-02-08 13:56:44 +08002943 if test "$static" = "yes" ; then
Thomas Huth5f37e6d2017-06-13 20:00:44 +02002944 if $pkg_config $sdlname --exists; then
2945 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2946 else
2947 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2948 fi
TeLeMan74f42e12010-02-08 13:56:44 +08002949 else
Stefan Weil89138852016-05-16 15:10:20 +02002950 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002951 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002952 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002953 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002954 sdl_too_old=yes
2955 else
Peter Maydella30878e2015-08-14 16:10:52 +01002956 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002957 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002958
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002959 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002960 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002961 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002962 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2963 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002964 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002965 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002966 :
2967 else
2968 sdl=no
2969 fi
2970 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002971 else # sdl not found
2972 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002973 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002974 fi
2975 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002976 fi # sdl compile test
Peter Xuc6093a02018-04-10 13:40:34 +08002977}
2978
2979if test "$sdl" != "no" ; then
2980 sdl_probe
Juan Quintelaa68551b2009-07-27 16:13:09 +02002981fi
bellard11d9f692004-04-02 20:55:59 +00002982
aliguori5368a422009-03-03 17:37:21 +00002983if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002984 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002985#include <SDL.h>
2986#if defined(SDL_VIDEO_DRIVER_X11)
2987#include <X11/XKBlib.h>
2988#else
2989#error No x11 support
2990#endif
2991int main(void) { return 0; }
2992EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002993 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002994 need_x11=yes
Jeremy Whitef676c672015-01-09 13:08:49 -06002995 sdl_cflags="$sdl_cflags $x11_cflags"
2996 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002997 fi
aliguori5368a422009-03-03 17:37:21 +00002998fi
2999
ths8f28f3f2007-01-05 21:25:54 +00003000##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04003001# RDMA needs OpenFabrics libraries
3002if test "$rdma" != "no" ; then
3003 cat > $TMPC <<EOF
3004#include <rdma/rdma_cma.h>
3005int main(void) { return 0; }
3006EOF
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003007 rdma_libs="-lrdmacm -libverbs -libumad"
Michael R. Hines2da776d2013-07-22 10:01:54 -04003008 if compile_prog "" "$rdma_libs" ; then
3009 rdma="yes"
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003010 libs_softmmu="$libs_softmmu $rdma_libs"
Michael R. Hines2da776d2013-07-22 10:01:54 -04003011 else
3012 if test "$rdma" = "yes" ; then
3013 error_exit \
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003014 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
Michael R. Hines2da776d2013-07-22 10:01:54 -04003015 " Your options:" \
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003016 " (1) Fast: Install infiniband packages (devel) from your distro." \
Michael R. Hines2da776d2013-07-22 10:01:54 -04003017 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3018 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3019 fi
3020 rdma="no"
3021 fi
3022fi
3023
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03003024##########################################
3025# PVRDMA detection
3026
3027cat > $TMPC <<EOF &&
3028#include <sys/mman.h>
3029
3030int
3031main(void)
3032{
3033 char buf = 0;
3034 void *addr = &buf;
3035 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3036
3037 return 0;
3038}
3039EOF
3040
3041if test "$rdma" = "yes" ; then
3042 case "$pvrdma" in
3043 "")
3044 if compile_prog "" ""; then
3045 pvrdma="yes"
3046 else
3047 pvrdma="no"
3048 fi
3049 ;;
3050 "yes")
3051 if ! compile_prog "" ""; then
3052 error_exit "PVRDMA is not supported since mremap is not implemented"
3053 fi
3054 pvrdma="yes"
3055 ;;
3056 "no")
3057 pvrdma="no"
3058 ;;
3059 esac
3060else
3061 if test "$pvrdma" = "yes" ; then
3062 error_exit "PVRDMA requires rdma suppport"
3063 fi
3064 pvrdma="no"
3065fi
ths8d5d2d42007-08-25 01:37:51 +00003066
3067##########################################
aliguori2f9606b2009-03-06 20:27:28 +00003068# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003069if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02003070 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00003071#include <sasl/sasl.h>
3072#include <stdio.h>
3073int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3074EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02003075 # Assuming Cyrus-SASL installed in /usr prefix
3076 vnc_sasl_cflags=""
3077 vnc_sasl_libs="-lsasl2"
3078 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3079 vnc_sasl=yes
3080 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01003081 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02003082 else
3083 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003084 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00003085 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02003086 vnc_sasl=no
3087 fi
aliguori2f9606b2009-03-06 20:27:28 +00003088fi
3089
3090##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003091# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003092if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003093cat > $TMPC <<EOF
3094#include <stdio.h>
3095#include <jpeglib.h>
3096int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3097EOF
3098 vnc_jpeg_cflags=""
3099 vnc_jpeg_libs="-ljpeg"
3100 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3101 vnc_jpeg=yes
3102 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01003103 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003104 else
3105 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003106 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003107 fi
3108 vnc_jpeg=no
3109 fi
3110fi
3111
3112##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02003113# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003114if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02003115cat > $TMPC <<EOF
3116//#include <stdio.h>
3117#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003118#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02003119int main(void) {
3120 png_structp png_ptr;
3121 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01003122 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02003123}
3124EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003125 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02003126 vnc_png_cflags=$($pkg_config libpng --cflags)
3127 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04003128 else
Corentin Charyefe556a2010-07-07 20:57:56 +02003129 vnc_png_cflags=""
3130 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04003131 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02003132 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
3133 vnc_png=yes
3134 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04003135 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02003136 else
3137 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003138 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02003139 fi
3140 vnc_png=no
3141 fi
3142fi
3143
3144##########################################
Gerd Hoffmann6a021532017-10-05 17:33:28 +02003145# xkbcommon probe
3146if test "$xkbcommon" != "no" ; then
3147 if $pkg_config xkbcommon --exists; then
3148 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
3149 xkbcommon_libs=$($pkg_config xkbcommon --libs)
3150 xkbcommon=yes
3151 else
3152 if test "$xkbcommon" = "yes" ; then
3153 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
3154 fi
3155 xkbcommon=no
3156 fi
3157fi
3158
3159##########################################
aliguori76655d62009-03-06 20:27:37 +00003160# fnmatch() probe, used for ACL routines
3161fnmatch="no"
3162cat > $TMPC << EOF
3163#include <fnmatch.h>
3164int main(void)
3165{
3166 fnmatch("foo", "foo", 0);
3167 return 0;
3168}
3169EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003170if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00003171 fnmatch="yes"
3172fi
3173
3174##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06003175# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003176if test "$xfs" != "no" ; then
3177 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01003178#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003179#include <xfs/xfs.h>
3180int main(void)
3181{
3182 xfsctl(NULL, 0, 0, NULL);
3183 return 0;
3184}
3185EOF
3186 if compile_prog "" "" ; then
3187 xfs="yes"
3188 else
3189 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003190 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003191 fi
3192 xfs=no
3193 fi
3194fi
3195
3196##########################################
ths8a16d272008-07-19 09:56:24 +00003197# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02003198if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003199 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00003200 cat > $TMPC << EOF
3201#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00003202int main(void)
3203{
3204 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01003205 char s[] = "";
3206 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00003207 return 0;
3208}
ths8a16d272008-07-19 09:56:24 +00003209EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003210 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003211 vde=yes
Juan Quinteladfb278b2009-08-12 18:20:27 +02003212 else
3213 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003214 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02003215 fi
3216 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02003217 fi
ths8a16d272008-07-19 09:56:24 +00003218fi
3219
3220##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003221# netmap support probe
3222# Apart from looking for netmap headers, we make sure that the host API version
3223# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3224# a minor/major version number. Minor new features will be marked with values up
3225# to 15, and if something happens that requires a change to the backend we will
3226# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01003227if test "$netmap" != "no" ; then
3228 cat > $TMPC << EOF
3229#include <inttypes.h>
3230#include <net/if.h>
3231#include <net/netmap.h>
3232#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003233#if (NETMAP_API < 11) || (NETMAP_API > 15)
3234#error
3235#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01003236int main(void) { return 0; }
3237EOF
3238 if compile_prog "" "" ; then
3239 netmap=yes
3240 else
3241 if test "$netmap" = "yes" ; then
3242 feature_not_found "netmap"
3243 fi
3244 netmap=no
3245 fi
3246fi
3247
3248##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05003249# libcap-ng library probe
3250if test "$cap_ng" != "no" ; then
3251 cap_libs="-lcap-ng"
3252 cat > $TMPC << EOF
3253#include <cap-ng.h>
3254int main(void)
3255{
3256 capng_capability_to_name(CAPNG_EFFECTIVE);
3257 return 0;
3258}
3259EOF
3260 if compile_prog "" "$cap_libs" ; then
3261 cap_ng=yes
3262 libs_tools="$cap_libs $libs_tools"
3263 else
3264 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003265 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05003266 fi
3267 cap_ng=no
3268 fi
3269fi
3270
3271##########################################
malcc2de5c92008-06-28 19:13:06 +00003272# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00003273
malcc2de5c92008-06-28 19:13:06 +00003274audio_drv_probe()
3275{
3276 drv=$1
3277 hdr=$2
3278 lib=$3
3279 exp=$4
3280 cfl=$5
3281 cat > $TMPC << EOF
3282#include <$hdr>
3283int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00003284EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003285 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00003286 :
3287 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003288 error_exit "$drv check failed" \
3289 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00003290 fi
3291}
3292
Stefan Weil89138852016-05-16 15:10:20 +02003293audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00003294for drv in $audio_drv_list; do
3295 case $drv in
3296 alsa)
3297 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01003298 "return snd_pcm_close((snd_pcm_t *)0);"
Fam Zhengb1149912017-09-07 16:29:13 +08003299 alsa_libs="-lasound"
malcc2de5c92008-06-28 19:13:06 +00003300 ;;
3301
malcb8e59f12008-07-02 21:03:08 +00003302 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02003303 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3304 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Fam Zhengb1149912017-09-07 16:29:13 +08003305 pulse_libs="-lpulse"
Juan Quintela67f86e82009-08-03 14:46:59 +02003306 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00003307 ;;
3308
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003309 sdl)
3310 if test "$sdl" = "no"; then
3311 error_exit "sdl not found or disabled, can not use sdl audio driver"
3312 fi
3313 ;;
3314
Juan Quintela997e6902009-08-03 14:46:29 +02003315 coreaudio)
Fam Zhengb1149912017-09-07 16:29:13 +08003316 coreaudio_libs="-framework CoreAudio"
Juan Quintela997e6902009-08-03 14:46:29 +02003317 ;;
3318
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003319 dsound)
Fam Zhengb1149912017-09-07 16:29:13 +08003320 dsound_libs="-lole32 -ldxguid"
malcd5631632009-10-10 01:13:41 +04003321 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003322 ;;
3323
3324 oss)
Fam Zhengb1149912017-09-07 16:29:13 +08003325 oss_libs="$oss_lib"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003326 ;;
3327
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003328 wav)
3329 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00003330 ;;
3331
malce4c63a62008-07-19 16:15:16 +00003332 *)
malc1c9b2a52008-07-19 16:57:30 +00003333 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01003334 error_exit "Unknown driver '$drv' selected" \
3335 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00003336 }
3337 ;;
malcc2de5c92008-06-28 19:13:06 +00003338 esac
3339done
ths8f28f3f2007-01-05 21:25:54 +00003340
balrog4d3b6f62008-02-10 16:33:14 +00003341##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00003342# BrlAPI probe
3343
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003344if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003345 brlapi_libs="-lbrlapi"
3346 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00003347#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003348#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00003349int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3350EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003351 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003352 brlapi=yes
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003353 else
3354 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003355 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003356 fi
3357 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02003358 fi
3359fi
aurel322e4d9fb2008-04-08 06:01:02 +00003360
3361##########################################
balrog4d3b6f62008-02-10 16:33:14 +00003362# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02003363if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003364 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003365 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3366 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003367 else
Samuel Thibault7c703002016-11-09 11:27:52 +01003368 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003369 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003370 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02003371 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00003372 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003373#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00003374#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003375#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01003376int main(void) {
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003377 wchar_t wch = L'w';
3378 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01003379 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003380 addwstr(L"wide chars\n");
3381 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003382 add_wch(WACS_DEGREE);
Kamil Rytarowski271f37a2017-04-26 12:50:27 +02003383 return 0;
Stefan Weilef9a2522011-12-17 17:46:02 +01003384}
balrog4d3b6f62008-02-10 16:33:14 +00003385EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003386 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003387 for curses_inc in $curses_inc_list; do
Peter Maydellb01a4fd2017-06-02 15:35:38 +01003388 # Make sure we get the wide character prototypes
3389 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
Samuel Thibault7c703002016-11-09 11:27:52 +01003390 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003391 for curses_lib in $curses_lib_list; do
3392 unset IFS
3393 if compile_prog "$curses_inc" "$curses_lib" ; then
3394 curses_found=yes
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003395 break
3396 fi
3397 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003398 if test "$curses_found" = yes ; then
3399 break
3400 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003401 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003402 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003403 if test "$curses_found" = "yes" ; then
3404 curses=yes
3405 else
3406 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003407 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003408 fi
3409 curses=no
3410 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003411fi
balrog4d3b6f62008-02-10 16:33:14 +00003412
blueswir1414f0da2008-08-15 18:20:52 +00003413##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003414# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003415if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003416 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003417 curlconfig="$pkg_config libcurl"
3418 else
3419 curlconfig=curl-config
3420 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003421 cat > $TMPC << EOF
3422#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003423int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003424EOF
Stefan Weil89138852016-05-16 15:10:20 +02003425 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3426 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003427 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003428 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003429 else
3430 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003431 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003432 fi
3433 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003434 fi
3435fi # test "$curl"
3436
3437##########################################
balrogfb599c92008-09-28 23:49:55 +00003438# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003439if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003440 cat > $TMPC << EOF
3441#include <bluetooth/bluetooth.h>
3442int main(void) { return bt_error(0); }
3443EOF
Stefan Weil89138852016-05-16 15:10:20 +02003444 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3445 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003446 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003447 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003448 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003449 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003450 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003451 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003452 fi
balroge820e3f2008-09-30 02:27:44 +00003453 bluez="no"
3454 fi
balrogfb599c92008-09-28 23:49:55 +00003455fi
3456
3457##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003458# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003459
Daniel P. Berrangée7b3af82018-05-04 15:34:46 +01003460glib_req_ver=2.40
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003461glib_modules=gthread-2.0
3462if test "$modules" = yes; then
Gerd Hoffmanna88afc62018-03-08 09:53:00 +01003463 glib_modules="$glib_modules gmodule-export-2.0"
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003464fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003465
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003466# This workaround is required due to a bug in pkg-config file for glib as it
3467# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3468
3469if test "$static" = yes -a "$mingw32" = yes; then
3470 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3471fi
3472
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003473for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003474 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003475 glib_cflags=$($pkg_config --cflags $i)
3476 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003477 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003478 LIBS="$glib_libs $LIBS"
3479 libs_qga="$glib_libs $libs_qga"
3480 else
3481 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3482 fi
3483done
3484
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003485# Sanity check that the current size_t matches the
3486# size that glib thinks it should be. This catches
3487# problems on multi-arch where people try to build
3488# 32-bit QEMU while pointing at 64-bit glib headers
3489cat > $TMPC <<EOF
3490#include <glib.h>
3491#include <unistd.h>
3492
3493#define QEMU_BUILD_BUG_ON(x) \
3494 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3495
3496int main(void) {
3497 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3498 return 0;
3499}
3500EOF
3501
Stefan Weil5919e032016-04-28 23:33:41 +02003502if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003503 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3504 "You probably need to set PKG_CONFIG_LIBDIR"\
3505 "to point to the right pkg-config files for your"\
3506 "build target"
3507fi
3508
John Snowbbbf2e02015-03-25 18:57:38 -04003509# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3510cat > $TMPC << EOF
3511#include <glib.h>
3512int main(void) { return 0; }
3513EOF
3514if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3515 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3516 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3517 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3518 fi
3519fi
3520
Stefan Weil6a1f42b2018-07-12 21:26:03 +02003521#########################################
3522# zlib check
3523
3524if test "$zlib" != "no" ; then
3525 if $pkg_config --exists zlib; then
3526 zlib_cflags=$($pkg_config --cflags zlib)
3527 zlib_libs=$($pkg_config --libs zlib)
3528 QEMU_CFLAGS="$zlib_cflags $QEMU_CFLAGS"
3529 LIBS="$zlib_libs $LIBS"
3530 else
3531 cat > $TMPC << EOF
3532#include <zlib.h>
3533int main(void) { zlibVersion(); return 0; }
3534EOF
3535 if compile_prog "" "-lz" ; then
3536 LIBS="$LIBS -lz"
3537 else
3538 error_exit "zlib check failed" \
3539 "Make sure to have the zlib libs and headers installed."
3540 fi
3541 fi
3542fi
3543
Fam Zhenge26110c2014-02-10 14:48:57 +08003544##########################################
3545# SHA command probe for modules
3546if test "$modules" = yes; then
3547 shacmd_probe="sha1sum sha1 shasum"
3548 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003549 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003550 shacmd="$c"
3551 break
3552 fi
3553 done
3554 if test "$shacmd" = ""; then
3555 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3556 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003557fi
3558
3559##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003560# pixman support probe
3561
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003562if test "$want_tools" = "no" -a "$softmmu" = "no"; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003563 pixman_cflags=
3564 pixman_libs=
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003565elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Stefan Weil89138852016-05-16 15:10:20 +02003566 pixman_cflags=$($pkg_config --cflags pixman-1)
3567 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003568else
Gerd Hoffmannc12b6d72017-09-05 16:01:15 +02003569 error_exit "pixman >= 0.21.8 not present." \
3570 "Please install the pixman devel package."
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003571fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003572
3573##########################################
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003574# libmpathpersist probe
3575
3576if test "$mpath" != "no" ; then
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03003577 # probe for the new API
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003578 cat > $TMPC <<EOF
3579#include <libudev.h>
3580#include <mpath_persist.h>
3581unsigned mpath_mx_alloc_len = 1024;
3582int logsink;
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003583static struct config *multipath_conf;
3584extern struct udev *udev;
3585extern struct config *get_multipath_config(void);
3586extern void put_multipath_config(struct config *conf);
3587struct udev *udev;
3588struct config *get_multipath_config(void) { return multipath_conf; }
3589void put_multipath_config(struct config *conf) { }
3590
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003591int main(void) {
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003592 udev = udev_new();
3593 multipath_conf = mpath_lib_init();
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003594 return 0;
3595}
3596EOF
3597 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3598 mpathpersist=yes
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03003599 mpathpersist_new_api=yes
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003600 else
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03003601 # probe for the old API
3602 cat > $TMPC <<EOF
3603#include <libudev.h>
3604#include <mpath_persist.h>
3605unsigned mpath_mx_alloc_len = 1024;
3606int logsink;
3607int main(void) {
3608 struct udev *udev = udev_new();
3609 mpath_lib_init(udev);
3610 return 0;
3611}
3612EOF
3613 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3614 mpathpersist=yes
3615 mpathpersist_new_api=no
3616 else
3617 mpathpersist=no
3618 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003619 fi
3620else
3621 mpathpersist=no
3622fi
3623
3624##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303625# libcap probe
3626
3627if test "$cap" != "no" ; then
3628 cat > $TMPC <<EOF
3629#include <stdio.h>
3630#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003631int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303632EOF
3633 if compile_prog "" "-lcap" ; then
3634 cap=yes
3635 else
3636 cap=no
3637 fi
3638fi
3639
3640##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003641# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003642PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003643
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003644pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003645cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003646#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003647static void *f(void *p) { return NULL; }
3648int main(void) {
3649 pthread_t thread;
3650 pthread_create(&thread, 0, f, 0);
3651 return 0;
3652}
blueswir1414f0da2008-08-15 18:20:52 +00003653EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003654if compile_prog "" "" ; then
3655 pthread=yes
3656else
3657 for pthread_lib in $PTHREADLIBS_LIST; do
3658 if compile_prog "" "$pthread_lib" ; then
3659 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003660 found=no
3661 for lib_entry in $LIBS; do
3662 if test "$lib_entry" = "$pthread_lib"; then
3663 found=yes
3664 break
3665 fi
3666 done
3667 if test "$found" = "no"; then
3668 LIBS="$pthread_lib $LIBS"
Marc-André Lureau14ab3aa2018-01-04 17:05:06 +01003669 libs_qga="$pthread_lib $libs_qga"
Peter Portantee3c56762012-04-20 10:36:12 -04003670 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003671 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003672 break
3673 fi
3674 done
3675fi
blueswir1414f0da2008-08-15 18:20:52 +00003676
Anthony Liguori4617e592009-08-25 17:21:56 -05003677if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003678 error_exit "pthread check failed" \
3679 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003680fi
3681
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003682# check for pthread_setname_np
3683pthread_setname_np=no
3684cat > $TMPC << EOF
3685#include <pthread.h>
3686
3687static void *f(void *p) { return NULL; }
3688int main(void)
3689{
3690 pthread_t thread;
3691 pthread_create(&thread, 0, f, 0);
3692 pthread_setname_np(thread, "QEMU");
3693 return 0;
3694}
3695EOF
3696if compile_prog "" "$pthread_lib" ; then
3697 pthread_setname_np=yes
3698fi
3699
aliguoribf9298b2008-12-05 20:05:26 +00003700##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003701# rbd probe
3702if test "$rbd" != "no" ; then
3703 cat > $TMPC <<EOF
3704#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003705#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003706int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003707 rados_t cluster;
3708 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003709 return 0;
3710}
3711EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003712 rbd_libs="-lrbd -lrados"
3713 if compile_prog "" "$rbd_libs" ; then
3714 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003715 else
3716 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003717 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003718 fi
3719 rbd=no
3720 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003721fi
3722
3723##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003724# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003725min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003726if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003727 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003728 libssh2_cflags=$($pkg_config libssh2 --cflags)
3729 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003730 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003731 else
3732 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003733 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003734 fi
3735 libssh2=no
3736 fi
3737fi
3738
3739##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003740# libssh2_sftp_fsync probe
3741
3742if test "$libssh2" = "yes"; then
3743 cat > $TMPC <<EOF
3744#include <stdio.h>
3745#include <libssh2.h>
3746#include <libssh2_sftp.h>
3747int main(void) {
3748 LIBSSH2_SESSION *session;
3749 LIBSSH2_SFTP *sftp;
3750 LIBSSH2_SFTP_HANDLE *sftp_handle;
3751 session = libssh2_session_init ();
3752 sftp = libssh2_sftp_init (session);
3753 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3754 libssh2_sftp_fsync (sftp_handle);
3755 return 0;
3756}
3757EOF
3758 # libssh2_cflags/libssh2_libs defined in previous test.
3759 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3760 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3761 fi
3762fi
3763
3764##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003765# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003766
3767if test "$linux_aio" != "no" ; then
3768 cat > $TMPC <<EOF
3769#include <libaio.h>
3770#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003771#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003772int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3773EOF
3774 if compile_prog "" "-laio" ; then
3775 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003776 else
3777 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003778 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003779 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003780 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003781 fi
3782fi
3783
3784##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003785# TPM passthrough is only on x86 Linux
3786
3787if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3788 tpm_passthrough=$tpm
3789else
3790 tpm_passthrough=no
3791fi
3792
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003793# TPM emulator is for all posix systems
3794if test "$mingw32" != "yes"; then
3795 tpm_emulator=$tpm
3796else
3797 tpm_emulator=no
3798fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003799##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003800# attr probe
3801
3802if test "$attr" != "no" ; then
3803 cat > $TMPC <<EOF
3804#include <stdio.h>
3805#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003806#ifdef CONFIG_LIBATTR
3807#include <attr/xattr.h>
3808#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003809#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003810#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003811int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3812EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003813 if compile_prog "" "" ; then
3814 attr=yes
3815 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003816 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003817 attr=yes
3818 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003819 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003820 else
3821 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003822 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003823 fi
3824 attr=no
3825 fi
3826fi
3827
3828##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003829# iovec probe
3830cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003831#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003832#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003833#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003834int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003835EOF
3836iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003837if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003838 iovec=yes
3839fi
3840
aurel32f652e6a2008-12-16 10:43:48 +00003841##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003842# preadv probe
3843cat > $TMPC <<EOF
3844#include <sys/types.h>
3845#include <sys/uio.h>
3846#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003847int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003848EOF
3849preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003850if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003851 preadv=yes
3852fi
3853
3854##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003855# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003856# fdt support is mandatory for at least some target architectures,
3857# so insist on it if we're building those system emulators.
3858fdt_required=no
3859for target in $target_list; do
3860 case $target in
KONRAD Frederica6664092018-05-03 17:17:16 +02003861 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003862 fdt_required=yes
3863 ;;
3864 esac
3865done
3866
3867if test "$fdt_required" = "yes"; then
3868 if test "$fdt" = "no"; then
3869 error_exit "fdt disabled but some requested targets require it." \
3870 "You can turn off fdt only if you also disable all the system emulation" \
3871 "targets which need it (by specifying a cut down --target-list)."
3872 fi
3873 fdt=yes
3874fi
3875
Juan Quintela2df87df2009-08-12 18:29:54 +02003876if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003877 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003878 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003879 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003880 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003881#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003882#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003883int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003884EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003885 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003886 # system DTC is good - use it
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03003887 fdt=system
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003888 else
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003889 # have GIT checkout, so activate dtc submodule
3890 if test -e "${source_path}/.git" ; then
3891 git_submodules="${git_submodules} dtc"
3892 fi
3893 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03003894 fdt=git
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003895 mkdir -p dtc
3896 if [ "$pwd_is_source_path" != "y" ] ; then
3897 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3898 symlink "$source_path/dtc/scripts" "dtc/scripts"
3899 fi
3900 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03003901 fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt"
3902 fdt_libs="$fdt_libs"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003903 elif test "$fdt" = "yes" ; then
3904 # Not a git build & no libfdt found, prompt for system install
3905 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3906 "Please install the DTC (libfdt) devel package"
3907 else
3908 # don't have and don't want
3909 fdt_libs=
3910 fdt=no
3911 fi
aurel32f652e6a2008-12-16 10:43:48 +00003912 fi
3913fi
3914
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003915libs_softmmu="$libs_softmmu $fdt_libs"
3916
Michael Walle20ff0752011-03-07 23:32:39 +01003917##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003918# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003919
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003920if test "$opengl" != "no" ; then
Michael Tokarev4939a1d2018-06-30 19:54:48 +03003921 opengl_pkgs="epoxy gbm"
Gerd Hoffmann5f9b1e32018-03-01 11:05:43 +01003922 if $pkg_config $opengl_pkgs; then
3923 opengl_cflags="$($pkg_config --cflags $opengl_pkgs)"
3924 opengl_libs="$($pkg_config --libs $opengl_pkgs)"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003925 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003926 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3927 gtk_gl="yes"
3928 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003929 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003930 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003931 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003932 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003933 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003934 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003935 opengl_libs=""
3936 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003937 fi
3938fi
3939
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003940if test "$opengl" = "yes"; then
3941 cat > $TMPC << EOF
3942#include <epoxy/egl.h>
3943#ifndef EGL_MESA_image_dma_buf_export
3944# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3945#endif
3946int main(void) { return 0; }
3947EOF
3948 if compile_prog "" "" ; then
3949 opengl_dmabuf=yes
3950 fi
3951fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003952
Klim Kireeved279a02018-01-12 12:01:19 +03003953##########################################
3954# libxml2 probe
3955if test "$libxml2" != "no" ; then
3956 if $pkg_config --exists libxml-2.0; then
3957 libxml2="yes"
3958 libxml2_cflags=$($pkg_config --cflags libxml-2.0)
3959 libxml2_libs=$($pkg_config --libs libxml-2.0)
3960 else
3961 if test "$libxml2" = "yes"; then
3962 feature_not_found "libxml2" "Install libxml2 devel"
3963 fi
3964 libxml2="no"
3965 fi
3966fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003967
Bharata B Raoeb100392012-09-24 14:42:45 +05303968##########################################
3969# glusterfs probe
3970if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003971 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303972 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003973 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3974 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003975 if $pkg_config --atleast-version=4 glusterfs-api; then
3976 glusterfs_xlator_opt="yes"
3977 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003978 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303979 glusterfs_discard="yes"
3980 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303981 if $pkg_config --atleast-version=6 glusterfs-api; then
Niels de Vosdf3a4292017-05-28 12:01:14 +05303982 glusterfs_fallocate="yes"
Bharata B Rao7c815372013-12-21 14:51:25 +05303983 glusterfs_zerofill="yes"
3984 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303985 else
3986 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003987 feature_not_found "GlusterFS backend support" \
3988 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303989 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303990 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303991 fi
3992fi
3993
aurel3239386ac2009-04-15 19:48:17 +00003994# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003995# emulator. This is done because older glibc versions don't
3996# have syscall stubs for these implemented. In that case we
3997# don't provide them even if kernel supports them.
3998#
3999inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03004000cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00004001#include <sys/inotify.h>
4002
4003int
4004main(void)
4005{
4006 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00004007 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00004008}
4009EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004010if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03004011 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00004012fi
4013
Riku Voipioc05c7a72010-03-26 15:25:11 +00004014inotify1=no
4015cat > $TMPC << EOF
4016#include <sys/inotify.h>
4017
4018int
4019main(void)
4020{
4021 /* try to start inotify */
4022 return inotify_init1(0);
4023}
4024EOF
4025if compile_prog "" "" ; then
4026 inotify1=yes
4027fi
4028
Riku Voipio099d6b02009-05-05 12:10:04 +03004029# check if pipe2 is there
4030pipe2=no
4031cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03004032#include <unistd.h>
4033#include <fcntl.h>
4034
4035int main(void)
4036{
4037 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06004038 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03004039}
4040EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004041if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03004042 pipe2=yes
4043fi
4044
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004045# check if accept4 is there
4046accept4=no
4047cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004048#include <sys/socket.h>
4049#include <stddef.h>
4050
4051int main(void)
4052{
4053 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4054 return 0;
4055}
4056EOF
4057if compile_prog "" "" ; then
4058 accept4=yes
4059fi
4060
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304061# check if tee/splice is there. vmsplice was added same time.
4062splice=no
4063cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304064#include <unistd.h>
4065#include <fcntl.h>
4066#include <limits.h>
4067
4068int main(void)
4069{
Stefan Weil66ea0f22011-12-17 09:27:35 +01004070 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304071 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4072 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4073 return 0;
4074}
4075EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004076if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304077 splice=yes
4078fi
4079
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004080##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004081# libnuma probe
4082
4083if test "$numa" != "no" ; then
4084 cat > $TMPC << EOF
4085#include <numa.h>
4086int main(void) { return numa_available(); }
4087EOF
4088
4089 if compile_prog "" "-lnuma" ; then
4090 numa=yes
4091 libs_softmmu="-lnuma $libs_softmmu"
4092 else
4093 if test "$numa" = "yes" ; then
4094 feature_not_found "numa" "install numactl devel"
4095 fi
4096 numa=no
4097 fi
4098fi
4099
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004100if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4101 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4102 exit 1
4103fi
4104
Yang Zhong5a22ab72017-12-20 21:16:46 +08004105# Even if malloc_trim() is available, these non-libc memory allocators
4106# do not support it.
4107if test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then
4108 if test "$malloc_trim" = "yes" ; then
4109 echo "Disabling malloc_trim with non-libc memory allocator"
4110 fi
4111 malloc_trim="no"
4112fi
4113
4114#######################################
4115# malloc_trim
4116
4117if test "$malloc_trim" != "no" ; then
4118 cat > $TMPC << EOF
4119#include <malloc.h>
4120int main(void) { malloc_trim(0); return 0; }
4121EOF
4122 if compile_prog "" "" ; then
4123 malloc_trim="yes"
4124 else
4125 malloc_trim="no"
4126 fi
4127fi
4128
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004129##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08004130# tcmalloc probe
4131
4132if test "$tcmalloc" = "yes" ; then
4133 cat > $TMPC << EOF
4134#include <stdlib.h>
4135int main(void) { malloc(1); return 0; }
4136EOF
4137
4138 if compile_prog "" "-ltcmalloc" ; then
4139 LIBS="-ltcmalloc $LIBS"
4140 else
4141 feature_not_found "tcmalloc" "install gperftools devel"
4142 fi
4143fi
4144
4145##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004146# jemalloc probe
4147
4148if test "$jemalloc" = "yes" ; then
4149 cat > $TMPC << EOF
4150#include <stdlib.h>
4151int main(void) { malloc(1); return 0; }
4152EOF
4153
4154 if compile_prog "" "-ljemalloc" ; then
4155 LIBS="-ljemalloc $LIBS"
4156 else
4157 feature_not_found "jemalloc" "install jemalloc devel"
4158 fi
4159fi
4160
4161##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004162# signalfd probe
4163signalfd="no"
4164cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004165#include <unistd.h>
4166#include <sys/syscall.h>
4167#include <signal.h>
4168int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4169EOF
4170
4171if compile_prog "" "" ; then
4172 signalfd=yes
4173fi
4174
Riku Voipioc2882b92009-08-12 15:08:24 +03004175# check if eventfd is supported
4176eventfd=no
4177cat > $TMPC << EOF
4178#include <sys/eventfd.h>
4179
4180int main(void)
4181{
Stefan Weil55cc7f32011-12-17 09:27:37 +01004182 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03004183}
4184EOF
4185if compile_prog "" "" ; then
4186 eventfd=yes
4187fi
4188
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004189# check if memfd is supported
4190memfd=no
4191cat > $TMPC << EOF
Paolo Bonzini75e5b702017-11-28 11:51:27 +01004192#include <sys/mman.h>
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004193
4194int main(void)
4195{
4196 return memfd_create("foo", MFD_ALLOW_SEALING);
4197}
4198EOF
4199if compile_prog "" "" ; then
4200 memfd=yes
4201fi
4202
Cortland Tölva955727d2018-10-08 09:35:19 -07004203# check for usbfs
4204have_usbfs=no
4205if test "$linux_user" = "yes"; then
4206 if check_include linux/usbdevice_fs.h; then
4207 have_usbfs=yes
4208 fi
4209 have_usbfs=yes
4210fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004211
Ulrich Hechtd0927932009-09-17 20:22:14 +03004212# check for fallocate
4213fallocate=no
4214cat > $TMPC << EOF
4215#include <fcntl.h>
4216
4217int main(void)
4218{
4219 fallocate(0, 0, 0, 0);
4220 return 0;
4221}
4222EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004223if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004224 fallocate=yes
4225fi
4226
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004227# check for fallocate hole punching
4228fallocate_punch_hole=no
4229cat > $TMPC << EOF
4230#include <fcntl.h>
4231#include <linux/falloc.h>
4232
4233int main(void)
4234{
4235 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4236 return 0;
4237}
4238EOF
4239if compile_prog "" "" ; then
4240 fallocate_punch_hole=yes
4241fi
4242
Denis V. Lunevb953f072015-01-30 11:42:14 +03004243# check that fallocate supports range zeroing inside the file
4244fallocate_zero_range=no
4245cat > $TMPC << EOF
4246#include <fcntl.h>
4247#include <linux/falloc.h>
4248
4249int main(void)
4250{
4251 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4252 return 0;
4253}
4254EOF
4255if compile_prog "" "" ; then
4256 fallocate_zero_range=yes
4257fi
4258
Kevin Wolfed911432014-09-29 17:12:59 +02004259# check for posix_fallocate
4260posix_fallocate=no
4261cat > $TMPC << EOF
4262#include <fcntl.h>
4263
4264int main(void)
4265{
4266 posix_fallocate(0, 0, 0);
4267 return 0;
4268}
4269EOF
4270if compile_prog "" "" ; then
4271 posix_fallocate=yes
4272fi
4273
Peter Maydellc727f472011-01-06 11:05:10 +00004274# check for sync_file_range
4275sync_file_range=no
4276cat > $TMPC << EOF
4277#include <fcntl.h>
4278
4279int main(void)
4280{
4281 sync_file_range(0, 0, 0, 0);
4282 return 0;
4283}
4284EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004285if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00004286 sync_file_range=yes
4287fi
4288
Peter Maydelldace20d2011-01-10 13:11:24 +00004289# check for linux/fiemap.h and FS_IOC_FIEMAP
4290fiemap=no
4291cat > $TMPC << EOF
4292#include <sys/ioctl.h>
4293#include <linux/fs.h>
4294#include <linux/fiemap.h>
4295
4296int main(void)
4297{
4298 ioctl(0, FS_IOC_FIEMAP, 0);
4299 return 0;
4300}
4301EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004302if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00004303 fiemap=yes
4304fi
4305
Ulrich Hechtd0927932009-09-17 20:22:14 +03004306# check for dup3
4307dup3=no
4308cat > $TMPC << EOF
4309#include <unistd.h>
4310
4311int main(void)
4312{
4313 dup3(0, 0, 0);
4314 return 0;
4315}
4316EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01004317if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004318 dup3=yes
4319fi
4320
Alex Bligh4e0c6522013-08-21 16:02:43 +01004321# check for ppoll support
4322ppoll=no
4323cat > $TMPC << EOF
4324#include <poll.h>
4325
4326int main(void)
4327{
4328 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4329 ppoll(&pfd, 1, 0, 0);
4330 return 0;
4331}
4332EOF
4333if compile_prog "" "" ; then
4334 ppoll=yes
4335fi
4336
Alex Blighcd758dd2013-08-21 16:02:44 +01004337# check for prctl(PR_SET_TIMERSLACK , ... ) support
4338prctl_pr_set_timerslack=no
4339cat > $TMPC << EOF
4340#include <sys/prctl.h>
4341
4342int main(void)
4343{
4344 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4345 return 0;
4346}
4347EOF
4348if compile_prog "" "" ; then
4349 prctl_pr_set_timerslack=yes
4350fi
4351
Peter Maydell3b6edd12011-02-15 18:35:05 +00004352# check for epoll support
4353epoll=no
4354cat > $TMPC << EOF
4355#include <sys/epoll.h>
4356
4357int main(void)
4358{
4359 epoll_create(0);
4360 return 0;
4361}
4362EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004363if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004364 epoll=yes
4365fi
4366
Peter Maydell227f0212016-06-06 19:58:11 +01004367# epoll_create1 is a later addition
4368# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00004369epoll_create1=no
4370cat > $TMPC << EOF
4371#include <sys/epoll.h>
4372
4373int main(void)
4374{
Peter Maydell19e83f62011-04-26 16:56:40 +01004375 /* Note that we use epoll_create1 as a value, not as
4376 * a function being called. This is necessary so that on
4377 * old SPARC glibc versions where the function was present in
4378 * the library but not declared in the header file we will
4379 * fail the configure check. (Otherwise we will get a compiler
4380 * warning but not an error, and will proceed to fail the
4381 * qemu compile where we compile with -Werror.)
4382 */
Blue Swirlc075a722012-08-09 20:21:25 +00004383 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00004384}
4385EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004386if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004387 epoll_create1=yes
4388fi
4389
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004390# check for sendfile support
4391sendfile=no
4392cat > $TMPC << EOF
4393#include <sys/sendfile.h>
4394
4395int main(void)
4396{
4397 return sendfile(0, 0, 0, 0);
4398}
4399EOF
4400if compile_prog "" "" ; then
4401 sendfile=yes
4402fi
4403
Riku Voipio51834342014-06-22 11:25:42 +01004404# check for timerfd support (glibc 2.8 and newer)
4405timerfd=no
4406cat > $TMPC << EOF
4407#include <sys/timerfd.h>
4408
4409int main(void)
4410{
4411 return(timerfd_create(CLOCK_REALTIME, 0));
4412}
4413EOF
4414if compile_prog "" "" ; then
4415 timerfd=yes
4416fi
4417
Riku Voipio9af5c902014-08-12 15:58:57 +03004418# check for setns and unshare support
4419setns=no
4420cat > $TMPC << EOF
4421#include <sched.h>
4422
4423int main(void)
4424{
4425 int ret;
4426 ret = setns(0, 0);
4427 ret = unshare(0);
4428 return ret;
4429}
4430EOF
4431if compile_prog "" "" ; then
4432 setns=yes
4433fi
4434
Aleksandar Markovic38860a02016-10-10 13:23:29 +02004435# clock_adjtime probe
4436clock_adjtime=no
4437cat > $TMPC <<EOF
4438#include <time.h>
4439
4440int main(void)
4441{
4442 return clock_adjtime(0, 0);
4443}
4444EOF
4445clock_adjtime=no
4446if compile_prog "" "" ; then
4447 clock_adjtime=yes
4448fi
4449
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02004450# syncfs probe
4451syncfs=no
4452cat > $TMPC <<EOF
4453#include <unistd.h>
4454
4455int main(void)
4456{
4457 return syncfs(0);
4458}
4459EOF
4460syncfs=no
4461if compile_prog "" "" ; then
4462 syncfs=yes
4463fi
4464
pbrookcc8ae6d2006-04-23 17:57:59 +00004465# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004466if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004467 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004468 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004469 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004470 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004471 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004472 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004473 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004474 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004475fi
4476
Stefan Weilf514f412009-10-11 12:44:07 +02004477# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004478byteswap_h=no
4479cat > $TMPC << EOF
4480#include <byteswap.h>
4481int main(void) { return bswap_32(0); }
4482EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004483if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004484 byteswap_h=yes
4485fi
4486
Stefan Weil75f13592013-01-05 12:17:38 +01004487# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004488bswap_h=no
4489cat > $TMPC << EOF
4490#include <sys/endian.h>
4491#include <sys/types.h>
4492#include <machine/bswap.h>
4493int main(void) { return bswap32(0); }
4494EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004495if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004496 bswap_h=yes
4497fi
4498
aliguorida93a1f2008-12-12 20:02:52 +00004499##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004500# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004501if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004502 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004503 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004504 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4505 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004506 else
4507 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004508 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004509 fi
4510 libiscsi="no"
4511 fi
4512fi
4513
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004514##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004515# Do we need libm
4516cat > $TMPC << EOF
4517#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004518int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004519EOF
4520if compile_prog "" "" ; then
4521 :
4522elif compile_prog "" "-lm" ; then
4523 LIBS="-lm $LIBS"
4524 libs_qga="-lm $libs_qga"
4525else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004526 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004527fi
4528
4529##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004530# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004531# uClibc provides 2 versions of clock_gettime(), one with realtime
4532# support and one without. This means that the clock_gettime() don't
4533# need -lrt. We still need it for timer_create() so we check for this
4534# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004535cat > $TMPC <<EOF
4536#include <signal.h>
4537#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004538int main(void) {
4539 timer_create(CLOCK_REALTIME, NULL, NULL);
4540 return clock_gettime(CLOCK_REALTIME, NULL);
4541}
aliguorida93a1f2008-12-12 20:02:52 +00004542EOF
4543
Juan Quintela52166aa2009-08-03 14:46:03 +02004544if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004545 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004546# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004547elif compile_prog "" "$pthread_lib -lrt" ; then
4548 LIBS="$LIBS -lrt"
4549 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004550fi
4551
Blue Swirl31ff5042009-09-12 12:33:07 +00004552if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Peter Maydell78723752017-09-04 18:19:00 +01004553 "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004554 libs_softmmu="-lutil $libs_softmmu"
4555fi
4556
Blue Swirlde5071c2009-09-12 09:58:46 +00004557##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004558# spice probe
4559if test "$spice" != "no" ; then
4560 cat > $TMPC << EOF
4561#include <spice.h>
4562int main(void) { spice_server_new(); return 0; }
4563EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004564 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4565 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004566 if $pkg_config --atleast-version=0.12.0 spice-server && \
4567 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004568 compile_prog "$spice_cflags" "$spice_libs" ; then
4569 spice="yes"
4570 libs_softmmu="$libs_softmmu $spice_libs"
4571 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004572 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4573 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004574 else
4575 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004576 feature_not_found "spice" \
4577 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004578 fi
4579 spice="no"
4580 fi
4581fi
4582
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004583# check for smartcard support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004584if test "$smartcard" != "no"; then
Michal Privoznik0f5c6422018-04-03 12:34:37 +02004585 if $pkg_config --atleast-version=2.5.1 libcacard; then
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004586 libcacard_cflags=$($pkg_config --cflags libcacard)
4587 libcacard_libs=$($pkg_config --libs libcacard)
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004588 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004589 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004590 if test "$smartcard" = "yes"; then
4591 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004592 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004593 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004594 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004595fi
4596
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004597# check for libusb
4598if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004599 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004600 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004601 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4602 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004603 else
4604 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004605 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004606 fi
4607 libusb="no"
4608 fi
4609fi
4610
Hans de Goede69354a82011-07-19 11:04:10 +02004611# check for usbredirparser for usb network redirection support
4612if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004613 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004614 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004615 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4616 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004617 else
4618 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004619 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004620 fi
4621 usb_redir="no"
4622 fi
4623fi
4624
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004625##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004626# check if we have VSS SDK headers for win
4627
4628if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4629 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004630 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004631 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4632 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004633 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004634 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4635 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004636 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004637 esac
4638 cat > $TMPC << EOF
4639#define __MIDL_user_allocate_free_DEFINED__
4640#include <inc/win2003/vss.h>
4641int main(void) { return VSS_CTX_BACKUP; }
4642EOF
4643 if compile_prog "$vss_win32_include" "" ; then
4644 guest_agent_with_vss="yes"
4645 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004646 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004647 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004648 else
4649 if test "$vss_win32_sdk" != "" ; then
4650 echo "ERROR: Please download and install Microsoft VSS SDK:"
4651 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4652 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4653 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4654 echo "ERROR: The headers are extracted in the directory \`inc'."
4655 feature_not_found "VSS support"
4656 fi
4657 guest_agent_with_vss="no"
4658 fi
4659fi
4660
4661##########################################
4662# lookup Windows platform SDK (if not specified)
4663# The SDK is needed only to build .tlb (type library) file of guest agent
4664# VSS provider from the source. It is usually unnecessary because the
4665# pre-compiled .tlb file is included.
4666
4667if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4668 if test -z "$win_sdk"; then
4669 programfiles="$PROGRAMFILES"
4670 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4671 if test -n "$programfiles"; then
4672 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4673 else
4674 feature_not_found "Windows SDK"
4675 fi
4676 elif test "$win_sdk" = "no"; then
4677 win_sdk=""
4678 fi
4679fi
4680
4681##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004682# check if mingw environment provides a recent ntddscsi.h
4683if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4684 cat > $TMPC << EOF
4685#include <windows.h>
4686#include <ntddscsi.h>
4687int main(void) {
4688#if !defined(IOCTL_SCSI_GET_ADDRESS)
4689#error Missing required ioctl definitions
4690#endif
4691 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4692 return addr.Lun;
4693}
4694EOF
4695 if compile_prog "" "" ; then
4696 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004697 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004698 fi
4699fi
4700
4701##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004702# virgl renderer probe
4703
4704if test "$virglrenderer" != "no" ; then
4705 cat > $TMPC << EOF
4706#include <virglrenderer.h>
4707int main(void) { virgl_renderer_poll(); return 0; }
4708EOF
4709 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4710 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
Marc-André Lureau47479c52018-05-25 17:36:09 +02004711 virgl_version=$($pkg_config --modversion virglrenderer 2>/dev/null)
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004712 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4713 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4714 virglrenderer="yes"
4715 else
4716 if test "$virglrenderer" = "yes" ; then
4717 feature_not_found "virglrenderer"
4718 fi
4719 virglrenderer="no"
4720 fi
4721fi
4722
4723##########################################
Richard Henderson8ca80762017-09-14 09:41:12 -07004724# capstone
4725
Richard Hendersone219c492017-09-28 09:01:23 -07004726case "$capstone" in
4727 "" | yes)
4728 if $pkg_config capstone; then
4729 capstone=system
Alexey Kardashevskiy123ac0b2018-01-15 13:35:01 +11004730 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
Richard Hendersone219c492017-09-28 09:01:23 -07004731 capstone=git
4732 elif test -e "${source_path}/capstone/Makefile" ; then
4733 capstone=internal
4734 elif test -z "$capstone" ; then
4735 capstone=no
4736 else
4737 feature_not_found "capstone" "Install capstone devel or git submodule"
4738 fi
4739 ;;
4740
4741 system)
4742 if ! $pkg_config capstone; then
4743 feature_not_found "capstone" "Install capstone devel"
4744 fi
4745 ;;
4746esac
4747
4748case "$capstone" in
4749 git | internal)
4750 if test "$capstone" = git; then
4751 git_submodules="${git_submodules} capstone"
4752 fi
4753 mkdir -p capstone
4754 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4755 if test "$mingw32" = "yes"; then
4756 LIBCAPSTONE=capstone.lib
4757 else
4758 LIBCAPSTONE=libcapstone.a
4759 fi
4760 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4761 ;;
4762
4763 system)
Richard Henderson8ca80762017-09-14 09:41:12 -07004764 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4765 LIBS="$($pkg_config --libs capstone) $LIBS"
Richard Hendersone219c492017-09-28 09:01:23 -07004766 ;;
4767
4768 no)
4769 ;;
4770 *)
4771 error_exit "Unknown state for capstone: $capstone"
4772 ;;
4773esac
Richard Henderson8ca80762017-09-14 09:41:12 -07004774
4775##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004776# check if we have fdatasync
4777
4778fdatasync=no
4779cat > $TMPC << EOF
4780#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004781int main(void) {
4782#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4783return fdatasync(0);
4784#else
Stefan Weile172fe12012-04-06 21:33:20 +02004785#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004786#endif
4787}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004788EOF
4789if compile_prog "" "" ; then
4790 fdatasync=yes
4791fi
4792
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004793##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004794# check if we have madvise
4795
4796madvise=no
4797cat > $TMPC << EOF
4798#include <sys/types.h>
4799#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004800#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004801int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4802EOF
4803if compile_prog "" "" ; then
4804 madvise=yes
4805fi
4806
4807##########################################
4808# check if we have posix_madvise
4809
4810posix_madvise=no
4811cat > $TMPC << EOF
4812#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004813#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004814int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4815EOF
4816if compile_prog "" "" ; then
4817 posix_madvise=yes
4818fi
4819
4820##########################################
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02004821# check if we have posix_memalign()
4822
4823posix_memalign=no
4824cat > $TMPC << EOF
4825#include <stdlib.h>
4826int main(void) {
4827 void *p;
4828 return posix_memalign(&p, 8, 8);
4829}
4830EOF
4831if compile_prog "" "" ; then
4832 posix_memalign=yes
4833fi
4834
4835##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004836# check if we have posix_syslog
4837
4838posix_syslog=no
4839cat > $TMPC << EOF
4840#include <syslog.h>
4841int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4842EOF
4843if compile_prog "" "" ; then
4844 posix_syslog=yes
4845fi
4846
4847##########################################
Peter Maydell401bc052017-09-05 13:19:32 +01004848# check if we have sem_timedwait
4849
4850sem_timedwait=no
4851cat > $TMPC << EOF
4852#include <semaphore.h>
4853int main(void) { return sem_timedwait(0, 0); }
4854EOF
4855if compile_prog "" "" ; then
4856 sem_timedwait=yes
4857fi
4858
4859##########################################
Keno Fischer5c99fa32018-06-29 12:32:10 +02004860# check if we have strchrnul
4861
4862strchrnul=no
4863cat > $TMPC << EOF
4864#include <string.h>
4865int main(void);
4866// Use a haystack that the compiler shouldn't be able to constant fold
4867char *haystack = (char*)&main;
4868int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
4869EOF
4870if compile_prog "" "" ; then
4871 strchrnul=yes
4872fi
4873
4874##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004875# check if trace backend exists
4876
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004877$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004878if test "$?" -ne 0 ; then
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004879 error_exit "invalid trace backends" \
4880 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004881fi
4882
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004883##########################################
4884# For 'ust' backend, test if ust headers are present
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004885if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004886 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004887#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004888int main(void) { return 0; }
4889EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004890 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004891 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004892 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004893 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004894 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004895 fi
4896 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004897 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004898 else
4899 urcu_bp_libs="-lurcu-bp"
4900 fi
4901
4902 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4903 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004904 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004905 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004906 fi
4907fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004908
4909##########################################
4910# For 'dtrace' backend, test if 'dtrace' command is present
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004911if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004912 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004913 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004914 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004915 trace_backend_stap="no"
4916 if has 'stap' ; then
4917 trace_backend_stap="yes"
4918 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004919fi
4920
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004921##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004922# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304923
Peter Maydell7c2acc72013-04-08 12:11:27 +01004924# We prefer ucontext, but it's not always possible. The fallback
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004925# is sigcontext. On Windows the only valid backend is the Windows
4926# specific one.
Peter Maydell7c2acc72013-04-08 12:11:27 +01004927
4928ucontext_works=no
4929if test "$darwin" != "yes"; then
4930 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304931#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004932#ifdef __stub_makecontext
4933#error Ignoring glibc stub makecontext which will always fail
4934#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004935int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304936EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004937 if compile_prog "" "" ; then
4938 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304939 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004940fi
4941
4942if test "$coroutine" = ""; then
4943 if test "$mingw32" = "yes"; then
4944 coroutine=win32
4945 elif test "$ucontext_works" = "yes"; then
4946 coroutine=ucontext
4947 else
4948 coroutine=sigaltstack
4949 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004950else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004951 case $coroutine in
4952 windows)
4953 if test "$mingw32" != "yes"; then
4954 error_exit "'windows' coroutine backend only valid for Windows"
4955 fi
4956 # Unfortunately the user visible backend name doesn't match the
4957 # coroutine-*.c filename for this case, so we have to adjust it here.
4958 coroutine=win32
4959 ;;
4960 ucontext)
4961 if test "$ucontext_works" != "yes"; then
4962 feature_not_found "ucontext"
4963 fi
4964 ;;
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004965 sigaltstack)
Peter Maydell7c2acc72013-04-08 12:11:27 +01004966 if test "$mingw32" = "yes"; then
4967 error_exit "only the 'windows' coroutine backend is valid for Windows"
4968 fi
4969 ;;
4970 *)
4971 error_exit "unknown coroutine backend $coroutine"
4972 ;;
4973 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304974fi
4975
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004976if test "$coroutine_pool" = ""; then
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004977 coroutine_pool=yes
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004978fi
4979
Peter Lieven7d992e42016-09-27 11:58:45 +02004980if test "$debug_stack_usage" = "yes"; then
Peter Lieven7d992e42016-09-27 11:58:45 +02004981 if test "$coroutine_pool" = "yes"; then
4982 echo "WARN: disabling coroutine pool for stack usage debugging"
4983 coroutine_pool=no
4984 fi
4985fi
4986
4987
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304988##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304989# check if we have open_by_handle_at
4990
Stefan Weil4e1797f2012-06-18 22:11:06 +02004991open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304992cat > $TMPC << EOF
4993#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004994#if !defined(AT_EMPTY_PATH)
4995# error missing definition
4996#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004997int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004998#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304999EOF
5000if compile_prog "" "" ; then
5001 open_by_handle_at=yes
5002fi
5003
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305004########################################
5005# check if we have linux/magic.h
5006
5007linux_magic_h=no
5008cat > $TMPC << EOF
5009#include <linux/magic.h>
5010int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01005011 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305012}
5013EOF
5014if compile_prog "" "" ; then
5015 linux_magic_h=yes
5016fi
5017
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005018########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01005019# check whether we can disable warning option with a pragma (this is needed
5020# to silence warnings in the headers of some versions of external libraries).
5021# This test has to be compiled with -Werror as otherwise an unknown pragma is
5022# only a warning.
5023#
5024# If we can't selectively disable warning in the code, disable -Werror so that
5025# the build doesn't fail anyway.
5026
Peter Maydell06d71fa2012-07-30 16:13:07 +01005027pragma_disable_unused_but_set=no
5028cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02005029#pragma GCC diagnostic push
Kevin Wolfc95e3082013-02-22 21:08:51 +01005030#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02005031#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01005032
Peter Maydell06d71fa2012-07-30 16:13:07 +01005033int main(void) {
5034 return 0;
5035}
5036EOF
5037if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005038 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01005039else
5040 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01005041fi
5042
5043########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02005044# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005045
5046valgrind_h=no
5047cat > $TMPC << EOF
5048#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005049int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005050 return 0;
5051}
5052EOF
5053if compile_prog "" "" ; then
5054 valgrind_h=yes
5055fi
5056
5057########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005058# check if environ is declared
5059
5060has_environ=no
5061cat > $TMPC << EOF
5062#include <unistd.h>
5063int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00005064 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005065 return 0;
5066}
5067EOF
5068if compile_prog "" "" ; then
5069 has_environ=yes
5070fi
5071
Richard Henderson76a347e2012-12-28 14:17:02 -08005072########################################
5073# check if cpuid.h is usable.
5074
Richard Henderson76a347e2012-12-28 14:17:02 -08005075cat > $TMPC << EOF
5076#include <cpuid.h>
5077int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00005078 unsigned a, b, c, d;
5079 int max = __get_cpuid_max(0, 0);
5080
5081 if (max >= 1) {
5082 __cpuid(1, a, b, c, d);
5083 }
5084
5085 if (max >= 7) {
5086 __cpuid_count(7, 0, a, b, c, d);
5087 }
5088
5089 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08005090}
5091EOF
5092if compile_prog "" "" ; then
5093 cpuid_h=yes
5094fi
5095
Richard Henderson5dd89902017-07-18 18:40:18 -10005096##########################################
5097# avx2 optimization requirement check
5098#
5099# There is no point enabling this if cpuid.h is not usable,
5100# since we won't be able to select the new routines.
5101
Liam Merwick86583a02018-10-19 21:38:59 +01005102if test "$cpuid_h" = "yes" -a "$avx2_opt" != "no"; then
Richard Henderson5dd89902017-07-18 18:40:18 -10005103 cat > $TMPC << EOF
5104#pragma GCC push_options
5105#pragma GCC target("avx2")
5106#include <cpuid.h>
5107#include <immintrin.h>
5108static int bar(void *a) {
5109 __m256i x = *(__m256i *)a;
5110 return _mm256_testz_si256(x, x);
5111}
5112int main(int argc, char *argv[]) { return bar(argv[0]); }
5113EOF
5114 if compile_object "" ; then
5115 avx2_opt="yes"
Liam Merwick86583a02018-10-19 21:38:59 +01005116 else
5117 avx2_opt="no"
Richard Henderson5dd89902017-07-18 18:40:18 -10005118 fi
5119fi
5120
Richard Hendersonf5401662013-02-16 12:46:59 -08005121########################################
5122# check if __[u]int128_t is usable.
5123
5124int128=no
5125cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01005126#if defined(__clang_major__) && defined(__clang_minor__)
5127# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
5128# error __int128_t does not work in CLANG before 3.2
5129# endif
5130#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08005131__int128_t a;
5132__uint128_t b;
5133int main (void) {
5134 a = a + b;
5135 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01005136 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08005137 return 0;
5138}
5139EOF
5140if compile_prog "" "" ; then
5141 int128=yes
5142fi
Richard Henderson76a347e2012-12-28 14:17:02 -08005143
Richard Henderson7ebee432016-06-29 21:10:59 -07005144#########################################
5145# See if 128-bit atomic operations are supported.
5146
5147atomic128=no
5148if test "$int128" = "yes"; then
5149 cat > $TMPC << EOF
5150int main(void)
5151{
5152 unsigned __int128 x = 0, y = 0;
5153 y = __atomic_load_16(&x, 0);
5154 __atomic_store_16(&x, y, 0);
5155 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5156 return 0;
5157}
5158EOF
5159 if compile_prog "" "" ; then
5160 atomic128=yes
5161 fi
5162fi
5163
Richard Hendersone6cd4bb2018-08-15 16:31:47 -07005164cmpxchg128=no
5165if test "$int128" = yes -a "$atomic128" = no; then
5166 cat > $TMPC << EOF
5167int main(void)
5168{
5169 unsigned __int128 x = 0, y = 0;
5170 __sync_val_compare_and_swap_16(&x, y, x);
5171 return 0;
5172}
5173EOF
5174 if compile_prog "" "" ; then
5175 cmpxchg128=yes
5176 fi
5177fi
5178
Richard Hendersondf79b992016-09-02 12:23:57 -07005179#########################################
5180# See if 64-bit atomic operations are supported.
5181# Note that without __atomic builtins, we can only
5182# assume atomic loads/stores max at pointer size.
5183
5184cat > $TMPC << EOF
5185#include <stdint.h>
5186int main(void)
5187{
5188 uint64_t x = 0, y = 0;
5189#ifdef __ATOMIC_RELAXED
5190 y = __atomic_load_8(&x, 0);
5191 __atomic_store_8(&x, y, 0);
5192 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5193 __atomic_exchange_8(&x, y, 0);
5194 __atomic_fetch_add_8(&x, y, 0);
5195#else
5196 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5197 __sync_lock_test_and_set(&x, y);
5198 __sync_val_compare_and_swap(&x, y, 0);
5199 __sync_fetch_and_add(&x, y);
5200#endif
5201 return 0;
5202}
5203EOF
5204if compile_prog "" "" ; then
5205 atomic64=yes
5206fi
5207
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005208########################################
Richard Hendersondb432672017-09-15 14:11:45 -07005209# See if 16-byte vector operations are supported.
5210# Even without a vector unit the compiler may expand these.
5211# There is a bug in old GCC for PPC that crashes here.
5212# Unfortunately it's the system compiler for Centos 7.
5213
5214cat > $TMPC << EOF
5215typedef unsigned char U1 __attribute__((vector_size(16)));
5216typedef unsigned short U2 __attribute__((vector_size(16)));
5217typedef unsigned int U4 __attribute__((vector_size(16)));
5218typedef unsigned long long U8 __attribute__((vector_size(16)));
5219typedef signed char S1 __attribute__((vector_size(16)));
5220typedef signed short S2 __attribute__((vector_size(16)));
5221typedef signed int S4 __attribute__((vector_size(16)));
5222typedef signed long long S8 __attribute__((vector_size(16)));
5223static U1 a1, b1;
5224static U2 a2, b2;
5225static U4 a4, b4;
5226static U8 a8, b8;
5227static S1 c1;
5228static S2 c2;
5229static S4 c4;
5230static S8 c8;
5231static int i;
Laurent Vivier74912f62018-03-28 15:31:52 +02005232void helper(void *d, void *a, int shift, int i);
5233void helper(void *d, void *a, int shift, int i)
5234{
5235 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5236 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5237 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5238 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5239}
Richard Hendersondb432672017-09-15 14:11:45 -07005240int main(void)
5241{
5242 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5243 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5244 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5245 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5246 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5247 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5248 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5249 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5250 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5251 return 0;
5252}
5253EOF
5254
5255vector16=no
5256if compile_prog "" "" ; then
5257 vector16=yes
5258fi
5259
5260########################################
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005261# check if getauxval is available.
5262
5263getauxval=no
5264cat > $TMPC << EOF
5265#include <sys/auxv.h>
5266int main(void) {
5267 return getauxval(AT_HWCAP) == 0;
5268}
5269EOF
5270if compile_prog "" "" ; then
5271 getauxval=yes
5272fi
5273
John Snowfd0e6052015-03-25 18:57:39 -04005274########################################
5275# check if ccache is interfering with
5276# semantic analysis of macros
5277
John Snow5e4dfd32015-10-28 13:56:40 -04005278unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04005279ccache_cpp2=no
5280cat > $TMPC << EOF
5281static const int Z = 1;
5282#define fn() ({ Z; })
5283#define TAUT(X) ((X) == Z)
5284#define PAREN(X, Y) (X == Y)
5285#define ID(X) (X)
5286int main(int argc, char *argv[])
5287{
5288 int x = 0, y = 0;
5289 x = ID(x);
5290 x = fn();
5291 fn();
5292 if (PAREN(x, y)) return 0;
5293 if (TAUT(Z)) return 0;
5294 return 0;
5295}
5296EOF
5297
5298if ! compile_object "-Werror"; then
5299 ccache_cpp2=yes
5300fi
5301
John Snowb553a042015-11-03 15:43:42 -05005302#################################################
5303# clang does not support glibc + FORTIFY_SOURCE.
5304
5305if test "$fortify_source" != "no"; then
5306 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
5307 fortify_source="no";
Peter Maydelle1890912017-06-26 16:25:24 +01005308 elif test -n "$cxx" && has $cxx &&
John Snowcfcc7c12015-11-12 11:29:49 -05005309 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05005310 fortify_source="no";
5311 else
5312 fortify_source="yes"
5313 fi
5314fi
5315
Fam Zheng1efad062018-06-01 17:26:43 +08005316###############################################
5317# Check if copy_file_range is provided by glibc
5318have_copy_file_range=no
5319cat > $TMPC << EOF
5320#include <unistd.h>
5321int main(void) {
5322 copy_file_range(0, NULL, 0, NULL, 0, 0);
5323 return 0;
5324}
5325EOF
5326if compile_prog "" "" ; then
5327 have_copy_file_range=yes
5328fi
5329
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305330##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04005331# check if struct fsxattr is available via linux/fs.h
5332
5333have_fsxattr=no
5334cat > $TMPC << EOF
5335#include <linux/fs.h>
5336struct fsxattr foo;
5337int main(void) {
5338 return 0;
5339}
5340EOF
5341if compile_prog "" "" ; then
5342 have_fsxattr=yes
5343fi
5344
Peter Maydellb66e10e2016-06-08 18:34:32 +01005345##########################################
Paolo Bonzinia40161c2018-02-16 10:05:23 +01005346# check for usable membarrier system call
5347if test "$membarrier" = "yes"; then
5348 have_membarrier=no
5349 if test "$mingw32" = "yes" ; then
5350 have_membarrier=yes
5351 elif test "$linux" = "yes" ; then
5352 cat > $TMPC << EOF
5353 #include <linux/membarrier.h>
5354 #include <sys/syscall.h>
5355 #include <unistd.h>
5356 #include <stdlib.h>
5357 int main(void) {
5358 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5359 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5360 exit(0);
5361 }
5362EOF
5363 if compile_prog "" "" ; then
5364 have_membarrier=yes
5365 fi
5366 fi
5367 if test "$have_membarrier" = "no"; then
5368 feature_not_found "membarrier" "membarrier system call not available"
5369 fi
5370else
5371 # Do not enable it by default even for Mingw32, because it doesn't
5372 # work on Wine.
5373 membarrier=no
5374fi
5375
5376##########################################
Peter Maydellb66e10e2016-06-08 18:34:32 +01005377# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02005378have_rtnetlink=no
5379cat > $TMPC << EOF
5380#include <linux/rtnetlink.h>
5381int main(void) {
5382 return IFLA_PROTO_DOWN;
5383}
5384EOF
5385if compile_prog "" "" ; then
5386 have_rtnetlink=yes
5387fi
5388
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01005389##########################################
5390# check for usable AF_VSOCK environment
5391have_af_vsock=no
5392cat > $TMPC << EOF
5393#include <errno.h>
5394#include <sys/types.h>
5395#include <sys/socket.h>
5396#if !defined(AF_VSOCK)
5397# error missing AF_VSOCK flag
5398#endif
5399#include <linux/vm_sockets.h>
5400int main(void) {
5401 int sock, ret;
5402 struct sockaddr_vm svm;
5403 socklen_t len = sizeof(svm);
5404 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5405 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5406 if ((ret == -1) && (errno == ENOTCONN)) {
5407 return 0;
5408 }
5409 return -1;
5410}
5411EOF
5412if compile_prog "" "" ; then
5413 have_af_vsock=yes
5414fi
5415
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005416##########################################
5417# check for usable AF_ALG environment
5418hava_afalg=no
5419cat > $TMPC << EOF
5420#include <errno.h>
5421#include <sys/types.h>
5422#include <sys/socket.h>
5423#include <linux/if_alg.h>
5424int main(void) {
5425 int sock;
5426 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5427 return sock;
5428}
5429EOF
5430if compile_prog "" "" ; then
5431 have_afalg=yes
5432fi
5433if test "$crypto_afalg" = "yes"
5434then
5435 if test "$have_afalg" != "yes"
5436 then
5437 error_exit "AF_ALG requested but could not be detected"
5438 fi
5439fi
5440
5441
James Clarke6969ec62016-06-06 12:02:50 +01005442#################################################
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005443# Check to see if we have the Hypervisor framework
Peter Maydelld2d08522018-01-08 17:10:42 +00005444if [ "$darwin" = "yes" ] ; then
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005445 cat > $TMPC << EOF
5446#include <Hypervisor/hv.h>
5447int main() { return 0;}
5448EOF
5449 if ! compile_object ""; then
5450 hvf='no'
5451 else
5452 hvf='yes'
5453 LDFLAGS="-framework Hypervisor $LDFLAGS"
5454 fi
5455fi
5456
5457#################################################
James Clarke6969ec62016-06-06 12:02:50 +01005458# Sparc implicitly links with --relax, which is
5459# incompatible with -r, so --no-relax should be
5460# given. It does no harm to give it on other
5461# platforms too.
5462
5463# Note: the prototype is needed since QEMU_CFLAGS
5464# contains -Wmissing-prototypes
5465cat > $TMPC << EOF
5466extern int foo(void);
5467int foo(void) { return 0; }
5468EOF
5469if ! compile_object ""; then
5470 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5471fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01005472for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5473 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5474 LD_REL_FLAGS=$i
5475 break
5476 fi
5477done
5478if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5479 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01005480fi
5481
Jan Vesely277abf12016-04-29 13:15:23 -04005482##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05005483# check for sysmacros.h
5484
5485have_sysmacros=no
5486cat > $TMPC << EOF
5487#include <sys/sysmacros.h>
5488int main(void) {
5489 return makedev(0, 0);
5490}
5491EOF
5492if compile_prog "" "" ; then
5493 have_sysmacros=yes
5494fi
5495
5496##########################################
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005497# Veritas HyperScale block driver VxHS
5498# Check if libvxhs is installed
5499
5500if test "$vxhs" != "no" ; then
5501 cat > $TMPC <<EOF
5502#include <stdint.h>
5503#include <qnio/qnio_api.h>
5504
5505void *vxhs_callback;
5506
5507int main(void) {
5508 iio_init(QNIO_VERSION, vxhs_callback);
5509 return 0;
5510}
5511EOF
5512 vxhs_libs="-lvxhs -lssl"
5513 if compile_prog "" "$vxhs_libs" ; then
5514 vxhs=yes
5515 else
5516 if test "$vxhs" = "yes" ; then
5517 feature_not_found "vxhs block device" "Install libvxhs See github"
5518 fi
5519 vxhs=no
5520 fi
5521fi
5522
5523##########################################
Andreas Grapentin49e00a12017-03-14 17:59:53 +01005524# check for _Static_assert()
5525
5526have_static_assert=no
5527cat > $TMPC << EOF
5528_Static_assert(1, "success");
5529int main(void) {
5530 return 0;
5531}
5532EOF
5533if compile_prog "" "" ; then
5534 have_static_assert=yes
5535fi
5536
5537##########################################
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02005538# check for utmpx.h, it is missing e.g. on OpenBSD
5539
5540have_utmpx=no
5541cat > $TMPC << EOF
5542#include <utmpx.h>
5543struct utmpx user_info;
5544int main(void) {
5545 return 0;
5546}
5547EOF
5548if compile_prog "" "" ; then
5549 have_utmpx=yes
5550fi
5551
5552##########################################
Marc-André Lureau247724c2018-01-16 16:11:51 +01005553# checks for sanitizers
5554
Marc-André Lureau247724c2018-01-16 16:11:51 +01005555have_asan=no
5556have_ubsan=no
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005557have_asan_iface_h=no
5558have_asan_iface_fiber=no
Marc-André Lureau247724c2018-01-16 16:11:51 +01005559
5560if test "$sanitizers" = "yes" ; then
Marc-André Lureaub9f44da2018-02-15 22:25:47 +01005561 write_c_skeleton
Marc-André Lureau247724c2018-01-16 16:11:51 +01005562 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5563 have_asan=yes
5564 fi
Marc-André Lureaub9f44da2018-02-15 22:25:47 +01005565
5566 # we could use a simple skeleton for flags checks, but this also
5567 # detect the static linking issue of ubsan, see also:
5568 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5569 cat > $TMPC << EOF
5570#include <stdlib.h>
5571int main(void) {
5572 void *tmp = malloc(10);
5573 return *(int *)(tmp + 2);
5574}
5575EOF
Marc-André Lureau247724c2018-01-16 16:11:51 +01005576 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5577 have_ubsan=yes
5578 fi
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005579
5580 if check_include "sanitizer/asan_interface.h" ; then
5581 have_asan_iface_h=yes
5582 fi
5583
5584 cat > $TMPC << EOF
5585#include <sanitizer/asan_interface.h>
5586int main(void) {
5587 __sanitizer_start_switch_fiber(0, 0, 0);
5588 return 0;
5589}
5590EOF
5591 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5592 have_asan_iface_fiber=yes
5593 fi
Marc-André Lureau247724c2018-01-16 16:11:51 +01005594fi
5595
5596##########################################
Alex Bennée51a12b52018-04-04 14:24:39 +01005597# Docker and cross-compiler support
5598#
5599# This is specifically for building test
5600# cases for foreign architectures, not
5601# cross-compiling QEMU itself.
5602
5603if has "docker"; then
5604 docker=$($python $source_path/tests/docker/docker.py probe)
5605fi
5606
5607##########################################
Junyan He17824402018-07-18 15:47:59 +08005608# check for libpmem
5609
5610if test "$libpmem" != "no"; then
5611 if $pkg_config --exists "libpmem"; then
5612 libpmem="yes"
5613 libpmem_libs=$($pkg_config --libs libpmem)
5614 libpmem_cflags=$($pkg_config --cflags libpmem)
5615 libs_softmmu="$libs_softmmu $libpmem_libs"
5616 QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags"
5617 else
5618 if test "$libpmem" = "yes" ; then
5619 feature_not_found "libpmem" "Install nvml or pmdk"
5620 fi
5621 libpmem="no"
5622 fi
5623fi
5624
5625##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02005626# End of CC checks
5627# After here, no more $cc or $ld runs
5628
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005629write_c_skeleton
5630
Blue Swirl1d728c32012-05-01 18:45:39 +00005631if test "$gcov" = "yes" ; then
5632 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5633 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05005634elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02005635 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Paolo Bonzini48e56d52018-03-06 11:32:44 +01005636elif test "$debug" = "no"; then
5637 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005638fi
Juan Quintelaa316e372009-09-30 01:10:55 +02005639
Marc-André Lureau247724c2018-01-16 16:11:51 +01005640if test "$have_asan" = "yes"; then
5641 CFLAGS="-fsanitize=address $CFLAGS"
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005642 if test "$have_asan_iface_h" = "no" ; then
5643 echo "ASAN build enabled, but ASAN header missing." \
5644 "Without code annotation, the report may be inferior."
5645 elif test "$have_asan_iface_fiber" = "no" ; then
5646 echo "ASAN build enabled, but ASAN header is too old." \
5647 "Without code annotation, the report may be inferior."
5648 fi
Marc-André Lureau247724c2018-01-16 16:11:51 +01005649fi
5650if test "$have_ubsan" = "yes"; then
5651 CFLAGS="-fsanitize=undefined $CFLAGS"
5652fi
5653
Peter Lieven6542aa92014-02-03 10:26:13 +01005654##########################################
5655# Do we have libnfs
5656if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01005657 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01005658 libnfs="yes"
5659 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01005660 else
5661 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08005662 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01005663 fi
5664 libnfs="no"
5665 fi
5666fi
Blue Swirl1d728c32012-05-01 18:45:39 +00005667
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +02005668##########################################
5669# Do we have libudev
5670if test "$libudev" != "no" ; then
5671 if $pkg_config libudev && test "$static" != "yes"; then
5672 libudev="yes"
5673 libudev_libs=$($pkg_config --libs libudev)
5674 else
5675 libudev="no"
5676 fi
5677fi
5678
Peter Maydell6ca026c2012-07-18 15:10:18 +01005679# Now we've finished running tests it's OK to add -Werror to the compiler flags
5680if test "$werror" = "yes"; then
5681 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5682fi
5683
Juan Quintelae86ecd42009-08-03 14:45:59 +02005684if test "$solaris" = "no" ; then
5685 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02005686 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005687 fi
5688fi
5689
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005690# test if pod2man has --utf8 option
5691if pod2man --help | grep -q utf8; then
5692 POD2MAN="pod2man --utf8"
5693else
5694 POD2MAN="pod2man"
5695fi
5696
Blue Swirl952afb72010-09-19 08:36:34 +00005697# Use ASLR, no-SEH and DEP if available
5698if test "$mingw32" = "yes" ; then
5699 for flag in --dynamicbase --no-seh --nxcompat; do
Christian Borntraegere9a35912017-08-23 12:16:23 +02005700 if ld_has $flag ; then
Blue Swirl952afb72010-09-19 08:36:34 +00005701 LDFLAGS="-Wl,$flag $LDFLAGS"
5702 fi
5703 done
5704fi
5705
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03005706qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08005707qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03005708qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06005709qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02005710
Kamil Rytarowskie0580342017-07-14 09:33:44 +01005711# We can only support ivshmem if we have eventfd
5712if [ "$eventfd" = "yes" ]; then
5713 ivshmem=yes
5714fi
5715
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005716tools=""
5717if test "$want_tools" = "yes" ; then
Gerd Hoffmann72d277a2018-09-25 09:56:42 +02005718 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005719 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5720 tools="qemu-nbd\$(EXESUF) $tools"
Kamil Rytarowskib1449ed2017-07-14 09:33:45 +01005721 fi
5722 if [ "$ivshmem" = "yes" ]; then
David Marchanda75eb032014-09-08 11:17:48 +02005723 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005724 fi
Viktor Prutyanov3fa2d382018-08-29 15:41:25 +03005725 if [ "$posix" = "yes" ] && [ "$curl" = "yes" ]; then
5726 tools="elf2dmp $tools"
5727 fi
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005728fi
5729if test "$softmmu" = yes ; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005730 if test "$linux" = yes; then
5731 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02005732 virtfs=yes
5733 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5734 else
5735 if test "$virtfs" = yes; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005736 error_exit "VirtFS requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05305737 fi
Andreas Färber17500372012-05-01 01:12:03 +02005738 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02005739 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005740 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5741 mpath=yes
5742 else
5743 if test "$mpath" = yes; then
5744 error_exit "Multipath requires libmpathpersist devel"
5745 fi
5746 mpath=no
5747 fi
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005748 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5749 else
5750 if test "$virtfs" = yes; then
5751 error_exit "VirtFS is supported only on Linux"
5752 fi
5753 virtfs=no
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005754 if test "$mpath" = yes; then
5755 error_exit "Multipath is supported only on Linux"
5756 fi
5757 mpath=no
M. Mohan Kumar17bff522011-12-14 13:58:42 +05305758 fi
Laurent Vivierff69fd82017-10-19 21:16:06 +02005759 if test "$xkbcommon" = "yes"; then
5760 tools="qemu-keymap\$(EXESUF) $tools"
5761 fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005762fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005763
5764# Probe for guest agent support/options
5765
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005766if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04005767 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05005768 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005769 guest_agent=yes
5770 elif [ "$guest_agent" != yes ]; then
5771 guest_agent=no
5772 else
5773 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02005774 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02005775fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005776
Michael Roth9d6bc272015-08-26 10:49:13 -05005777# Guest agent Window MSI package
5778
5779if test "$guest_agent" != yes; then
5780 if test "$guest_agent_msi" = yes; then
5781 error_exit "MSI guest agent package requires guest agent enabled"
5782 fi
5783 guest_agent_msi=no
5784elif test "$mingw32" != "yes"; then
5785 if test "$guest_agent_msi" = "yes"; then
5786 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5787 fi
5788 guest_agent_msi=no
5789elif ! has wixl; then
5790 if test "$guest_agent_msi" = "yes"; then
5791 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5792 fi
5793 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05005794else
5795 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5796 # disabled explicitly
5797 if test "$guest_agent_msi" != "no"; then
5798 guest_agent_msi=yes
5799 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005800fi
5801
Michael Roth1a349042015-08-26 11:14:31 -05005802if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05005803 if test "$guest_agent_with_vss" = "yes"; then
5804 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5805 fi
5806
5807 if test "$QEMU_GA_MANUFACTURER" = ""; then
5808 QEMU_GA_MANUFACTURER=QEMU
5809 fi
5810
5811 if test "$QEMU_GA_DISTRO" = ""; then
5812 QEMU_GA_DISTRO=Linux
5813 fi
5814
5815 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02005816 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05005817 fi
5818
Stefan Weil89138852016-05-16 15:10:20 +02005819 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05005820
5821 case "$cpu" in
5822 x86_64)
5823 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5824 ;;
5825 i386)
5826 QEMU_GA_MSI_ARCH="-D Arch=32"
5827 ;;
5828 *)
5829 error_exit "CPU $cpu not supported for building installation package"
5830 ;;
5831 esac
5832fi
5833
Paolo Bonzinica35f782010-05-26 16:08:29 +02005834# Mac OS X ships with a broken assembler
5835roms=
5836if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5837 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5838 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01005839 # Different host OS linkers have different ideas about the name of the ELF
Brad Smithc65d5e42017-11-07 18:46:11 -05005840 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5841 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5842 for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
Peter Maydelle57218b2016-08-08 17:11:28 +01005843 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5844 ld_i386_emulation="$emu"
5845 roms="optionrom"
5846 break
5847 fi
5848 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02005849fi
Andreas Färberd0384d12011-05-01 18:23:56 +02005850if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11005851 roms="$roms spapr-rtas"
5852fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005853
Christian Borntraeger9933c302013-04-23 01:23:03 +00005854if test "$cpu" = "s390x" ; then
5855 roms="$roms s390-ccw"
5856fi
5857
Richard Henderson964c6fa2013-06-21 19:10:16 -07005858# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005859if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005860 textseg_addr=
5861 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07005862 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5863 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07005864 textseg_addr=0x60000000
5865 ;;
5866 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07005867 # A 256M aligned address, high in the address space, with enough
5868 # room for the code_gen_buffer above it before the stack.
5869 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07005870 ;;
5871 esac
5872 if [ -n "$textseg_addr" ]; then
5873 cat > $TMPC <<EOF
5874 int main(void) { return 0; }
5875EOF
5876 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5877 if ! compile_prog "" "$textseg_ldflags"; then
5878 # In case ld does not support -Ttext-segment, edit the default linker
5879 # script via sed to set the .text start addr. This is needed on FreeBSD
5880 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005881 if ! $ld --verbose >/dev/null 2>&1; then
5882 error_exit \
5883 "We need to link the QEMU user mode binaries at a" \
5884 "specific text address. Unfortunately your linker" \
5885 "doesn't support either the -Ttext-segment option or" \
5886 "printing the default linker script with --verbose." \
5887 "If you don't want the user mode binaries, pass the" \
5888 "--disable-user option to configure."
5889 fi
5890
Richard Henderson964c6fa2013-06-21 19:10:16 -07005891 $ld --verbose | sed \
5892 -e '1,/==================================================/d' \
5893 -e '/==================================================/,$d' \
5894 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5895 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5896 textseg_ldflags="-Wl,-T../config-host.ld"
5897 fi
5898 fi
5899fi
5900
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005901# Check that the C++ compiler exists and works with the C compiler.
5902# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5903if has $cxx; then
5904 cat > $TMPC <<EOF
5905int c_function(void);
5906int main(void) { return c_function(); }
5907EOF
5908
5909 compile_object
5910
5911 cat > $TMPCXX <<EOF
5912extern "C" {
5913 int c_function(void);
5914}
5915int c_function(void) { return 42; }
5916EOF
5917
5918 update_cxxflags
5919
5920 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5921 # C++ compiler $cxx works ok with C compiler $cc
5922 :
5923 else
5924 echo "C++ compiler $cxx does not work with C compiler $cc"
5925 echo "Disabling C++ specific optional code"
5926 cxx=
5927 fi
5928else
5929 echo "No C++ compiler available; disabling C++ specific optional code"
5930 cxx=
5931fi
5932
Cole Robinson02d34f62016-05-06 14:03:09 -04005933echo_version() {
5934 if test "$1" = "yes" ; then
5935 echo "($2)"
5936 fi
5937}
5938
Jan Kiszka50e12062014-10-02 10:03:55 +02005939# prepend pixman and ftd flags after all config tests are done
5940QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03005941QEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS"
Jan Kiszka50e12062014-10-02 10:03:55 +02005942libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005943
bellard43ce4df2003-06-09 19:53:12 +00005944echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005945echo "BIOS directory $(eval echo $qemu_datadir)"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005946echo "firmware path $(eval echo $firmwarepath)"
Stefan Weil89138852016-05-16 15:10:20 +02005947echo "binary directory $(eval echo $bindir)"
5948echo "library directory $(eval echo $libdir)"
5949echo "module directory $(eval echo $qemu_moddir)"
5950echo "libexec directory $(eval echo $libexecdir)"
5951echo "include directory $(eval echo $includedir)"
5952echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005953if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005954echo "local state directory $(eval echo $local_statedir)"
5955echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005956echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005957else
5958echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005959echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005960fi
bellard5a671352003-10-01 00:13:48 +00005961echo "Source path $source_path"
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005962echo "GIT binary $git"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005963echo "GIT submodules $git_submodules"
bellard43ce4df2003-06-09 19:53:12 +00005964echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005965echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005966echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005967echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005968echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005969echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005970echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005971echo "LDFLAGS $LDFLAGS"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03005972echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005973echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005974echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005975echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005976if test "$slirp" = "yes" ; then
5977 echo "smbd $smbd"
5978fi
Fam Zheng17969262014-02-10 14:48:56 +08005979echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00005980echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00005981echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00005982echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +00005983echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00005984echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00005985echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00005986echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00005987echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00005988if test "$darwin" = "yes" ; then
5989 echo "Cocoa support $cocoa"
5990fi
Stefan Weil89138852016-05-16 15:10:20 +02005991echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5992echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005993echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02005994echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005995echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005996echo "GNUTLS support $gnutls"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005997echo "libgcrypt $gcrypt"
Stefan Weil89138852016-05-16 15:10:20 +02005998echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005999echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00006000echo "curses support $curses"
Marc-André Lureau47479c52018-05-25 17:36:09 +02006001echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
Alexander Graf769ce762009-05-11 17:41:42 +02006002echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00006003echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00006004echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08006005echo "Block whitelist (rw) $block_drv_rw_whitelist"
6006echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05306007echo "VirtFS support $virtfs"
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006008echo "Multipath support $mpath"
Jes Sorensen821601e2011-03-16 13:33:36 +01006009echo "VNC support $vnc"
6010if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01006011 echo "VNC SASL support $vnc_sasl"
6012 echo "VNC JPEG support $vnc_jpeg"
6013 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01006014fi
blueswir131422552007-04-16 18:27:06 +00006015if test -n "$sparc_cpu"; then
6016 echo "Target Sparc Arch $sparc_cpu"
6017fi
aliguorie37630c2009-04-22 15:19:10 +00006018echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00006019if test "$xen" = "yes" ; then
6020 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00006021 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00006022fi
aurel322e4d9fb2008-04-08 06:01:02 +00006023echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02006024echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02006025echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02006026echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00006027echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01006028echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02006029echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006030echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00006031echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02006032echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006033echo "HAX support $hax"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05006034echo "HVF support $hvf"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08006035echo "WHPX support $whpx"
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006036echo "TCG support $tcg"
6037if test "$tcg" = "yes" ; then
6038 echo "TCG debug enabled $debug_tcg"
6039 echo "TCG interpreter $tcg_interpreter"
6040fi
Yang Zhong5a22ab72017-12-20 21:16:46 +08006041echo "malloc trim support $malloc_trim"
Michael R. Hines2da776d2013-07-22 10:01:54 -04006042echo "RDMA support $rdma"
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03006043echo "PVRDMA support $pvrdma"
aurel32f652e6a2008-12-16 10:43:48 +00006044echo "fdt support $fdt"
Paolo Bonzinia40161c2018-02-16 10:05:23 +01006045echo "membarrier $membarrier"
aliguoriceb42de2009-04-07 18:43:28 +00006046echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006047echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00006048echo "madvise $madvise"
6049echo "posix_madvise $posix_madvise"
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02006050echo "posix_memalign $posix_memalign"
Corey Bryant47e98652012-01-26 09:42:26 -05006051echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006052echo "vhost-net support $vhost_net"
Gonglei042cea22018-03-01 21:46:28 +08006053echo "vhost-crypto support $vhost_crypto"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00006054echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01006055echo "vhost-vsock support $vhost_vsock"
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006056echo "vhost-user support $vhost_user"
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006057echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01006058if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01006059echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01006060fi
Stefan Weil89138852016-05-16 15:10:20 +02006061echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006062echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01006063echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006064echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006065echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02006066echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006067echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006068echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006069echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01006070echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05006071echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04006072echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05006073echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05006074echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03006075echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01006076echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006077echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02006078echo "debug stack usage $debug_stack_usage"
Paolo Bonziniba59fb72018-06-13 14:23:08 +02006079echo "mutex debugging $debug_mutex"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006080echo "crypto afalg $crypto_afalg"
Bharata B Raoeb100392012-09-24 14:42:45 +05306081echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00006082echo "gcov $gcov_tool"
6083echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05006084echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006085echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006086echo "TPM passthrough $tpm_passthrough"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006087echo "TPM emulator $tpm_emulator"
Paolo Bonzini3556c232013-05-10 14:16:40 +02006088echo "QOM debugging $qom_cast_debug"
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006089echo "Live block migration $live_block_migration"
qiaonuohan607dacd2014-02-18 14:11:30 +08006090echo "lzo support $lzo"
6091echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01006092echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08006093echo "NUMA host support $numa"
Klim Kireeved279a02018-01-12 12:01:19 +03006094echo "libxml2 $libxml2"
Fam Zheng2847b462015-03-26 11:03:12 +08006095echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02006096echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08006097echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006098echo "replication support $replication"
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006099echo "VxHS block device $vxhs"
Jeff Cody2f740132018-11-07 07:36:44 +01006100echo "bochs support $bochs"
6101echo "cloop support $cloop"
6102echo "dmg support $dmg"
6103echo "qcow v1 support $qcow1"
6104echo "vdi support $vdi"
6105echo "vvfat support $vvfat"
6106echo "qed support $qed"
6107echo "parallels support $parallels"
6108echo "sheepdog support $sheepdog"
Richard Henderson8ca80762017-09-14 09:41:12 -07006109echo "capstone $capstone"
Alex Bennée51a12b52018-04-04 14:24:39 +01006110echo "docker $docker"
Junyan He17824402018-07-18 15:47:59 +08006111echo "libpmem support $libpmem"
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +02006112echo "libudev $libudev"
bellard67b915a2004-03-31 23:37:16 +00006113
Stefan Weil1ba16962011-07-29 22:40:45 +02006114if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00006115echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00006116fi
bellard97a847b2003-08-10 21:36:04 +00006117
Daniel P. Berrangee52c6ba2018-01-15 14:25:33 +00006118if test "$sdlabi" = "1.2"; then
6119 echo
6120 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
6121 echo "WARNING: future releases. Please switch to using SDL 2.0"
6122fi
6123
Peter Maydell898be3e2017-03-21 14:31:57 +00006124if test "$supported_cpu" = "no"; then
6125 echo
6126 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6127 echo
6128 echo "CPU host architecture $cpu support is not currently maintained."
6129 echo "The QEMU project intends to remove support for this host CPU in"
6130 echo "a future release if nobody volunteers to maintain it and to"
6131 echo "provide a build host for our continuous integration setup."
6132 echo "configure has succeeded and you can continue to build, but"
6133 echo "if you care about QEMU on this platform you should contact"
6134 echo "us upstream at qemu-devel@nongnu.org."
6135fi
6136
6137if test "$supported_os" = "no"; then
6138 echo
6139 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6140 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00006141 echo "Host OS $targetos support is not currently maintained."
6142 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00006143 echo "a future release if nobody volunteers to maintain it and to"
6144 echo "provide a build host for our continuous integration setup."
6145 echo "configure has succeeded and you can continue to build, but"
6146 echo "if you care about QEMU on this platform you should contact"
6147 echo "us upstream at qemu-devel@nongnu.org."
6148fi
6149
Juan Quintela98ec69a2009-07-16 18:34:18 +02006150config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00006151
Stefan Weildbd99ae2013-01-01 18:33:44 +01006152echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6153
Juan Quintela98ec69a2009-07-16 18:34:18 +02006154echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006155echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006156
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02006157echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02006158echo "prefix=$prefix" >> $config_host_mak
6159echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03006160echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04006161echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02006162echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02006163echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02006164echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03006165echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03006166echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02006167echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03006168echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08006169echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02006170if test "$mingw32" = "no" ; then
6171 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6172fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04006173echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06006174echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02006175echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01006176echo "GIT=$git" >> $config_host_mak
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01006177echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01006178echo "GIT_UPDATE=$git_update" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006179
Juan Quintela98ec69a2009-07-16 18:34:18 +02006180echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02006181
aurel32f8393942009-04-13 18:45:38 +00006182if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006183 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00006184fi
aliguori1625af82009-04-05 17:41:02 +00006185if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07006186 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00006187fi
bellard7d132992003-03-06 23:23:54 +00006188if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02006189 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00006190fi
bellard67b915a2004-03-31 23:37:16 +00006191if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006192 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02006193 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00006194 version_major=${rc_version%%.*}
6195 rc_version=${rc_version#*.}
6196 version_minor=${rc_version%%.*}
6197 rc_version=${rc_version#*.}
6198 version_subminor=${rc_version%%.*}
6199 version_micro=0
6200 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6201 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04006202 if test "$guest_agent_with_vss" = "yes" ; then
6203 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05006204 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04006205 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6206 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05006207 if test "$guest_agent_ntddscsi" = "yes" ; then
Tomáš Golembiovský76dc75c2018-10-23 13:23:16 +02006208 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
Michael Roth50cbebb2015-07-07 18:10:09 -05006209 fi
Michael Roth1a349042015-08-26 11:14:31 -05006210 if test "$guest_agent_msi" = "yes"; then
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08006211 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
Yossi Hindin9dacf322015-05-06 14:57:40 +03006212 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6213 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6214 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6215 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6216 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6217 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6218 fi
pbrook210fa552007-02-27 21:04:49 +00006219else
Juan Quintela35f4df22009-07-27 16:13:07 +02006220 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00006221fi
blueswir1128ab2f2008-08-15 18:33:42 +00006222
Mark McLoughlindffcb712009-10-22 17:49:11 +01006223if test "$linux" = "yes" ; then
6224 echo "CONFIG_LINUX=y" >> $config_host_mak
6225fi
6226
bellard83fb7ad2004-07-05 21:25:26 +00006227if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006228 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00006229fi
malcb29fe3e2008-11-18 01:42:22 +00006230
bellardec530c82006-04-25 22:36:06 +00006231if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006232 echo "CONFIG_SOLARIS=y" >> $config_host_mak
bellardec530c82006-04-25 22:36:06 +00006233fi
Andreas Färber179cf402010-09-20 00:50:43 +02006234if test "$haiku" = "yes" ; then
6235 echo "CONFIG_HAIKU=y" >> $config_host_mak
6236fi
bellard97a847b2003-08-10 21:36:04 +00006237if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006238 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00006239fi
Stefan Weil1ba16962011-07-29 22:40:45 +02006240if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006241 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00006242fi
bellardc20709a2004-04-21 23:27:19 +00006243if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006244 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04006245 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00006246fi
ths8a16d272008-07-19 09:56:24 +00006247if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006248 echo "CONFIG_VDE=y" >> $config_host_mak
Fam Zhenge2ad6f12017-09-07 16:35:52 +08006249 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00006250fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01006251if test "$netmap" = "yes" ; then
6252 echo "CONFIG_NETMAP=y" >> $config_host_mak
6253fi
Gonglei015a33b2014-07-01 20:58:08 +08006254if test "$l2tpv3" = "yes" ; then
6255 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6256fi
Corey Bryant47e98652012-01-26 09:42:26 -05006257if test "$cap_ng" = "yes" ; then
6258 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6259fi
Juan Quintela2358a492009-07-27 16:13:25 +02006260echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00006261for drv in $audio_drv_list; do
Gerd Hoffmann1ef1ec22018-03-01 11:05:46 +01006262 def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Gerd Hoffmannce3dc032018-03-06 08:40:50 +01006263 case "$drv" in
Gerd Hoffmann051c7d52018-03-06 08:40:53 +01006264 alsa | oss | pa | sdl)
Gerd Hoffmannce3dc032018-03-06 08:40:50 +01006265 echo "$def=m" >> $config_host_mak ;;
6266 *)
6267 echo "$def=y" >> $config_host_mak ;;
6268 esac
malc0c58ac12008-06-25 21:04:05 +00006269done
Fam Zhengb1149912017-09-07 16:29:13 +08006270echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6271echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6272echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6273echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6274echo "OSS_LIBS=$oss_libs" >> $config_host_mak
Juan Quintela67f86e82009-08-03 14:46:59 +02006275if test "$audio_pt_int" = "yes" ; then
6276 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6277fi
malcd5631632009-10-10 01:13:41 +04006278if test "$audio_win_int" = "yes" ; then
6279 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6280fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08006281echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6282echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01006283if test "$vnc" = "yes" ; then
6284 echo "CONFIG_VNC=y" >> $config_host_mak
6285fi
aliguori2f9606b2009-03-06 20:27:28 +00006286if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006287 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00006288fi
Jes Sorensen821601e2011-03-16 13:33:36 +01006289if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02006290 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02006291fi
Jes Sorensen821601e2011-03-16 13:33:36 +01006292if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02006293 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02006294fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02006295if test "$xkbcommon" = "yes" ; then
6296 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6297 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6298fi
aliguori76655d62009-03-06 20:27:37 +00006299if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006300 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00006301fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01006302if test "$xfs" = "yes" ; then
6303 echo "CONFIG_XFS=y" >> $config_host_mak
6304fi
Stefan Weil89138852016-05-16 15:10:20 +02006305qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02006306echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02006307echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006308echo "SRC_PATH=$source_path" >> $config_host_mak
Alex Bennée2b1f35b2018-07-04 07:30:11 +01006309echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02006310if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006311 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00006312fi
Fam Zheng17969262014-02-10 14:48:56 +08006313if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08006314 # $shacmd can generate a hash started with digit, which the compiler doesn't
6315 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02006316 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006317 echo "CONFIG_MODULES=y" >> $config_host_mak
6318fi
Gerd Hoffmann87815952018-03-01 11:05:42 +01006319if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6320 echo "CONFIG_X11=y" >> $config_host_mak
6321 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6322 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6323fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02006324if test "$sdl" = "yes" ; then
Gerd Hoffmann96400a12018-03-01 11:05:47 +01006325 echo "CONFIG_SDL=m" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04006326 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02006327 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
Fam Zheng8ecc89f2017-09-07 16:29:11 +08006328 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00006329fi
6330if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006331 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00006332fi
6333if test "$curses" = "yes" ; then
Gerd Hoffmann2373f7d2018-03-01 11:05:45 +01006334 echo "CONFIG_CURSES=m" >> $config_host_mak
6335 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6336 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00006337fi
Riku Voipio099d6b02009-05-05 12:10:04 +03006338if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006339 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03006340fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01006341if test "$accept4" = "yes" ; then
6342 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6343fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05306344if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006345 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05306346fi
Riku Voipioc2882b92009-08-12 15:08:24 +03006347if test "$eventfd" = "yes" ; then
6348 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6349fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02006350if test "$memfd" = "yes" ; then
6351 echo "CONFIG_MEMFD=y" >> $config_host_mak
6352fi
Cortland Tölva955727d2018-10-08 09:35:19 -07006353if test "$have_usbfs" = "yes" ; then
6354 echo "CONFIG_USBFS=y" >> $config_host_mak
6355fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03006356if test "$fallocate" = "yes" ; then
6357 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6358fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01006359if test "$fallocate_punch_hole" = "yes" ; then
6360 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6361fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03006362if test "$fallocate_zero_range" = "yes" ; then
6363 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6364fi
Kevin Wolfed911432014-09-29 17:12:59 +02006365if test "$posix_fallocate" = "yes" ; then
6366 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6367fi
Peter Maydellc727f472011-01-06 11:05:10 +00006368if test "$sync_file_range" = "yes" ; then
6369 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6370fi
Peter Maydelldace20d2011-01-10 13:11:24 +00006371if test "$fiemap" = "yes" ; then
6372 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6373fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03006374if test "$dup3" = "yes" ; then
6375 echo "CONFIG_DUP3=y" >> $config_host_mak
6376fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01006377if test "$ppoll" = "yes" ; then
6378 echo "CONFIG_PPOLL=y" >> $config_host_mak
6379fi
Alex Blighcd758dd2013-08-21 16:02:44 +01006380if test "$prctl_pr_set_timerslack" = "yes" ; then
6381 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6382fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00006383if test "$epoll" = "yes" ; then
6384 echo "CONFIG_EPOLL=y" >> $config_host_mak
6385fi
6386if test "$epoll_create1" = "yes" ; then
6387 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6388fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00006389if test "$sendfile" = "yes" ; then
6390 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6391fi
Riku Voipio51834342014-06-22 11:25:42 +01006392if test "$timerfd" = "yes" ; then
6393 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6394fi
Riku Voipio9af5c902014-08-12 15:58:57 +03006395if test "$setns" = "yes" ; then
6396 echo "CONFIG_SETNS=y" >> $config_host_mak
6397fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02006398if test "$clock_adjtime" = "yes" ; then
6399 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6400fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02006401if test "$syncfs" = "yes" ; then
6402 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6403fi
aurel323b3f24a2009-04-15 16:12:13 +00006404if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006405 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00006406fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00006407if test "$inotify1" = "yes" ; then
6408 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6409fi
Peter Maydell401bc052017-09-05 13:19:32 +01006410if test "$sem_timedwait" = "yes" ; then
6411 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6412fi
Keno Fischer5c99fa32018-06-29 12:32:10 +02006413if test "$strchrnul" = "yes" ; then
6414 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6415fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02006416if test "$byteswap_h" = "yes" ; then
6417 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6418fi
6419if test "$bswap_h" = "yes" ; then
6420 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6421fi
Alexander Graf769ce762009-05-11 17:41:42 +02006422if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006423 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02006424 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006425 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02006426fi
aurel322e4d9fb2008-04-08 06:01:02 +00006427if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006428 echo "CONFIG_BRLAPI=y" >> $config_host_mak
Fam Zheng8eca2882017-09-07 16:47:00 +08006429 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00006430fi
balrogfb599c92008-09-28 23:49:55 +00006431if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006432 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02006433 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00006434fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006435if test "$gtk" = "yes" ; then
Gerd Hoffmanne0fb1292018-03-01 11:05:44 +01006436 echo "CONFIG_GTK=m" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006437 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006438 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02006439 if test "$gtk_gl" = "yes" ; then
6440 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6441 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006442fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01006443echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01006444if test "$gnutls" = "yes" ; then
6445 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6446fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006447if test "$gcrypt" = "yes" ; then
6448 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08006449 if test "$gcrypt_hmac" = "yes" ; then
6450 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6451 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01006452fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006453if test "$nettle" = "yes" ; then
6454 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02006455 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01006456fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01006457if test "$tasn1" = "yes" ; then
6458 echo "CONFIG_TASN1=y" >> $config_host_mak
6459fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00006460if test "$have_ifaddrs_h" = "yes" ; then
6461 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6462fi
Eric Blake6b39b062016-10-11 10:46:23 -05006463if test "$have_broken_size_max" = "yes" ; then
6464 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6465fi
Jan Vesely277abf12016-04-29 13:15:23 -04006466
6467# Work around a system header bug with some kernel/XFS header
6468# versions where they both try to define 'struct fsxattr':
6469# xfs headers will not try to redefine structs from linux headers
6470# if this macro is set.
6471if test "$have_fsxattr" = "yes" ; then
6472 echo "HAVE_FSXATTR=y" >> $config_host_mak
6473fi
Fam Zheng1efad062018-06-01 17:26:43 +08006474if test "$have_copy_file_range" = "yes" ; then
6475 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6476fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006477if test "$vte" = "yes" ; then
6478 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006479 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
Gerd Hoffmanne0fb1292018-03-01 11:05:44 +01006480 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006481fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02006482if test "$virglrenderer" = "yes" ; then
6483 echo "CONFIG_VIRGL=y" >> $config_host_mak
6484 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6485 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6486fi
aliguorie37630c2009-04-22 15:19:10 +00006487if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02006488 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00006489 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00006490 if test "$xen_pv_domain_build" = "yes" ; then
6491 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6492 fi
aliguorie37630c2009-04-22 15:19:10 +00006493fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02006494if test "$linux_aio" = "yes" ; then
6495 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6496fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006497if test "$attr" = "yes" ; then
6498 echo "CONFIG_ATTR=y" >> $config_host_mak
6499fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02006500if test "$libattr" = "yes" ; then
6501 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6502fi
Meador Inge983eef52012-02-24 14:00:42 +05306503if test "$virtfs" = "yes" ; then
6504 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006505fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006506if test "$mpath" = "yes" ; then
6507 echo "CONFIG_MPATH=y" >> $config_host_mak
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03006508 if test "$mpathpersist_new_api" = "yes"; then
6509 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6510 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006511fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00006512if test "$vhost_scsi" = "yes" ; then
6513 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6514fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006515if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03006516 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6517fi
Gonglei042cea22018-03-01 21:46:28 +08006518if test "$vhost_crypto" = "yes" ; then
6519 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6520fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01006521if test "$vhost_vsock" = "yes" ; then
6522 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6523fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006524if test "$vhost_user" = "yes" ; then
6525 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6526fi
ths77755342008-11-27 15:45:16 +00006527if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006528 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00006529fi
aliguoribf9298b2008-12-05 20:05:26 +00006530if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006531 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00006532fi
aliguoriceb42de2009-04-07 18:43:28 +00006533if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006534 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00006535fi
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03006536if test "$fdt" != "no" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02006537 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00006538fi
Paolo Bonzinia40161c2018-02-16 10:05:23 +01006539if test "$membarrier" = "yes" ; then
6540 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6541fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03006542if test "$signalfd" = "yes" ; then
6543 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6544fi
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006545if test "$tcg" = "yes"; then
6546 echo "CONFIG_TCG=y" >> $config_host_mak
6547 if test "$tcg_interpreter" = "yes" ; then
6548 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6549 fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02006550fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006551if test "$fdatasync" = "yes" ; then
6552 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6553fi
Andreas Färbere78815a2010-09-25 11:26:05 +00006554if test "$madvise" = "yes" ; then
6555 echo "CONFIG_MADVISE=y" >> $config_host_mak
6556fi
6557if test "$posix_madvise" = "yes" ; then
6558 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6559fi
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02006560if test "$posix_memalign" = "yes" ; then
6561 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6562fi
bellard97a847b2003-08-10 21:36:04 +00006563
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01006564if test "$spice" = "yes" ; then
6565 echo "CONFIG_SPICE=y" >> $config_host_mak
6566fi
6567
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006568if test "$smartcard" = "yes" ; then
6569 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Fam Zheng7b62bf52017-09-07 16:29:16 +08006570 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6571 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02006572fi
6573
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006574if test "$libusb" = "yes" ; then
6575 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
Fam Zhengb878b652017-09-07 16:29:17 +08006576 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6577 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006578fi
6579
Hans de Goede69354a82011-07-19 11:04:10 +02006580if test "$usb_redir" = "yes" ; then
6581 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
Fam Zhengcc7923f2017-09-07 16:29:18 +08006582 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6583 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
Hans de Goede69354a82011-07-19 11:04:10 +02006584fi
6585
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006586if test "$opengl" = "yes" ; then
6587 echo "CONFIG_OPENGL=y" >> $config_host_mak
6588 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006589 if test "$opengl_dmabuf" = "yes" ; then
6590 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6591 fi
Michael Walle20ff0752011-03-07 23:32:39 +01006592fi
6593
Yang Zhong5a22ab72017-12-20 21:16:46 +08006594if test "$malloc_trim" = "yes" ; then
6595 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6596fi
6597
Liang Li99f2dbd2016-03-08 13:53:16 +08006598if test "$avx2_opt" = "yes" ; then
6599 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6600fi
6601
qiaonuohan607dacd2014-02-18 14:11:30 +08006602if test "$lzo" = "yes" ; then
6603 echo "CONFIG_LZO=y" >> $config_host_mak
6604fi
6605
6606if test "$snappy" = "yes" ; then
6607 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6608fi
6609
Peter Wu6b383c02015-01-06 18:48:14 +01006610if test "$bzip2" = "yes" ; then
6611 echo "CONFIG_BZIP2=y" >> $config_host_mak
6612 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6613fi
6614
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006615if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006616 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006617 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6618 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006619fi
6620
Peter Lieven6542aa92014-02-03 10:26:13 +01006621if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04006622 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6623 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01006624fi
6625
Eduardo Otubof7945732012-08-14 18:44:05 -03006626if test "$seccomp" = "yes"; then
6627 echo "CONFIG_SECCOMP=y" >> $config_host_mak
Fam Zhengc3883e12017-09-07 16:53:16 +08006628 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6629 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
Eduardo Otubof7945732012-08-14 18:44:05 -03006630fi
6631
bellard83fb7ad2004-07-05 21:25:26 +00006632# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00006633if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006634 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00006635fi
6636
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01006637if test "$localtime_r" = "yes" ; then
6638 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6639fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02006640if test "$qom_cast_debug" = "yes" ; then
6641 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6642fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006643if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006644 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006645 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6646 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006647fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06006648
Peter Maydell7c2acc72013-04-08 12:11:27 +01006649echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006650if test "$coroutine_pool" = "yes" ; then
6651 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6652else
6653 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6654fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05306655
Peter Lieven7d992e42016-09-27 11:58:45 +02006656if test "$debug_stack_usage" = "yes" ; then
6657 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6658fi
6659
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006660if test "$crypto_afalg" = "yes" ; then
6661 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6662fi
6663
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05306664if test "$open_by_handle_at" = "yes" ; then
6665 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6666fi
6667
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05306668if test "$linux_magic_h" = "yes" ; then
6669 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6670fi
6671
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01006672if test "$pragma_diagnostic_available" = "yes" ; then
6673 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01006674fi
6675
Kevin Wolf3f4349d2012-06-29 13:40:27 +02006676if test "$valgrind_h" = "yes" ; then
6677 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6678fi
6679
Marc-André Lureaud83414e2018-01-16 16:11:52 +01006680if test "$have_asan_iface_fiber" = "yes" ; then
6681 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6682fi
6683
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03006684if test "$has_environ" = "yes" ; then
6685 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6686fi
6687
Richard Henderson76a347e2012-12-28 14:17:02 -08006688if test "$cpuid_h" = "yes" ; then
6689 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6690fi
6691
Richard Hendersonf5401662013-02-16 12:46:59 -08006692if test "$int128" = "yes" ; then
6693 echo "CONFIG_INT128=y" >> $config_host_mak
6694fi
6695
Richard Henderson7ebee432016-06-29 21:10:59 -07006696if test "$atomic128" = "yes" ; then
6697 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6698fi
6699
Richard Hendersone6cd4bb2018-08-15 16:31:47 -07006700if test "$cmpxchg128" = "yes" ; then
6701 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
6702fi
6703
Richard Hendersondf79b992016-09-02 12:23:57 -07006704if test "$atomic64" = "yes" ; then
6705 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6706fi
6707
Richard Hendersondb432672017-09-15 14:11:45 -07006708if test "$vector16" = "yes" ; then
6709 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6710fi
6711
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08006712if test "$getauxval" = "yes" ; then
6713 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6714fi
6715
Bharata B Raoeb100392012-09-24 14:42:45 +05306716if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006717 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006718 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6719 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05306720fi
6721
Jeff Codyd85fa9e2016-04-05 10:40:09 -04006722if test "$glusterfs_xlator_opt" = "yes" ; then
6723 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6724fi
6725
Bharata B Rao0c14fb42013-07-16 21:47:42 +05306726if test "$glusterfs_discard" = "yes" ; then
6727 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6728fi
6729
Niels de Vosdf3a4292017-05-28 12:01:14 +05306730if test "$glusterfs_fallocate" = "yes" ; then
6731 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6732fi
6733
Bharata B Rao7c815372013-12-21 14:51:25 +05306734if test "$glusterfs_zerofill" = "yes" ; then
6735 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6736fi
6737
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006738if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006739 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006740 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6741 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006742fi
6743
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006744if test "$live_block_migration" = "yes" ; then
6745 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6746fi
6747
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006748if test "$tpm" = "yes"; then
6749 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006750 # TPM passthrough support?
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006751 if test "$tpm_passthrough" = "yes"; then
6752 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6753 fi
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006754 # TPM emulator support?
6755 if test "$tpm_emulator" = "yes"; then
6756 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6757 fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006758fi
6759
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006760echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6761if have_backend "nop"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006762 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05306763fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006764if have_backend "simple"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006765 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6766 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02006767 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01006768fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03006769if have_backend "log"; then
6770 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
LluĂ­s6d8a7642011-08-31 20:30:43 +02006771fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006772if have_backend "ust"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006773 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6774fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006775if have_backend "dtrace"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006776 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6777 if test "$trace_backend_stap" = "yes" ; then
6778 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6779 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00006780fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006781if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006782 if test "$linux" = "yes" ; then
6783 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006784 else
Stewart Smith21684af2014-01-24 12:39:10 +11006785 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006786 fi
6787fi
Paul Durrant0a852412016-08-04 14:44:14 +01006788if have_backend "syslog"; then
6789 if test "$posix_syslog" = "yes" ; then
6790 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6791 else
6792 feature_not_found "syslog(trace backend)" "syslog not available"
6793 fi
6794fi
Prerna Saxena9410b562010-07-13 09:26:32 +01006795echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6796
Michael R. Hines2da776d2013-07-22 10:01:54 -04006797if test "$rdma" = "yes" ; then
6798 echo "CONFIG_RDMA=y" >> $config_host_mak
Fam Zheng392fb642017-09-07 16:42:30 +08006799 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
Michael R. Hines2da776d2013-07-22 10:01:54 -04006800fi
6801
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03006802if test "$pvrdma" = "yes" ; then
6803 echo "CONFIG_PVRDMA=y" >> $config_host_mak
6804fi
6805
Laurent Vivier575b22b2016-06-02 22:14:15 +02006806if test "$have_rtnetlink" = "yes" ; then
6807 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6808fi
6809
Klim Kireeved279a02018-01-12 12:01:19 +03006810if test "$libxml2" = "yes" ; then
6811 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6812 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6813 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6814fi
6815
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006816if test "$replication" = "yes" ; then
6817 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6818fi
6819
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01006820if test "$have_af_vsock" = "yes" ; then
6821 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6822fi
6823
Christopher Covington4d043512016-12-28 15:04:33 -05006824if test "$have_sysmacros" = "yes" ; then
6825 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6826fi
6827
Andreas Grapentin49e00a12017-03-14 17:59:53 +01006828if test "$have_static_assert" = "yes" ; then
6829 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6830fi
6831
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02006832if test "$have_utmpx" = "yes" ; then
6833 echo "HAVE_UTMPX=y" >> $config_host_mak
6834fi
6835
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006836if test "$ivshmem" = "yes" ; then
6837 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6838fi
Richard Hendersone219c492017-09-28 09:01:23 -07006839if test "$capstone" != "no" ; then
Richard Henderson8ca80762017-09-14 09:41:12 -07006840 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6841fi
Paolo Bonziniba59fb72018-06-13 14:23:08 +02006842if test "$debug_mutex" = "yes" ; then
6843 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
6844fi
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006845
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00006846# Hold two types of flag:
6847# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6848# a thread we have a handle to
6849# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6850# platform
6851if test "$pthread_setname_np" = "yes" ; then
6852 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6853 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6854fi
6855
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006856if test "$vxhs" = "yes" ; then
6857 echo "CONFIG_VXHS=y" >> $config_host_mak
6858 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6859fi
6860
Junyan He17824402018-07-18 15:47:59 +08006861if test "$libpmem" = "yes" ; then
6862 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
6863fi
6864
Jeff Cody2f740132018-11-07 07:36:44 +01006865if test "$bochs" = "yes" ; then
6866 echo "CONFIG_BOCHS=y" >> $config_host_mak
6867fi
6868if test "$cloop" = "yes" ; then
6869 echo "CONFIG_CLOOP=y" >> $config_host_mak
6870fi
6871if test "$dmg" = "yes" ; then
6872 echo "CONFIG_DMG=y" >> $config_host_mak
6873fi
6874if test "$qcow1" = "yes" ; then
6875 echo "CONFIG_QCOW1=y" >> $config_host_mak
6876fi
6877if test "$vdi" = "yes" ; then
6878 echo "CONFIG_VDI=y" >> $config_host_mak
6879fi
6880if test "$vvfat" = "yes" ; then
6881 echo "CONFIG_VVFAT=y" >> $config_host_mak
6882fi
6883if test "$qed" = "yes" ; then
6884 echo "CONFIG_QED=y" >> $config_host_mak
6885fi
6886if test "$parallels" = "yes" ; then
6887 echo "CONFIG_PARALLELS=y" >> $config_host_mak
6888fi
6889if test "$sheepdog" = "yes" ; then
6890 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
6891fi
6892
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006893if test "$tcg_interpreter" = "yes"; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006894 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006895elif test "$ARCH" = "sparc64" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006896 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006897elif test "$ARCH" = "s390x" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006898 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006899elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006900 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07006901elif test "$ARCH" = "ppc64" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006902 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006903else
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006904 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006905fi
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006906QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006907
Juan Quintela98ec69a2009-07-16 18:34:18 +02006908echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006909echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006910echo "MAKE=$make" >> $config_host_mak
6911echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04006912echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6913echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03006914echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6915echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00006916echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006917echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006918if $iasl -h > /dev/null 2>&1; then
6919 echo "IASL=$iasl" >> $config_host_mak
6920fi
Juan Quintela804edf22009-07-27 16:12:49 +02006921echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04006922echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01006923echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006924echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01006925echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006926echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006927echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006928echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006929echo "OBJCOPY=$objcopy" >> $config_host_mak
6930echo "LD=$ld" >> $config_host_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006931echo "RANLIB=$ranlib" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02006932echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00006933echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006934echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006935echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02006936echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01006937echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01006938echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006939if test "$sparse" = "yes" ; then
6940 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01006941 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02006942 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006943 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6944 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6945fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01006946if test "$cross_prefix" != ""; then
6947 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6948else
6949 echo "AUTOCONF_HOST := " >> $config_host_mak
6950fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006951echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006952echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03006953echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01006954echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01006955echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02006956echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02006957echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01006958echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006959echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006960echo "DSOSUF=$DSOSUF" >> $config_host_mak
6961echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05006962echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01006963echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6964echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02006965echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01006966echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00006967if test "$gcov" = "yes" ; then
6968 echo "CONFIG_GCOV=y" >> $config_host_mak
6969 echo "GCOV=$gcov_tool" >> $config_host_mak
6970fi
Juan Quintela804edf22009-07-27 16:12:49 +02006971
Alex Bennée51a12b52018-04-04 14:24:39 +01006972if test "$docker" != "no"; then
6973 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
6974fi
6975
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +02006976if test "$libudev" != "no"; then
6977 echo "CONFIG_LIBUDEV=y" >> $config_host_mak
6978 echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
6979fi
6980
Peter Maydell6efd7512011-11-30 11:59:04 +00006981# use included Linux headers
6982if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00006983 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00006984 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006985 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01006986 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00006987 ;;
Thomas Hutha69dc532018-08-21 13:27:48 +02006988 ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01006989 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00006990 ;;
6991 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01006992 linux_arch=s390
6993 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01006994 aarch64)
6995 linux_arch=arm64
6996 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01006997 mips64)
6998 linux_arch=mips
6999 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01007000 *)
7001 # For most CPUs the kernel architecture name and QEMU CPU name match.
7002 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00007003 ;;
7004 esac
Peter Maydell08312a62012-08-03 13:51:25 +01007005 # For non-KVM architectures we will not have asm headers
7006 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
7007 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
7008 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00007009fi
7010
bellard1d14ffa2005-10-30 18:58:22 +00007011for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00007012target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02007013config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02007014target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00007015target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02007016
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007017case "$target_name" in
Thomas Hutha69dc532018-08-21 13:27:48 +02007018 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
Juan Quintelaea2d6a32009-07-16 18:34:10 +02007019 target_bigendian=yes
7020 ;;
7021esac
bellard97a847b2003-08-10 21:36:04 +00007022target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00007023target_user_only="no"
ths831b7822007-01-18 20:06:33 +00007024target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00007025target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00007026case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007027 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00007028 target_softmmu="yes"
7029 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007030 ${target_name}-linux-user)
pbrook9e407a82007-05-26 16:38:53 +00007031 target_user_only="yes"
7032 target_linux_user="yes"
7033 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007034 ${target_name}-bsd-user)
blueswir184778502008-10-26 20:33:16 +00007035 target_user_only="yes"
7036 target_bsd_user="yes"
7037 ;;
pbrook9e407a82007-05-26 16:38:53 +00007038 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01007039 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00007040 exit 1
7041 ;;
7042esac
ths831b7822007-01-18 20:06:33 +00007043
Alex Bennéed75402b2018-04-04 20:27:05 +01007044target_compiler=""
7045target_compiler_static=""
Alex Bennée716a5072018-04-10 12:19:40 +01007046target_compiler_cflags=""
Alex Bennéed75402b2018-04-04 20:27:05 +01007047
bellard97a847b2003-08-10 21:36:04 +00007048mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02007049echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00007050
pbrooke5fe0c52006-06-11 13:32:59 +00007051bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00007052mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02007053interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00007054gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00007055
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007056TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02007057TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02007058TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02007059
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007060case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00007061 i386)
Emilio G. Cota0a7fa002018-08-13 20:52:26 -04007062 mttcg="yes"
Abdallah Bouassidab8158192017-06-01 11:33:15 +02007063 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007064 target_compiler=$cross_cc_i386
Alex Bennée716a5072018-04-10 12:19:40 +01007065 target_compiler_cflags=$cross_cc_ccflags_i386
aurel322408a522008-04-20 20:19:44 +00007066 ;;
7067 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02007068 TARGET_BASE_ARCH=i386
Emilio G. Cota0a7fa002018-08-13 20:52:26 -04007069 mttcg="yes"
Abdallah Bouassidab8158192017-06-01 11:33:15 +02007070 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007071 target_compiler=$cross_cc_x86_64
aurel322408a522008-04-20 20:19:44 +00007072 ;;
7073 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11007074 mttcg="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007075 target_compiler=$cross_cc_alpha
aurel322408a522008-04-20 20:19:44 +00007076 ;;
7077 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007078 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00007079 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00007080 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00007081 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007082 target_compiler=$cross_cc_arm
Alex Bennéed422b2b2018-04-13 11:07:58 +01007083 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
aurel322408a522008-04-20 20:19:44 +00007084 ;;
Michael Weiser722dd7b2018-01-11 13:25:32 +00007085 aarch64|aarch64_be)
7086 TARGET_ARCH=aarch64
Alexander Graf6a49fa92013-09-03 20:12:22 +01007087 TARGET_BASE_ARCH=arm
7088 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00007089 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01007090 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007091 target_compiler=$cross_cc_aarch64
Alex Bennéed422b2b2018-04-13 11:07:58 +01007092 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
Alexander Graf6a49fa92013-09-03 20:12:22 +01007093 ;;
aurel322408a522008-04-20 20:19:44 +00007094 cris)
Alex Bennéed75402b2018-04-04 20:27:05 +01007095 target_compiler=$cross_cc_cris
aurel322408a522008-04-20 20:19:44 +00007096 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08007097 hppa)
Richard Henderson7b93dab2018-01-06 16:02:27 -08007098 mttcg="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007099 target_compiler=$cross_cc_hppa
Richard Henderson61766fe2016-12-15 11:26:14 -08007100 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01007101 lm32)
Alex Bennéed75402b2018-04-04 20:27:05 +01007102 target_compiler=$cross_cc_lm32
Michael Walle613a22c2011-02-17 23:45:17 +01007103 ;;
aurel322408a522008-04-20 20:19:44 +00007104 m68k)
aurel322408a522008-04-20 20:19:44 +00007105 bflt="yes"
Laurent Vivier5a4526b2017-06-20 22:51:19 +02007106 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007107 target_compiler=$cross_cc_m68k
aurel322408a522008-04-20 20:19:44 +00007108 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01007109 microblaze|microblazeel)
7110 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02007111 bflt="yes"
Edgar E. Iglesiasbe73ef62018-04-13 18:10:00 +02007112 echo "TARGET_ABI32=y" >> $config_target_mak
Alex Bennéed75402b2018-04-04 20:27:05 +01007113 target_compiler=$cross_cc_microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02007114 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02007115 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007116 TARGET_ARCH=mips
Alex Bennéed75402b2018-04-04 20:27:05 +01007117 target_compiler=$cross_cc_mips
Juan Quintela25be2102009-10-07 02:41:00 +02007118 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007119 ;;
7120 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08007121 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007122 TARGET_BASE_ARCH=mips
Alex Bennéed75402b2018-04-04 20:27:05 +01007123 target_compiler=$cross_cc_mipsn32
Juan Quintela25be2102009-10-07 02:41:00 +02007124 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08007125 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007126 ;;
7127 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007128 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007129 TARGET_BASE_ARCH=mips
Alex Bennéed75402b2018-04-04 20:27:05 +01007130 target_compiler=$cross_cc_mips64
Juan Quintela25be2102009-10-07 02:41:00 +02007131 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007132 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04007133 moxie)
Alex Bennéed75402b2018-04-04 20:27:05 +01007134 target_compiler=$cross_cc_moxie
Anthony Greend15a9c22013-03-18 15:49:25 -04007135 ;;
Marek Vasute6717112017-01-18 23:01:46 +01007136 nios2)
Alex Bennéed75402b2018-04-04 20:27:05 +01007137 target_compiler=$cross_cc_nios2
Marek Vasute6717112017-01-18 23:01:46 +01007138 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08007139 or1k)
Alex Bennéed75402b2018-04-04 20:27:05 +01007140 target_compiler=$cross_cc_or1k
Jia Liue67db062012-07-20 15:50:39 +08007141 TARGET_ARCH=openrisc
7142 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08007143 ;;
aurel322408a522008-04-20 20:19:44 +00007144 ppc)
aurel32c8b35322009-01-24 15:07:34 +00007145 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007146 target_compiler=$cross_cc_powerpc
aurel322408a522008-04-20 20:19:44 +00007147 ;;
aurel322408a522008-04-20 20:19:44 +00007148 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02007149 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02007150 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05307151 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01007152 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007153 target_compiler=$cross_cc_ppc64
aurel322408a522008-04-20 20:19:44 +00007154 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05007155 ppc64le)
7156 TARGET_ARCH=ppc64
7157 TARGET_BASE_ARCH=ppc
7158 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05307159 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01007160 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007161 target_compiler=$cross_cc_ppc64le
Doug Kwan9c351262014-05-29 09:12:21 -05007162 ;;
aurel322408a522008-04-20 20:19:44 +00007163 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007164 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007165 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02007166 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02007167 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01007168 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007169 target_compiler=$cross_cc_ppc64abi32
aurel322408a522008-04-20 20:19:44 +00007170 ;;
Michael Clark25fa1942018-03-03 01:32:59 +13007171 riscv32)
7172 TARGET_BASE_ARCH=riscv
7173 TARGET_ABI_DIR=riscv
7174 mttcg=yes
Alex Bennéed75402b2018-04-04 20:27:05 +01007175 target_compiler=$cross_cc_riscv32
Michael Clark25fa1942018-03-03 01:32:59 +13007176 ;;
7177 riscv64)
7178 TARGET_BASE_ARCH=riscv
7179 TARGET_ABI_DIR=riscv
7180 mttcg=yes
Alex Bennéed75402b2018-04-04 20:27:05 +01007181 target_compiler=$cross_cc_riscv64
Michael Clark25fa1942018-03-03 01:32:59 +13007182 ;;
aurel322408a522008-04-20 20:19:44 +00007183 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007184 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00007185 bflt="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007186 target_compiler=$cross_cc_sh4
aurel322408a522008-04-20 20:19:44 +00007187 ;;
7188 sparc)
Alex Bennéed75402b2018-04-04 20:27:05 +01007189 target_compiler=$cross_cc_sparc
aurel322408a522008-04-20 20:19:44 +00007190 ;;
7191 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02007192 TARGET_BASE_ARCH=sparc
Alex Bennéed75402b2018-04-04 20:27:05 +01007193 target_compiler=$cross_cc_sparc64
aurel322408a522008-04-20 20:19:44 +00007194 ;;
7195 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007196 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007197 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02007198 TARGET_ABI_DIR=sparc
Alex Bennéed75402b2018-04-04 20:27:05 +01007199 target_compiler=$cross_cc_sparc32plus
Juan Quintela25be2102009-10-07 02:41:00 +02007200 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007201 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01007202 s390x)
David Hildenbrand63685bc2018-01-29 13:56:20 +01007203 mttcg=yes
Christian Borntraeger86158a22017-03-08 12:41:14 +01007204 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007205 target_compiler=$cross_cc_s390x
Alexander Graf24e804ec2009-12-05 12:44:22 +01007206 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08007207 tilegx)
Alex Bennéed75402b2018-04-04 20:27:05 +01007208 target_compiler=$cross_cc_tilegx
Chen Gang444e06b2015-08-21 05:43:37 +08007209 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07007210 tricore)
Alex Bennéed75402b2018-04-04 20:27:05 +01007211 target_compiler=$cross_cc_tricore
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07007212 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08007213 unicore32)
Alex Bennéed75402b2018-04-04 20:27:05 +01007214 target_compiler=$cross_cc_unicore32
Guan Xuetaod2fbca92011-04-12 16:27:03 +08007215 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04007216 xtensa|xtensaeb)
7217 TARGET_ARCH=xtensa
Max Filippov02e33e92018-10-19 18:40:20 -07007218 bflt="yes"
Max Filippov9fb40342017-03-06 17:17:43 -08007219 mttcg="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007220 target_compiler=$cross_cc_xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04007221 ;;
aurel322408a522008-04-20 20:19:44 +00007222 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01007223 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00007224 ;;
7225esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02007226# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7227if [ "$TARGET_BASE_ARCH" = "" ]; then
7228 TARGET_BASE_ARCH=$TARGET_ARCH
7229fi
7230
Alex Bennéed75402b2018-04-04 20:27:05 +01007231# Do we have a cross compiler for this target?
7232if has $target_compiler; then
7233
7234 write_c_skeleton
7235
Alex Bennée716a5072018-04-10 12:19:40 +01007236 if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
Alex Bennéed75402b2018-04-04 20:27:05 +01007237 # For host systems we might get away with building without -static
Alex Bennée716a5072018-04-10 12:19:40 +01007238 if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
Alex Bennéed75402b2018-04-04 20:27:05 +01007239 target_compiler=""
7240 else
7241 enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'"
7242 target_compiler_static="n"
7243 fi
7244 else
7245 enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'"
7246 target_compiler_static="y"
7247 fi
7248else
7249 target_compiler=""
7250fi
7251
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02007252symlink "$source_path/Makefile.target" "$target_dir/Makefile"
7253
Daniel P. Berrange99afc912012-08-20 15:31:38 +01007254upper() {
7255 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
7256}
7257
Stefan Weil89138852016-05-16 15:10:20 +02007258target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02007259echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007260echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02007261echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02007262if [ "$TARGET_ABI_DIR" = "" ]; then
7263 TARGET_ABI_DIR=$TARGET_ARCH
7264fi
Juan Quintela25be2102009-10-07 02:41:00 +02007265echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07007266if [ "$HOST_VARIANT_DIR" != "" ]; then
7267 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7268fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02007269
7270if supported_xen_target $target; then
7271 echo "CONFIG_XEN=y" >> $config_target_mak
7272 if test "$xen_pci_passthrough" = yes; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00007273 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
Juan Quintela1b0c87f2009-07-16 18:33:59 +02007274 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02007275fi
7276if supported_kvm_target $target; then
7277 echo "CONFIG_KVM=y" >> $config_target_mak
7278 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02007279 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureaue6a74862017-08-03 11:07:46 +02007280 if test "$vhost_user" = "yes" ; then
7281 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
7282 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02007283 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02007284fi
7285if supported_hax_target $target; then
7286 echo "CONFIG_HAX=y" >> $config_target_mak
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01007287fi
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05007288if supported_hvf_target $target; then
7289 echo "CONFIG_HVF=y" >> $config_target_mak
7290fi
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08007291if supported_whpx_target $target; then
7292 echo "CONFIG_WHPX=y" >> $config_target_mak
7293fi
bellardde83cd02003-06-15 20:25:43 +00007294if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007295 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00007296fi
7297if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007298 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00007299 if test "$mttcg" = "yes" ; then
7300 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7301 fi
bellardde83cd02003-06-15 20:25:43 +00007302fi
bellard997344f2003-10-27 21:10:39 +00007303if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007304 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01007305 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00007306fi
ths831b7822007-01-18 20:06:33 +00007307if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007308 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00007309fi
pbrook56aebc82008-10-11 17:55:29 +00007310list=""
7311if test ! -z "$gdb_xml_files" ; then
7312 for x in $gdb_xml_files; do
7313 list="$list $source_path/gdb-xml/$x"
7314 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02007315 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00007316fi
bellardde83cd02003-06-15 20:25:43 +00007317
pbrooke5fe0c52006-06-11 13:32:59 +00007318if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02007319 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00007320fi
blueswir184778502008-10-26 20:33:16 +00007321if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007322 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00007323fi
bellard5b0753e2005-03-01 21:37:28 +00007324
Alex Bennéed75402b2018-04-04 20:27:05 +01007325if test -n "$target_compiler"; then
7326 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7327
7328 if test -n "$target_compiler_static"; then
7329 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7330 fi
Alex Bennée716a5072018-04-10 12:19:40 +01007331
7332 if test -n "$target_compiler_cflags"; then
7333 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7334 fi
Alex Bennéed75402b2018-04-04 20:27:05 +01007335fi
7336
Alex Bennée716a5072018-04-10 12:19:40 +01007337
Juan Quintela4afddb52009-08-03 14:46:45 +02007338# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02007339
Juan Quintela4afddb52009-08-03 14:46:45 +02007340cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02007341ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02007342
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007343disas_config() {
7344 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7345 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7346}
7347
Juan Quintela64656022009-08-03 14:46:53 +02007348for i in $ARCH $TARGET_BASE_ARCH ; do
7349 case "$i" in
7350 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007351 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02007352 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05007353 aarch64)
7354 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007355 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05007356 fi
7357 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007358 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007359 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00007360 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007361 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00007362 fi
Juan Quintela64656022009-08-03 14:46:53 +02007363 ;;
7364 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007365 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02007366 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07007367 hppa)
7368 disas_config "HPPA"
7369 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07007370 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007371 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02007372 ;;
Michael Walle79368f42012-03-31 19:54:20 +02007373 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007374 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02007375 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007376 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007377 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02007378 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01007379 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007380 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02007381 ;;
7382 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007383 disas_config "MIPS"
Aleksandar Markovic89a955e2018-10-24 17:41:49 +02007384 if test -n "${cxx}"; then
7385 disas_config "NANOMIPS"
7386 fi
Juan Quintela64656022009-08-03 14:46:53 +02007387 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04007388 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007389 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04007390 ;;
Marek Vasute6717112017-01-18 23:01:46 +01007391 nios2)
7392 disas_config "NIOS2"
7393 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08007394 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007395 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08007396 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007397 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007398 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02007399 ;;
Michael Clark25fa1942018-03-03 01:32:59 +13007400 riscv)
7401 disas_config "RISCV"
7402 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01007403 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007404 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02007405 ;;
7406 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007407 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02007408 ;;
7409 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007410 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02007411 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04007412 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007413 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04007414 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007415 esac
7416done
Stefan Weil9195b2c2011-10-19 07:07:18 +02007417if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007418 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02007419fi
Juan Quintela64656022009-08-03 14:46:53 +02007420
Juan Quintela6ee71262009-08-03 14:46:47 +02007421case "$ARCH" in
7422alpha)
7423 # Ensure there's only a single GP
7424 cflags="-msmall-data $cflags"
7425;;
7426esac
7427
Juan Quintelad02c1db2009-08-03 14:46:50 +02007428if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007429 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02007430 if test "$target_linux_user" = "yes" ; then
7431 cflags="-p $cflags"
7432 ldflags="-p $ldflags"
7433 fi
7434 if test "$target_softmmu" = "yes" ; then
7435 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02007436 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02007437 fi
7438fi
7439
Juan Quintela9b8e1112009-08-03 14:46:46 +02007440if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07007441 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02007442fi
Juan Quintelafa282482009-07-22 22:37:39 +02007443
Christian Borntraegere9a35912017-08-23 12:16:23 +02007444# Newer kernels on s390 check for an S390_PGSTE program header and
7445# enable the pgste page table extensions in that case. This makes
7446# the vm.allocate_pgste sysctl unnecessary. We enable this program
7447# header if
7448# - we build on s390x
7449# - we build the system emulation for s390x (qemu-system-s390x)
7450# - KVM is enabled
7451# - the linker supports --s390-pgste
7452if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7453 if ld_has --s390-pgste ; then
7454 ldflags="-Wl,--s390-pgste $ldflags"
7455 fi
7456fi
7457
Juan Quintela25be2102009-10-07 02:41:00 +02007458echo "LDFLAGS+=$ldflags" >> $config_target_mak
7459echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02007460
bellard97a847b2003-08-10 21:36:04 +00007461done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00007462
Alex Bennéed75402b2018-04-04 20:27:05 +01007463if test -n "$enabled_cross_compilers"; then
7464 echo
7465 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7466fi
7467
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03007468if [ "$fdt" = "git" ]; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10007469 echo "config-host.h: subdir-dtc" >> $config_host_mak
7470fi
Richard Hendersone219c492017-09-28 09:01:23 -07007471if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7472 echo "config-host.h: subdir-capstone" >> $config_host_mak
7473fi
7474if test -n "$LIBCAPSTONE"; then
7475 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7476fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10007477
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08007478if test "$numa" = "yes"; then
7479 echo "CONFIG_NUMA=y" >> $config_host_mak
7480fi
7481
John Snowfd0e6052015-03-25 18:57:39 -04007482if test "$ccache_cpp2" = "yes"; then
7483 echo "export CCACHE_CPP2=y" >> $config_host_mak
7484fi
7485
Peter Maydelle29e5c62018-11-02 11:52:38 +00007486# If we're using a separate build tree, set it up now.
7487# DIRS are directories which we simply mkdir in the build tree;
7488# LINKS are things to symlink back into the source tree
7489# (these can be both files and directories).
7490# Caution: do not add files or directories here using wildcards. This
7491# will result in problems later if a new file matching the wildcard is
7492# added to the source tree -- nothing will cause configure to be rerun
7493# so the build tree will be missing the link back to the new file, and
7494# tests might fail. Prefer to keep the relevant files in their own
7495# directory and symlink the directory instead.
Fam Zhengb1fb9a62017-09-05 10:11:58 +08007496DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
Emilio G. Cota3ac1f812018-03-08 21:09:40 -05007497DIRS="$DIRS tests/fp"
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02007498DIRS="$DIRS docs docs/interop fsdev scsi"
Christian Borntraeger9933c302013-04-23 01:23:03 +00007499DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007500DIRS="$DIRS roms/seabios roms/vgabios"
Peter Maydelle29e5c62018-11-02 11:52:38 +00007501LINKS="Makefile tests/tcg/Makefile qdict-test-data.txt"
7502LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7503LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7504LINKS="$LINKS tests/fp/Makefile"
7505LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
7506LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
7507LINKS="$LINKS pc-bios/s390-ccw/Makefile"
7508LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
7509LINKS="$LINKS pc-bios/qemu-icon.bmp"
7510LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
Peter Maydell39950352018-11-02 11:52:39 +00007511LINKS="$LINKS tests/acceptance tests/data"
7512LINKS="$LINKS tests/qemu-iotests/check"
Richard Henderson753d11f2011-06-24 11:58:37 -07007513for bios_file in \
7514 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11007515 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01007516 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07007517 $source_path/pc-bios/*.rom \
7518 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00007519 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07007520 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01007521 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07007522 $source_path/pc-bios/palcode-*
7523do
Peter Maydelle29e5c62018-11-02 11:52:38 +00007524 LINKS="$LINKS pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007525done
7526mkdir -p $DIRS
Peter Maydelle29e5c62018-11-02 11:52:38 +00007527for f in $LINKS ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03007528 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01007529 symlink "$source_path/$f" "$f"
7530 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007531done
Paul Brook1ad21342009-05-19 16:17:58 +01007532
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007533# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06007534for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007535 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01007536 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007537 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07007538 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07007539 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007540 echo "CC=$cc" >> $config_mak
7541 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00007542 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007543 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03007544 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007545 echo "LD=$ld" >> $config_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08007546 echo "RANLIB=$ranlib" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007547done
7548
Max Reitz76c75602014-05-24 23:24:56 +02007549# set up qemu-iotests in this build directory
7550iotests_common_env="tests/qemu-iotests/common.env"
Max Reitz76c75602014-05-24 23:24:56 +02007551
7552echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7553echo >> "$iotests_common_env"
7554echo "export PYTHON='$python'" >> "$iotests_common_env"
7555
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007556# Save the configure command line for later reuse.
7557cat <<EOD >config.status
7558#!/bin/sh
7559# Generated by configure.
7560# Run this file to recreate the current configuration.
7561# Compiler output produced by configure, useful for debugging
7562# configure, is in config.log if it exists.
7563EOD
Daniel P. Berrangée811da72018-09-04 13:36:03 +01007564
7565preserve_env() {
7566 envname=$1
7567
7568 eval envval=\$$envname
7569
7570 if test -n "$envval"
7571 then
7572 echo "$envname='$envval'" >> config.status
7573 echo "export $envname" >> config.status
7574 else
7575 echo "unset $envname" >> config.status
7576 fi
7577}
7578
7579# Preserve various env variables that influence what
7580# features/build target configure will detect
7581preserve_env AR
7582preserve_env AS
7583preserve_env CC
7584preserve_env CPP
7585preserve_env CXX
7586preserve_env INSTALL
7587preserve_env LD
7588preserve_env LD_LIBRARY_PATH
7589preserve_env LIBTOOL
7590preserve_env MAKE
7591preserve_env NM
7592preserve_env OBJCOPY
7593preserve_env PATH
7594preserve_env PKG_CONFIG
7595preserve_env PKG_CONFIG_LIBDIR
7596preserve_env PKG_CONFIG_PATH
7597preserve_env PYTHON
7598preserve_env SDL_CONFIG
7599preserve_env SDL2_CONFIG
7600preserve_env SMBD
7601preserve_env STRIP
7602preserve_env WINDRES
7603
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007604printf "exec" >>config.status
7605printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00007606echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007607chmod +x config.status
7608
Peter Maydell8cd05ab2014-05-23 17:07:24 +01007609rm -r "$TMPDIR1"