blob: ca364f633cee96cc9af5219274a6bf76d911b7f7 [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
Thomas Huthefc6c072018-12-03 10:12:32 +01001843# Check whether the compiler matches our minimum requirements:
1844cat > $TMPC << EOF
1845#if defined(__clang_major__) && defined(__clang_minor__)
1846# ifdef __apple_build_version__
1847# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1)
1848# error You need at least XCode Clang v5.1 to compile QEMU
1849# endif
1850# else
1851# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4)
1852# error You need at least Clang v3.4 to compile QEMU
1853# endif
1854# endif
1855#elif defined(__GNUC__) && defined(__GNUC_MINOR__)
1856# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)
1857# error You need at least GCC v4.8 to compile QEMU
1858# endif
1859#else
1860# error You either need GCC or Clang to compiler QEMU
1861#endif
1862int main (void) { return 0; }
1863EOF
1864if ! compile_prog "" "" ; then
1865 error_exit "You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)"
1866fi
1867
Paolo Bonzini8d050952010-12-23 11:43:52 +01001868gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1869gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001870gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001871gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Paolo Bonzinib98fcfd2017-07-11 10:08:55 +02001872gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001873gcc_flags="-Wno-string-plus-int $gcc_flags"
Gerd Hoffmann0e39c4a2018-03-09 14:59:45 +01001874gcc_flags="-Wno-error=address-of-packed-member $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001875# Note that we do not add -Werror to gcc_flags here, because that would
1876# enable it for all configure tests. If a configure test failed due
1877# to -Werror this would just silently disable some features,
1878# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001879
1880cc_has_warning_flag() {
1881 write_c_skeleton;
1882
Peter Maydella1d29d62012-10-27 22:19:07 +01001883 # Use the positive sense of the flag when testing for -Wno-wombat
1884 # support (gcc will happily accept the -Wno- form of unknown
1885 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001886 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1887 compile_prog "-Werror $optflag" ""
1888}
1889
1890for flag in $gcc_flags; do
1891 if cc_has_warning_flag $flag ; then
1892 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001893 fi
1894done
1895
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001896if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001897 cat > $TMPC << EOF
1898int main(int argc, char *argv[])
1899{
1900 char arr[64], *p = arr, *c = argv[0];
1901 while (*c) {
1902 *p++ = *c++;
1903 }
1904 return 0;
1905}
1906EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001907 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001908 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001909 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001910 # We need to check both a compile and a link, since some compiler
1911 # setups fail only on a .c->.o compile and some only at link time
1912 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1913 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001914 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001915 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001916 break
1917 fi
1918 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001919 if test "$stack_protector" = yes; then
1920 if test $sp_on = 0; then
1921 error_exit "Stack protector not supported"
1922 fi
1923 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001924fi
1925
Paolo Bonzini20bc94a2017-10-20 12:11:32 +02001926# Disable -Wmissing-braces on older compilers that warn even for
1927# the "universal" C zero initializer {0}.
1928cat > $TMPC << EOF
1929struct {
1930 int a[2];
1931} x = {0};
1932EOF
1933if compile_object "-Werror" "" ; then
1934 :
1935else
1936 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
1937fi
1938
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001939# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1940# large functions that use global variables. The bug is in all releases of
1941# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1942# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1943cat > $TMPC << EOF
1944#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1945int main(void) { return 0; }
1946#else
1947#error No bug in this compiler.
1948#endif
1949EOF
1950if compile_prog "-Werror -fno-gcse" "" ; then
1951 TRANSLATE_OPT_CFLAGS=-fno-gcse
1952fi
1953
Avi Kivity40d64442011-11-15 20:12:17 +02001954if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001955 if test "$modules" = "yes" ; then
1956 error_exit "static and modules are mutually incompatible"
1957 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001958 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001959 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001960 else
1961 pie="no"
1962 fi
1963fi
1964
Emilio G. Cota768b7852015-04-29 13:09:02 +02001965# Unconditional check for compiler __thread support
1966 cat > $TMPC << EOF
1967static __thread int tls_var;
1968int main(void) { return tls_var; }
1969EOF
1970
1971if ! compile_prog "-Werror" "" ; then
1972 error_exit "Your compiler does not support the __thread specifier for " \
1973 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1974fi
1975
Avi Kivity40d64442011-11-15 20:12:17 +02001976if test "$pie" = ""; then
1977 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001978 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001979 ;;
1980 *)
1981 pie="no"
1982 ;;
1983 esac
1984fi
1985
1986if test "$pie" != "no" ; then
1987 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001988
1989#ifdef __linux__
1990# define THREAD __thread
1991#else
1992# define THREAD
1993#endif
1994
1995static THREAD int tls_var;
1996
1997int main(void) { return tls_var; }
1998
Avi Kivity40d64442011-11-15 20:12:17 +02001999EOF
2000 if compile_prog "-fPIE -DPIE" "-pie"; then
2001 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
2002 LDFLAGS="-pie $LDFLAGS"
2003 pie="yes"
2004 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
2005 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
2006 fi
2007 else
2008 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002009 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02002010 else
2011 echo "Disabling PIE due to missing toolchain support"
2012 pie="no"
2013 fi
2014 fi
Brad46eef332013-12-10 19:49:08 -05002015
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04002016 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05002017 CFLAGS_NOPIE="-fno-pie"
2018 LDFLAGS_NOPIE="-nopie"
2019 fi
Avi Kivity40d64442011-11-15 20:12:17 +02002020fi
2021
Paolo Bonzini09dada42013-04-17 16:26:47 +02002022##########################################
2023# __sync_fetch_and_and requires at least -march=i486. Many toolchains
2024# use i686 as default anyway, but for those that don't, an explicit
2025# specification is necessary
2026
2027if test "$cpu" = "i386"; then
2028 cat > $TMPC << EOF
2029static int sfaa(int *ptr)
2030{
2031 return __sync_fetch_and_and(ptr, 0);
2032}
2033
2034int main(void)
2035{
2036 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02002037 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02002038 sfaa(&val);
2039 return val;
2040}
2041EOF
2042 if ! compile_prog "" "" ; then
2043 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
2044 fi
2045fi
2046
2047#########################################
bellardec530c82006-04-25 22:36:06 +00002048# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02002049
bellardec530c82006-04-25 22:36:06 +00002050if test "$solaris" = "yes" ; then
LoĂŻc Minier6792aa12010-01-20 11:35:54 +01002051 if has $install; then
2052 :
2053 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002054 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
2055 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
2056 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00002057 fi
Stefan Weil89138852016-05-16 15:10:20 +02002058 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002059 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
2060 "try ginstall from the GNU fileutils available from www.blastwave.org" \
2061 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00002062 fi
LoĂŻc Minier6792aa12010-01-20 11:35:54 +01002063 if has ar; then
2064 :
2065 else
bellardec530c82006-04-25 22:36:06 +00002066 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002067 error_exit "No path includes ar" \
2068 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00002069 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002070 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00002071 fi
ths5fafdf22007-09-16 21:08:06 +00002072fi
bellardec530c82006-04-25 22:36:06 +00002073
Stefan Weilafb63eb2012-09-26 22:04:38 +02002074if test -z "${target_list+xxx}" ; then
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02002075 for target in $default_target_list; do
2076 supported_target $target 2>/dev/null && \
2077 target_list="$target_list $target"
2078 done
2079 target_list="${target_list# }"
Anthony Liguori121afa92012-09-14 08:17:03 -05002080else
Stefan Weil89138852016-05-16 15:10:20 +02002081 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02002082 for target in $target_list; do
2083 # Check that we recognised the target name; this allows a more
2084 # friendly error message than if we let it fall through.
2085 case " $default_target_list " in
2086 *" $target "*)
2087 ;;
2088 *)
2089 error_exit "Unknown target name '$target'"
2090 ;;
2091 esac
2092 supported_target $target || exit 1
2093 done
bellard5327cf42005-01-10 23:18:50 +00002094fi
Peter Maydell25b48332013-05-20 16:16:16 +01002095
Paolo Bonzinif55fe272010-05-26 16:08:17 +02002096# see if system emulation was really requested
2097case " $target_list " in
2098 *"-softmmu "*) softmmu=yes
2099 ;;
2100 *) softmmu=no
2101 ;;
2102esac
bellard5327cf42005-01-10 23:18:50 +00002103
Juan Quintela249247c2009-08-12 18:20:25 +02002104feature_not_found() {
2105 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11002106 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02002107
Peter Maydell76ad07a2013-04-08 12:11:26 +01002108 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11002109 "configure was not able to find it." \
2110 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02002111}
2112
bellard7d132992003-03-06 23:23:54 +00002113# ---
2114# big/little endian test
2115cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04002116short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
2117short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
2118extern int foo(short *, short *);
2119int main(int argc, char *argv[]) {
2120 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00002121}
2122EOF
2123
Mike Frysinger61cc9192013-06-30 23:30:18 -04002124if compile_object ; then
Alice Frosi12f15c92018-01-30 14:38:28 +01002125 if strings -a $TMPO | grep -q BiGeNdIaN ; then
Mike Frysinger61cc9192013-06-30 23:30:18 -04002126 bigendian="yes"
Alice Frosi12f15c92018-01-30 14:38:28 +01002127 elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then
Mike Frysinger61cc9192013-06-30 23:30:18 -04002128 bigendian="no"
2129 else
2130 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01002131 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04002132else
2133 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00002134fi
2135
Juan Quintelab0a47e72009-08-12 18:29:49 +02002136##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01002137# cocoa implies not SDL or GTK
2138# (the cocoa UI code currently assumes it is always the active UI
2139# and doesn't interact well with other UI frontend code)
2140if test "$cocoa" = "yes"; then
2141 if test "$sdl" = "yes"; then
2142 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
2143 fi
2144 if test "$gtk" = "yes"; then
2145 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
2146 fi
2147 gtk=no
2148 sdl=no
2149fi
2150
Eric Blake6b39b062016-10-11 10:46:23 -05002151# Some versions of Mac OS X incorrectly define SIZE_MAX
2152cat > $TMPC << EOF
2153#include <stdint.h>
2154#include <stdio.h>
2155int main(int argc, char *argv[]) {
2156 return printf("%zu", SIZE_MAX);
2157}
2158EOF
2159have_broken_size_max=no
2160if ! compile_object -Werror ; then
2161 have_broken_size_max=yes
2162fi
2163
Peter Maydella30878e2015-08-14 16:10:52 +01002164##########################################
Gonglei015a33b2014-07-01 20:58:08 +08002165# L2TPV3 probe
2166
2167cat > $TMPC <<EOF
2168#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04002169#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08002170int main(void) { return sizeof(struct mmsghdr); }
2171EOF
2172if compile_prog "" "" ; then
2173 l2tpv3=yes
2174else
2175 l2tpv3=no
2176fi
2177
2178##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01002179# MinGW / Mingw-w64 localtime_r/gmtime_r check
2180
2181if test "$mingw32" = "yes"; then
2182 # Some versions of MinGW / Mingw-w64 lack localtime_r
2183 # and gmtime_r entirely.
2184 #
2185 # Some versions of Mingw-w64 define a macro for
2186 # localtime_r/gmtime_r.
2187 #
2188 # Some versions of Mingw-w64 will define functions
2189 # for localtime_r/gmtime_r, but only if you have
2190 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2191 # though, unistd.h and pthread.h both define
2192 # that for you.
2193 #
2194 # So this #undef localtime_r and #include <unistd.h>
2195 # are not in fact redundant.
2196cat > $TMPC << EOF
2197#include <unistd.h>
2198#include <time.h>
2199#undef localtime_r
2200int main(void) { localtime_r(NULL, NULL); return 0; }
2201EOF
2202 if compile_prog "" "" ; then
2203 localtime_r="yes"
2204 else
2205 localtime_r="no"
2206 fi
2207fi
2208
2209##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01002210# pkg-config probe
2211
2212if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002213 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01002214fi
2215
2216##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02002217# NPTL probe
2218
Peter Maydell24cb36a2013-07-16 18:45:00 +01002219if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02002220 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00002221#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00002222#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01002223int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00002224#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2225#error bork
2226#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01002227 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00002228}
2229EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01002230 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002231 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02002232 fi
pbrookbd0c5662008-05-29 14:34:11 +00002233fi
2234
balrogac629222008-10-11 09:56:04 +00002235##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08002236# lzo check
2237
2238if test "$lzo" != "no" ; then
2239 cat > $TMPC << EOF
2240#include <lzo/lzo1x.h>
2241int main(void) { lzo_version(); return 0; }
2242EOF
2243 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002244 libs_softmmu="$libs_softmmu -llzo2"
2245 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002246 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002247 if test "$lzo" = "yes"; then
2248 feature_not_found "liblzo2" "Install liblzo2 devel"
2249 fi
2250 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002251 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002252fi
2253
2254##########################################
2255# snappy check
2256
2257if test "$snappy" != "no" ; then
2258 cat > $TMPC << EOF
2259#include <snappy-c.h>
2260int main(void) { snappy_max_compressed_length(4096); return 0; }
2261EOF
2262 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002263 libs_softmmu="$libs_softmmu -lsnappy"
2264 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002265 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002266 if test "$snappy" = "yes"; then
2267 feature_not_found "libsnappy" "Install libsnappy devel"
2268 fi
2269 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002270 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002271fi
2272
2273##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01002274# bzip2 check
2275
2276if test "$bzip2" != "no" ; then
2277 cat > $TMPC << EOF
2278#include <bzlib.h>
2279int main(void) { BZ2_bzlibVersion(); return 0; }
2280EOF
2281 if compile_prog "" "-lbz2" ; then
2282 bzip2="yes"
2283 else
2284 if test "$bzip2" = "yes"; then
2285 feature_not_found "libbzip2" "Install libbzip2 devel"
2286 fi
2287 bzip2="no"
2288 fi
2289fi
2290
2291##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03002292# libseccomp check
2293
Marc-André Lureaud0699bd2018-08-22 19:02:49 +02002294libseccomp_minver="2.2.0"
Eduardo Otubof7945732012-08-14 18:44:05 -03002295if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04002296 case "$cpu" in
Marc-André Lureaud0699bd2018-08-22 19:02:49 +02002297 i386|x86_64|mips)
James Hogan5ce43972016-04-08 14:16:34 +01002298 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002299 arm|aarch64)
2300 libseccomp_minver="2.2.3"
2301 ;;
Thomas Huth3aa35fc2017-09-14 12:36:03 +02002302 ppc|ppc64|s390x)
Michael Strosaker3e684452016-06-01 18:30:18 -05002303 libseccomp_minver="2.3.0"
2304 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002305 *)
2306 libseccomp_minver=""
2307 ;;
2308 esac
2309
2310 if test "$libseccomp_minver" != "" &&
2311 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Fam Zhengc3883e12017-09-07 16:53:16 +08002312 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2313 seccomp_libs="$($pkg_config --libs libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04002314 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03002315 else
Andrew Jones693e5912015-09-30 11:59:18 -04002316 if test "$seccomp" = "yes" ; then
2317 if test "$libseccomp_minver" != "" ; then
2318 feature_not_found "libseccomp" \
2319 "Install libseccomp devel >= $libseccomp_minver"
2320 else
2321 feature_not_found "libseccomp" \
2322 "libseccomp is not supported for host cpu $cpu"
2323 fi
2324 fi
2325 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03002326 fi
2327fi
2328##########################################
aliguorie37630c2009-04-22 15:19:10 +00002329# xen probe
2330
Juan Quintelafc321b42009-08-12 18:29:55 +02002331if test "$xen" != "no" ; then
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002332 # Check whether Xen library path is specified via --extra-ldflags to avoid
2333 # overriding this setting with pkg-config output. If not, try pkg-config
2334 # to obtain all needed flags.
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002335
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002336 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2337 $pkg_config --exists xencontrol ; then
2338 xen_ctrl_version="$(printf '%d%02d%02d' \
2339 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2340 xen=yes
2341 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2342 xen_pc="$xen_pc xenevtchn xendevicemodel"
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002343 if $pkg_config --exists xentoolcore; then
2344 xen_pc="$xen_pc xentoolcore"
2345 fi
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002346 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2347 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2348 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2349 else
Stefan Weil50ced5b2011-12-17 09:27:39 +01002350
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002351 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd9506ca2017-05-11 12:35:42 +01002352 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002353
2354 # First we test whether Xen headers and libraries are available.
2355 # If no, we are done and there is no Xen support.
2356 # If yes, more tests are run to detect the Xen version.
2357
2358 # Xen (any)
2359 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002360#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002361int main(void) {
2362 return 0;
2363}
2364EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002365 if ! compile_prog "" "$xen_libs" ; then
2366 # Xen not found
2367 if test "$xen" = "yes" ; then
2368 feature_not_found "xen" "Install xen devel"
2369 fi
2370 xen=no
Stefan Weil50ced5b2011-12-17 09:27:39 +01002371
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002372 # Xen unstable
2373 elif
2374 cat > $TMPC <<EOF &&
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002375#undef XC_WANT_COMPAT_DEVICEMODEL_API
2376#define __XEN_TOOLS__
2377#include <xendevicemodel.h>
Paul Durrantd3c49eb2018-05-15 17:40:53 +01002378#include <xenforeignmemory.h>
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002379int main(void) {
2380 xendevicemodel_handle *xd;
Paul Durrantd3c49eb2018-05-15 17:40:53 +01002381 xenforeignmemory_handle *xfmem;
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002382
2383 xd = xendevicemodel_open(0, 0);
2384 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2385
Paul Durrantd3c49eb2018-05-15 17:40:53 +01002386 xfmem = xenforeignmemory_open(0, 0);
2387 xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0);
2388
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002389 return 0;
2390}
2391EOF
2392 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2393 then
2394 xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2395 xen_ctrl_version=41100
2396 xen=yes
2397 elif
2398 cat > $TMPC <<EOF &&
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002399#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2400#include <xenforeignmemory.h>
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002401#include <xentoolcore.h>
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002402int main(void) {
2403 xenforeignmemory_handle *xfmem;
2404
2405 xfmem = xenforeignmemory_open(0, 0);
2406 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002407 xentoolcore_restrict_all(0);
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002408
2409 return 0;
2410}
2411EOF
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002412 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002413 then
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002414 xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore"
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002415 xen_ctrl_version=41000
2416 xen=yes
2417 elif
2418 cat > $TMPC <<EOF &&
Paul Durrantda8090c2017-03-07 10:55:33 +00002419#undef XC_WANT_COMPAT_DEVICEMODEL_API
2420#define __XEN_TOOLS__
2421#include <xendevicemodel.h>
2422int main(void) {
2423 xendevicemodel_handle *xd;
2424
2425 xd = xendevicemodel_open(0, 0);
2426 xendevicemodel_close(xd);
2427
2428 return 0;
2429}
2430EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002431 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2432 then
2433 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2434 xen_ctrl_version=40900
2435 xen=yes
2436 elif
2437 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002438/*
2439 * If we have stable libs the we don't want the libxc compat
2440 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002441 *
2442 * Also, check if xengnttab_grant_copy_segment_t is defined and
2443 * grant copy operation is implemented.
2444 */
2445#undef XC_WANT_COMPAT_EVTCHN_API
2446#undef XC_WANT_COMPAT_GNTTAB_API
2447#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2448#include <xenctrl.h>
2449#include <xenstore.h>
2450#include <xenevtchn.h>
2451#include <xengnttab.h>
2452#include <xenforeignmemory.h>
2453#include <stdint.h>
2454#include <xen/hvm/hvm_info_table.h>
2455#if !defined(HVM_MAX_VCPUS)
2456# error HVM_MAX_VCPUS not defined
2457#endif
2458int main(void) {
2459 xc_interface *xc = NULL;
2460 xenforeignmemory_handle *xfmem;
2461 xenevtchn_handle *xe;
2462 xengnttab_handle *xg;
2463 xen_domain_handle_t handle;
2464 xengnttab_grant_copy_segment_t* seg = NULL;
2465
2466 xs_daemon_open();
2467
2468 xc = xc_interface_open(0, 0, 0);
2469 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2470 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2471 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2472 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2473 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2474
2475 xfmem = xenforeignmemory_open(0, 0);
2476 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2477
2478 xe = xenevtchn_open(0, 0);
2479 xenevtchn_fd(xe);
2480
2481 xg = xengnttab_open(0, 0);
2482 xengnttab_grant_copy(xg, 0, seg);
2483
2484 return 0;
2485}
2486EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002487 compile_prog "" "$xen_libs $xen_stable_libs"
2488 then
2489 xen_ctrl_version=40800
2490 xen=yes
2491 elif
2492 cat > $TMPC <<EOF &&
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002493/*
2494 * If we have stable libs the we don't want the libxc compat
2495 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002496 */
2497#undef XC_WANT_COMPAT_EVTCHN_API
2498#undef XC_WANT_COMPAT_GNTTAB_API
2499#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2500#include <xenctrl.h>
2501#include <xenstore.h>
2502#include <xenevtchn.h>
2503#include <xengnttab.h>
2504#include <xenforeignmemory.h>
2505#include <stdint.h>
2506#include <xen/hvm/hvm_info_table.h>
2507#if !defined(HVM_MAX_VCPUS)
2508# error HVM_MAX_VCPUS not defined
2509#endif
2510int main(void) {
2511 xc_interface *xc = NULL;
2512 xenforeignmemory_handle *xfmem;
2513 xenevtchn_handle *xe;
2514 xengnttab_handle *xg;
2515 xen_domain_handle_t handle;
2516
2517 xs_daemon_open();
2518
2519 xc = xc_interface_open(0, 0, 0);
2520 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2521 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2522 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2523 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2524 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2525
2526 xfmem = xenforeignmemory_open(0, 0);
2527 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2528
2529 xe = xenevtchn_open(0, 0);
2530 xenevtchn_fd(xe);
2531
2532 xg = xengnttab_open(0, 0);
2533 xengnttab_map_grant_ref(xg, 0, 0, 0);
2534
2535 return 0;
2536}
2537EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002538 compile_prog "" "$xen_libs $xen_stable_libs"
2539 then
2540 xen_ctrl_version=40701
2541 xen=yes
2542 elif
2543 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002544#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002545#include <stdint.h>
2546int main(void) {
2547 xc_interface *xc = NULL;
2548 xen_domain_handle_t handle;
2549 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2550 return 0;
2551}
2552EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002553 compile_prog "" "$xen_libs"
2554 then
2555 xen_ctrl_version=40700
2556 xen=yes
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002557
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002558 # Xen 4.6
2559 elif
2560 cat > $TMPC <<EOF &&
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002561#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002562#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002563#include <stdint.h>
2564#include <xen/hvm/hvm_info_table.h>
2565#if !defined(HVM_MAX_VCPUS)
2566# error HVM_MAX_VCPUS not defined
2567#endif
2568int main(void) {
2569 xc_interface *xc;
2570 xs_daemon_open();
2571 xc = xc_interface_open(0, 0, 0);
2572 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2573 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002574 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002575 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002576 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002577 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002578 return 0;
2579}
2580EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002581 compile_prog "" "$xen_libs"
2582 then
2583 xen_ctrl_version=40600
2584 xen=yes
Jan Beulichd8b441a2015-07-24 03:38:28 -06002585
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002586 # Xen 4.5
2587 elif
2588 cat > $TMPC <<EOF &&
Jan Beulichd8b441a2015-07-24 03:38:28 -06002589#include <xenctrl.h>
2590#include <xenstore.h>
2591#include <stdint.h>
2592#include <xen/hvm/hvm_info_table.h>
2593#if !defined(HVM_MAX_VCPUS)
2594# error HVM_MAX_VCPUS not defined
2595#endif
2596int main(void) {
2597 xc_interface *xc;
2598 xs_daemon_open();
2599 xc = xc_interface_open(0, 0, 0);
2600 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2601 xc_gnttab_open(NULL, 0);
2602 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2603 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002604 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2605 return 0;
2606}
2607EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002608 compile_prog "" "$xen_libs"
2609 then
2610 xen_ctrl_version=40500
2611 xen=yes
Paul Durrant3996e852015-01-20 11:06:19 +00002612
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002613 elif
2614 cat > $TMPC <<EOF &&
Paul Durrant3996e852015-01-20 11:06:19 +00002615#include <xenctrl.h>
2616#include <xenstore.h>
2617#include <stdint.h>
2618#include <xen/hvm/hvm_info_table.h>
2619#if !defined(HVM_MAX_VCPUS)
2620# error HVM_MAX_VCPUS not defined
2621#endif
2622int main(void) {
2623 xc_interface *xc;
2624 xs_daemon_open();
2625 xc = xc_interface_open(0, 0, 0);
2626 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2627 xc_gnttab_open(NULL, 0);
2628 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2629 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002630 return 0;
2631}
2632EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002633 compile_prog "" "$xen_libs"
2634 then
2635 xen_ctrl_version=40200
2636 xen=yes
Stefano Stabellini8688e062012-04-17 17:04:18 +00002637
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002638 else
2639 if test "$xen" = "yes" ; then
2640 feature_not_found "xen (unsupported version)" \
2641 "Install a supported xen (xen 4.2 or newer)"
2642 fi
2643 xen=no
Juan Quintelafc321b42009-08-12 18:29:55 +02002644 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002645
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002646 if test "$xen" = yes; then
2647 if test $xen_ctrl_version -ge 40701 ; then
2648 libs_softmmu="$xen_stable_libs $libs_softmmu"
2649 fi
2650 libs_softmmu="$xen_libs $libs_softmmu"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002651 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002652 fi
aliguorie37630c2009-04-22 15:19:10 +00002653fi
2654
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002655if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002656 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002657 xen_pci_passthrough=yes
2658 else
2659 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002660 error_exit "User requested feature Xen PCI Passthrough" \
2661 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002662 fi
2663 xen_pci_passthrough=no
2664 fi
2665fi
2666
Ian Campbell64a7ad62016-01-15 13:23:44 +00002667if test "$xen_pv_domain_build" = "yes" &&
2668 test "$xen" != "yes"; then
2669 error_exit "User requested Xen PV domain builder support" \
2670 "which requires Xen support."
2671fi
2672
aliguorie37630c2009-04-22 15:19:10 +00002673##########################################
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002674# Windows Hypervisor Platform accelerator (WHPX) check
2675if test "$whpx" != "no" ; then
Lucian Petrut327fccb2018-05-15 20:35:21 +03002676 if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002677 whpx="yes"
2678 else
2679 if test "$whpx" = "yes"; then
Justin Terry (VM) via Qemu-devel53537bb2018-02-26 09:13:29 -08002680 feature_not_found "WinHvPlatform" "WinHvEmulation is not installed"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002681 fi
2682 whpx="no"
2683 fi
2684fi
2685
2686##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002687# Sparse probe
2688if test "$sparse" != "no" ; then
LoĂŻc Minier0dba6192010-01-28 21:26:51 +00002689 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002690 sparse=yes
2691 else
2692 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002693 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002694 fi
2695 sparse=no
2696 fi
2697fi
2698
2699##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002700# X11 probe
Jeremy Whitef676c672015-01-09 13:08:49 -06002701if $pkg_config --exists "x11"; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002702 have_x11=yes
Stefan Weil89138852016-05-16 15:10:20 +02002703 x11_cflags=$($pkg_config --cflags x11)
2704 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002705fi
2706
2707##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002708# GTK probe
2709
2710if test "$gtk" != "no"; then
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002711 gtkpackage="gtk+-3.0"
2712 gtkx11package="gtk+-x11-3.0"
Daniel P. Berrangé58296cb2018-08-22 14:15:53 +01002713 gtkversion="3.14.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002714 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002715 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2716 gtk_libs=$($pkg_config --libs $gtkpackage)
2717 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002718 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002719 need_x11=yes
Jeremy Whitef676c672015-01-09 13:08:49 -06002720 gtk_cflags="$gtk_cflags $x11_cflags"
2721 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002722 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002723 gtk="yes"
2724 elif test "$gtk" = "yes"; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002725 feature_not_found "gtk" "Install gtk3-devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002726 else
2727 gtk="no"
2728 fi
2729fi
2730
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002731
2732##########################################
2733# GNUTLS probe
2734
2735if test "$gnutls" != "no"; then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002736 if $pkg_config --exists "gnutls >= 3.1.18"; then
Stefan Weil89138852016-05-16 15:10:20 +02002737 gnutls_cflags=$($pkg_config --cflags gnutls)
2738 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002739 libs_softmmu="$gnutls_libs $libs_softmmu"
2740 libs_tools="$gnutls_libs $libs_tools"
2741 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2742 gnutls="yes"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002743 elif test "$gnutls" = "yes"; then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002744 feature_not_found "gnutls" "Install gnutls devel >= 3.1.18"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002745 else
2746 gnutls="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002747 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002748fi
2749
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002750
2751# If user didn't give a --disable/enable-gcrypt flag,
2752# then mark as disabled if user requested nettle
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002753# explicitly
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002754if test -z "$gcrypt"
2755then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002756 if test "$nettle" = "yes"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002757 then
2758 gcrypt="no"
2759 fi
2760fi
2761
2762# If user didn't give a --disable/enable-nettle flag,
2763# then mark as disabled if user requested gcrypt
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002764# explicitly
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002765if test -z "$nettle"
2766then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002767 if test "$gcrypt" = "yes"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002768 then
2769 nettle="no"
2770 fi
2771fi
2772
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002773has_libgcrypt() {
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002774 if ! has "libgcrypt-config"
2775 then
2776 return 1
2777 fi
2778
2779 if test -n "$cross_prefix"
2780 then
Stefan Weil89138852016-05-16 15:10:20 +02002781 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002782 if test "$host-" != $cross_prefix
2783 then
2784 return 1
2785 fi
2786 fi
2787
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002788 maj=`libgcrypt-config --version | awk -F . '{print $1}'`
2789 min=`libgcrypt-config --version | awk -F . '{print $2}'`
2790
2791 if test $maj != 1 || test $min -lt 5
2792 then
2793 return 1
2794 fi
2795
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002796 return 0
2797}
2798
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002799
2800if test "$nettle" != "no"; then
Daniel P. Berrangé64dd2f32018-07-18 11:55:05 +01002801 if $pkg_config --exists "nettle >= 2.7.1"; then
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002802 nettle_cflags=$($pkg_config --cflags nettle)
2803 nettle_libs=$($pkg_config --libs nettle)
2804 nettle_version=$($pkg_config --modversion nettle)
2805 libs_softmmu="$nettle_libs $libs_softmmu"
2806 libs_tools="$nettle_libs $libs_tools"
2807 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2808 nettle="yes"
2809
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002810 if test -z "$gcrypt"; then
2811 gcrypt="no"
2812 fi
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002813 else
2814 if test "$nettle" = "yes"; then
Daniel P. Berrangé64dd2f32018-07-18 11:55:05 +01002815 feature_not_found "nettle" "Install nettle devel >= 2.7.1"
Daniel P. Berrangéa0722402018-07-18 11:55:05 +01002816 else
2817 nettle="no"
2818 fi
2819 fi
2820fi
2821
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002822if test "$gcrypt" != "no"; then
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002823 if has_libgcrypt; then
Stefan Weil89138852016-05-16 15:10:20 +02002824 gcrypt_cflags=$(libgcrypt-config --cflags)
2825 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002826 # Debian has remove -lgpg-error from libgcrypt-config
2827 # as it "spreads unnecessary dependencies" which in
2828 # turn breaks static builds...
2829 if test "$static" = "yes"
2830 then
2831 gcrypt_libs="$gcrypt_libs -lgpg-error"
2832 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002833 libs_softmmu="$gcrypt_libs $libs_softmmu"
2834 libs_tools="$gcrypt_libs $libs_tools"
2835 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002836 gcrypt="yes"
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002837
2838 cat > $TMPC << EOF
2839#include <gcrypt.h>
2840int main(void) {
2841 gcry_mac_hd_t handle;
2842 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2843 GCRY_MAC_FLAG_SECURE, NULL);
2844 return 0;
2845}
2846EOF
2847 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2848 gcrypt_hmac=yes
2849 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002850 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002851 if test "$gcrypt" = "yes"; then
Daniel P. Berrangédea7a642018-07-18 11:55:05 +01002852 feature_not_found "gcrypt" "Install gcrypt devel >= 1.5.0"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002853 else
2854 gcrypt="no"
2855 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002856 fi
2857fi
2858
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002859
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002860if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2861then
2862 error_exit "Only one of gcrypt & nettle can be enabled"
2863fi
2864
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002865##########################################
2866# libtasn1 - only for the TLS creds/session test suite
2867
2868tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002869tasn1_cflags=""
2870tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002871if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002872 tasn1_cflags=$($pkg_config --cflags libtasn1)
2873 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002874else
2875 tasn1=no
2876fi
2877
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002878
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002879##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002880# getifaddrs (for tests/test-io-channel-socket )
2881
2882have_ifaddrs_h=yes
2883if ! check_include "ifaddrs.h" ; then
2884 have_ifaddrs_h=no
2885fi
2886
2887##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002888# VTE probe
2889
2890if test "$vte" != "no"; then
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002891 vteminversion="0.32.0"
2892 if $pkg_config --exists "vte-2.91"; then
2893 vtepackage="vte-2.91"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002894 else
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002895 vtepackage="vte-2.90"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002896 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002897 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002898 vte_cflags=$($pkg_config --cflags $vtepackage)
2899 vte_libs=$($pkg_config --libs $vtepackage)
2900 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002901 vte="yes"
2902 elif test "$vte" = "yes"; then
Daniel P. Berrangé89d85cd2018-08-22 14:15:52 +01002903 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Peter Maydell0d185e62013-07-18 16:42:01 +01002904 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002905 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002906 fi
2907fi
2908
2909##########################################
bellard11d9f692004-04-02 20:55:59 +00002910# SDL probe
2911
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002912# Look for sdl configuration program (pkg-config or sdl-config). Try
2913# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002914
Peter Xuc6093a02018-04-10 13:40:34 +08002915sdl_probe ()
2916{
2917 sdl_too_old=no
2918 if test "$sdlabi" = ""; then
2919 if $pkg_config --exists "sdl2"; then
2920 sdlabi=2.0
2921 elif $pkg_config --exists "sdl"; then
2922 sdlabi=1.2
2923 else
2924 sdlabi=2.0
2925 fi
LoĂŻc Miniera0dfd8a2010-01-28 21:15:18 +00002926 fi
bellard11d9f692004-04-02 20:55:59 +00002927
Peter Xuc6093a02018-04-10 13:40:34 +08002928 if test $sdlabi = "2.0"; then
2929 sdl_config=$sdl2_config
2930 sdlname=sdl2
2931 sdlconfigname=sdl2_config
2932 elif test $sdlabi = "1.2"; then
2933 sdlname=sdl
2934 sdlconfigname=sdl_config
2935 else
2936 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2937 fi
2938
2939 if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
2940 sdl_config=$sdlconfigname
2941 fi
2942
2943 if $pkg_config $sdlname --exists; then
2944 sdlconfig="$pkg_config $sdlname"
2945 sdlversion=$($sdlconfig --modversion 2>/dev/null)
2946 elif has ${sdl_config}; then
2947 sdlconfig="$sdl_config"
2948 sdlversion=$($sdlconfig --version)
2949 else
2950 if test "$sdl" = "yes" ; then
2951 feature_not_found "sdl" "Install SDL2-devel"
2952 fi
2953 sdl=no
2954 # no need to do the rest
2955 return
2956 fi
2957 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2958 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2959 fi
2960
Juan Quintelaac119f92009-07-27 16:13:15 +02002961 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002962#include <SDL.h>
2963#undef main /* We don't want SDL to override our main() */
2964int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2965EOF
Stefan Weil89138852016-05-16 15:10:20 +02002966 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
Gerd Hoffmann2ca5c432018-03-07 16:42:57 +01002967 sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
TeLeMan74f42e12010-02-08 13:56:44 +08002968 if test "$static" = "yes" ; then
Thomas Huth5f37e6d2017-06-13 20:00:44 +02002969 if $pkg_config $sdlname --exists; then
2970 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2971 else
2972 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2973 fi
TeLeMan74f42e12010-02-08 13:56:44 +08002974 else
Stefan Weil89138852016-05-16 15:10:20 +02002975 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002976 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002977 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002978 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002979 sdl_too_old=yes
2980 else
Peter Maydella30878e2015-08-14 16:10:52 +01002981 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002982 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002983
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002984 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002985 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002986 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002987 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2988 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002989 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002990 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002991 :
2992 else
2993 sdl=no
2994 fi
2995 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002996 else # sdl not found
2997 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002998 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002999 fi
3000 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02003001 fi # sdl compile test
Peter Xuc6093a02018-04-10 13:40:34 +08003002}
3003
3004if test "$sdl" != "no" ; then
3005 sdl_probe
Juan Quintelaa68551b2009-07-27 16:13:09 +02003006fi
bellard11d9f692004-04-02 20:55:59 +00003007
aliguori5368a422009-03-03 17:37:21 +00003008if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02003009 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00003010#include <SDL.h>
3011#if defined(SDL_VIDEO_DRIVER_X11)
3012#include <X11/XKBlib.h>
3013#else
3014#error No x11 support
3015#endif
3016int main(void) { return 0; }
3017EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06003018 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01003019 need_x11=yes
Jeremy Whitef676c672015-01-09 13:08:49 -06003020 sdl_cflags="$sdl_cflags $x11_cflags"
3021 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02003022 fi
aliguori5368a422009-03-03 17:37:21 +00003023fi
3024
ths8f28f3f2007-01-05 21:25:54 +00003025##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04003026# RDMA needs OpenFabrics libraries
3027if test "$rdma" != "no" ; then
3028 cat > $TMPC <<EOF
3029#include <rdma/rdma_cma.h>
3030int main(void) { return 0; }
3031EOF
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003032 rdma_libs="-lrdmacm -libverbs -libumad"
Michael R. Hines2da776d2013-07-22 10:01:54 -04003033 if compile_prog "" "$rdma_libs" ; then
3034 rdma="yes"
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003035 libs_softmmu="$libs_softmmu $rdma_libs"
Michael R. Hines2da776d2013-07-22 10:01:54 -04003036 else
3037 if test "$rdma" = "yes" ; then
3038 error_exit \
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003039 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
Michael R. Hines2da776d2013-07-22 10:01:54 -04003040 " Your options:" \
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02003041 " (1) Fast: Install infiniband packages (devel) from your distro." \
Michael R. Hines2da776d2013-07-22 10:01:54 -04003042 " (2) Cleanest: Install libraries from www.openfabrics.org" \
3043 " (3) Also: Install softiwarp if you don't have RDMA hardware"
3044 fi
3045 rdma="no"
3046 fi
3047fi
3048
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03003049##########################################
3050# PVRDMA detection
3051
3052cat > $TMPC <<EOF &&
3053#include <sys/mman.h>
3054
3055int
3056main(void)
3057{
3058 char buf = 0;
3059 void *addr = &buf;
3060 addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED);
3061
3062 return 0;
3063}
3064EOF
3065
3066if test "$rdma" = "yes" ; then
3067 case "$pvrdma" in
3068 "")
3069 if compile_prog "" ""; then
3070 pvrdma="yes"
3071 else
3072 pvrdma="no"
3073 fi
3074 ;;
3075 "yes")
3076 if ! compile_prog "" ""; then
3077 error_exit "PVRDMA is not supported since mremap is not implemented"
3078 fi
3079 pvrdma="yes"
3080 ;;
3081 "no")
3082 pvrdma="no"
3083 ;;
3084 esac
3085else
3086 if test "$pvrdma" = "yes" ; then
3087 error_exit "PVRDMA requires rdma suppport"
3088 fi
3089 pvrdma="no"
3090fi
ths8d5d2d42007-08-25 01:37:51 +00003091
3092##########################################
aliguori2f9606b2009-03-06 20:27:28 +00003093# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003094if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02003095 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00003096#include <sasl/sasl.h>
3097#include <stdio.h>
3098int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
3099EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02003100 # Assuming Cyrus-SASL installed in /usr prefix
3101 vnc_sasl_cflags=""
3102 vnc_sasl_libs="-lsasl2"
3103 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3104 vnc_sasl=yes
3105 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01003106 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02003107 else
3108 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003109 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00003110 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02003111 vnc_sasl=no
3112 fi
aliguori2f9606b2009-03-06 20:27:28 +00003113fi
3114
3115##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003116# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003117if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003118cat > $TMPC <<EOF
3119#include <stdio.h>
3120#include <jpeglib.h>
3121int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3122EOF
3123 vnc_jpeg_cflags=""
3124 vnc_jpeg_libs="-ljpeg"
3125 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3126 vnc_jpeg=yes
3127 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01003128 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003129 else
3130 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003131 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003132 fi
3133 vnc_jpeg=no
3134 fi
3135fi
3136
3137##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02003138# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003139if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02003140cat > $TMPC <<EOF
3141//#include <stdio.h>
3142#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003143#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02003144int main(void) {
3145 png_structp png_ptr;
3146 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01003147 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02003148}
3149EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003150 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02003151 vnc_png_cflags=$($pkg_config libpng --cflags)
3152 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04003153 else
Corentin Charyefe556a2010-07-07 20:57:56 +02003154 vnc_png_cflags=""
3155 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04003156 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02003157 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
3158 vnc_png=yes
3159 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04003160 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02003161 else
3162 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003163 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02003164 fi
3165 vnc_png=no
3166 fi
3167fi
3168
3169##########################################
Gerd Hoffmann6a021532017-10-05 17:33:28 +02003170# xkbcommon probe
3171if test "$xkbcommon" != "no" ; then
3172 if $pkg_config xkbcommon --exists; then
3173 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
3174 xkbcommon_libs=$($pkg_config xkbcommon --libs)
3175 xkbcommon=yes
3176 else
3177 if test "$xkbcommon" = "yes" ; then
3178 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
3179 fi
3180 xkbcommon=no
3181 fi
3182fi
3183
3184##########################################
aliguori76655d62009-03-06 20:27:37 +00003185# fnmatch() probe, used for ACL routines
3186fnmatch="no"
3187cat > $TMPC << EOF
3188#include <fnmatch.h>
3189int main(void)
3190{
3191 fnmatch("foo", "foo", 0);
3192 return 0;
3193}
3194EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003195if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00003196 fnmatch="yes"
3197fi
3198
3199##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06003200# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003201if test "$xfs" != "no" ; then
3202 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01003203#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003204#include <xfs/xfs.h>
3205int main(void)
3206{
3207 xfsctl(NULL, 0, 0, NULL);
3208 return 0;
3209}
3210EOF
3211 if compile_prog "" "" ; then
3212 xfs="yes"
3213 else
3214 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003215 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003216 fi
3217 xfs=no
3218 fi
3219fi
3220
3221##########################################
ths8a16d272008-07-19 09:56:24 +00003222# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02003223if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003224 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00003225 cat > $TMPC << EOF
3226#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00003227int main(void)
3228{
3229 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01003230 char s[] = "";
3231 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00003232 return 0;
3233}
ths8a16d272008-07-19 09:56:24 +00003234EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003235 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003236 vde=yes
Juan Quinteladfb278b2009-08-12 18:20:27 +02003237 else
3238 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003239 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02003240 fi
3241 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02003242 fi
ths8a16d272008-07-19 09:56:24 +00003243fi
3244
3245##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003246# netmap support probe
3247# Apart from looking for netmap headers, we make sure that the host API version
3248# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3249# a minor/major version number. Minor new features will be marked with values up
3250# to 15, and if something happens that requires a change to the backend we will
3251# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01003252if test "$netmap" != "no" ; then
3253 cat > $TMPC << EOF
3254#include <inttypes.h>
3255#include <net/if.h>
3256#include <net/netmap.h>
3257#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003258#if (NETMAP_API < 11) || (NETMAP_API > 15)
3259#error
3260#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01003261int main(void) { return 0; }
3262EOF
3263 if compile_prog "" "" ; then
3264 netmap=yes
3265 else
3266 if test "$netmap" = "yes" ; then
3267 feature_not_found "netmap"
3268 fi
3269 netmap=no
3270 fi
3271fi
3272
3273##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05003274# libcap-ng library probe
3275if test "$cap_ng" != "no" ; then
3276 cap_libs="-lcap-ng"
3277 cat > $TMPC << EOF
3278#include <cap-ng.h>
3279int main(void)
3280{
3281 capng_capability_to_name(CAPNG_EFFECTIVE);
3282 return 0;
3283}
3284EOF
3285 if compile_prog "" "$cap_libs" ; then
3286 cap_ng=yes
3287 libs_tools="$cap_libs $libs_tools"
3288 else
3289 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003290 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05003291 fi
3292 cap_ng=no
3293 fi
3294fi
3295
3296##########################################
malcc2de5c92008-06-28 19:13:06 +00003297# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00003298
malcc2de5c92008-06-28 19:13:06 +00003299audio_drv_probe()
3300{
3301 drv=$1
3302 hdr=$2
3303 lib=$3
3304 exp=$4
3305 cfl=$5
3306 cat > $TMPC << EOF
3307#include <$hdr>
3308int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00003309EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003310 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00003311 :
3312 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003313 error_exit "$drv check failed" \
3314 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00003315 fi
3316}
3317
Stefan Weil89138852016-05-16 15:10:20 +02003318audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00003319for drv in $audio_drv_list; do
3320 case $drv in
3321 alsa)
3322 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01003323 "return snd_pcm_close((snd_pcm_t *)0);"
Fam Zhengb1149912017-09-07 16:29:13 +08003324 alsa_libs="-lasound"
malcc2de5c92008-06-28 19:13:06 +00003325 ;;
3326
malcb8e59f12008-07-02 21:03:08 +00003327 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02003328 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3329 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Fam Zhengb1149912017-09-07 16:29:13 +08003330 pulse_libs="-lpulse"
Juan Quintela67f86e82009-08-03 14:46:59 +02003331 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00003332 ;;
3333
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003334 sdl)
3335 if test "$sdl" = "no"; then
3336 error_exit "sdl not found or disabled, can not use sdl audio driver"
3337 fi
3338 ;;
3339
Juan Quintela997e6902009-08-03 14:46:29 +02003340 coreaudio)
Fam Zhengb1149912017-09-07 16:29:13 +08003341 coreaudio_libs="-framework CoreAudio"
Juan Quintela997e6902009-08-03 14:46:29 +02003342 ;;
3343
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003344 dsound)
Fam Zhengb1149912017-09-07 16:29:13 +08003345 dsound_libs="-lole32 -ldxguid"
malcd5631632009-10-10 01:13:41 +04003346 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003347 ;;
3348
3349 oss)
Fam Zhengb1149912017-09-07 16:29:13 +08003350 oss_libs="$oss_lib"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003351 ;;
3352
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003353 wav)
3354 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00003355 ;;
3356
malce4c63a62008-07-19 16:15:16 +00003357 *)
malc1c9b2a52008-07-19 16:57:30 +00003358 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01003359 error_exit "Unknown driver '$drv' selected" \
3360 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00003361 }
3362 ;;
malcc2de5c92008-06-28 19:13:06 +00003363 esac
3364done
ths8f28f3f2007-01-05 21:25:54 +00003365
balrog4d3b6f62008-02-10 16:33:14 +00003366##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00003367# BrlAPI probe
3368
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003369if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003370 brlapi_libs="-lbrlapi"
3371 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00003372#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003373#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00003374int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3375EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003376 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003377 brlapi=yes
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003378 else
3379 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003380 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003381 fi
3382 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02003383 fi
3384fi
aurel322e4d9fb2008-04-08 06:01:02 +00003385
3386##########################################
balrog4d3b6f62008-02-10 16:33:14 +00003387# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02003388if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003389 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003390 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3391 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003392 else
Samuel Thibault7c703002016-11-09 11:27:52 +01003393 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003394 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003395 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02003396 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00003397 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003398#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00003399#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003400#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01003401int main(void) {
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003402 wchar_t wch = L'w';
3403 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01003404 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003405 addwstr(L"wide chars\n");
3406 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003407 add_wch(WACS_DEGREE);
Kamil Rytarowski271f37a2017-04-26 12:50:27 +02003408 return 0;
Stefan Weilef9a2522011-12-17 17:46:02 +01003409}
balrog4d3b6f62008-02-10 16:33:14 +00003410EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003411 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003412 for curses_inc in $curses_inc_list; do
Peter Maydellb01a4fd2017-06-02 15:35:38 +01003413 # Make sure we get the wide character prototypes
3414 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
Samuel Thibault7c703002016-11-09 11:27:52 +01003415 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003416 for curses_lib in $curses_lib_list; do
3417 unset IFS
3418 if compile_prog "$curses_inc" "$curses_lib" ; then
3419 curses_found=yes
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003420 break
3421 fi
3422 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003423 if test "$curses_found" = yes ; then
3424 break
3425 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003426 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003427 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003428 if test "$curses_found" = "yes" ; then
3429 curses=yes
3430 else
3431 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003432 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003433 fi
3434 curses=no
3435 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003436fi
balrog4d3b6f62008-02-10 16:33:14 +00003437
blueswir1414f0da2008-08-15 18:20:52 +00003438##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003439# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003440if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003441 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003442 curlconfig="$pkg_config libcurl"
3443 else
3444 curlconfig=curl-config
3445 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003446 cat > $TMPC << EOF
3447#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003448int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003449EOF
Stefan Weil89138852016-05-16 15:10:20 +02003450 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3451 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003452 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003453 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003454 else
3455 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003456 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003457 fi
3458 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003459 fi
3460fi # test "$curl"
3461
3462##########################################
balrogfb599c92008-09-28 23:49:55 +00003463# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003464if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003465 cat > $TMPC << EOF
3466#include <bluetooth/bluetooth.h>
3467int main(void) { return bt_error(0); }
3468EOF
Stefan Weil89138852016-05-16 15:10:20 +02003469 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3470 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003471 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003472 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003473 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003474 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003475 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003476 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003477 fi
balroge820e3f2008-09-30 02:27:44 +00003478 bluez="no"
3479 fi
balrogfb599c92008-09-28 23:49:55 +00003480fi
3481
3482##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003483# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003484
Daniel P. Berrangée7b3af82018-05-04 15:34:46 +01003485glib_req_ver=2.40
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003486glib_modules=gthread-2.0
3487if test "$modules" = yes; then
Gerd Hoffmanna88afc62018-03-08 09:53:00 +01003488 glib_modules="$glib_modules gmodule-export-2.0"
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003489fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003490
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003491# This workaround is required due to a bug in pkg-config file for glib as it
3492# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3493
3494if test "$static" = yes -a "$mingw32" = yes; then
3495 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3496fi
3497
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003498for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003499 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003500 glib_cflags=$($pkg_config --cflags $i)
3501 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003502 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003503 LIBS="$glib_libs $LIBS"
3504 libs_qga="$glib_libs $libs_qga"
3505 else
3506 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3507 fi
3508done
3509
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003510# Sanity check that the current size_t matches the
3511# size that glib thinks it should be. This catches
3512# problems on multi-arch where people try to build
3513# 32-bit QEMU while pointing at 64-bit glib headers
3514cat > $TMPC <<EOF
3515#include <glib.h>
3516#include <unistd.h>
3517
3518#define QEMU_BUILD_BUG_ON(x) \
3519 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3520
3521int main(void) {
3522 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3523 return 0;
3524}
3525EOF
3526
Stefan Weil5919e032016-04-28 23:33:41 +02003527if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003528 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3529 "You probably need to set PKG_CONFIG_LIBDIR"\
3530 "to point to the right pkg-config files for your"\
3531 "build target"
3532fi
3533
John Snowbbbf2e02015-03-25 18:57:38 -04003534# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3535cat > $TMPC << EOF
3536#include <glib.h>
3537int main(void) { return 0; }
3538EOF
3539if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3540 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3541 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3542 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3543 fi
3544fi
3545
Stefan Weil6a1f42b2018-07-12 21:26:03 +02003546#########################################
3547# zlib check
3548
3549if test "$zlib" != "no" ; then
3550 if $pkg_config --exists zlib; then
3551 zlib_cflags=$($pkg_config --cflags zlib)
3552 zlib_libs=$($pkg_config --libs zlib)
3553 QEMU_CFLAGS="$zlib_cflags $QEMU_CFLAGS"
3554 LIBS="$zlib_libs $LIBS"
3555 else
3556 cat > $TMPC << EOF
3557#include <zlib.h>
3558int main(void) { zlibVersion(); return 0; }
3559EOF
3560 if compile_prog "" "-lz" ; then
3561 LIBS="$LIBS -lz"
3562 else
3563 error_exit "zlib check failed" \
3564 "Make sure to have the zlib libs and headers installed."
3565 fi
3566 fi
3567fi
3568
Fam Zhenge26110c2014-02-10 14:48:57 +08003569##########################################
3570# SHA command probe for modules
3571if test "$modules" = yes; then
3572 shacmd_probe="sha1sum sha1 shasum"
3573 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003574 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003575 shacmd="$c"
3576 break
3577 fi
3578 done
3579 if test "$shacmd" = ""; then
3580 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3581 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003582fi
3583
3584##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003585# pixman support probe
3586
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003587if test "$want_tools" = "no" -a "$softmmu" = "no"; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003588 pixman_cflags=
3589 pixman_libs=
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003590elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Stefan Weil89138852016-05-16 15:10:20 +02003591 pixman_cflags=$($pkg_config --cflags pixman-1)
3592 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003593else
Gerd Hoffmannc12b6d72017-09-05 16:01:15 +02003594 error_exit "pixman >= 0.21.8 not present." \
3595 "Please install the pixman devel package."
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003596fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003597
3598##########################################
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003599# libmpathpersist probe
3600
3601if test "$mpath" != "no" ; then
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03003602 # probe for the new API
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003603 cat > $TMPC <<EOF
3604#include <libudev.h>
3605#include <mpath_persist.h>
3606unsigned mpath_mx_alloc_len = 1024;
3607int logsink;
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003608static struct config *multipath_conf;
3609extern struct udev *udev;
3610extern struct config *get_multipath_config(void);
3611extern void put_multipath_config(struct config *conf);
3612struct udev *udev;
3613struct config *get_multipath_config(void) { return multipath_conf; }
3614void put_multipath_config(struct config *conf) { }
3615
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003616int main(void) {
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003617 udev = udev_new();
3618 multipath_conf = mpath_lib_init();
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003619 return 0;
3620}
3621EOF
3622 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3623 mpathpersist=yes
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03003624 mpathpersist_new_api=yes
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003625 else
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03003626 # probe for the old API
3627 cat > $TMPC <<EOF
3628#include <libudev.h>
3629#include <mpath_persist.h>
3630unsigned mpath_mx_alloc_len = 1024;
3631int logsink;
3632int main(void) {
3633 struct udev *udev = udev_new();
3634 mpath_lib_init(udev);
3635 return 0;
3636}
3637EOF
3638 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3639 mpathpersist=yes
3640 mpathpersist_new_api=no
3641 else
3642 mpathpersist=no
3643 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003644 fi
3645else
3646 mpathpersist=no
3647fi
3648
3649##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303650# libcap probe
3651
3652if test "$cap" != "no" ; then
3653 cat > $TMPC <<EOF
3654#include <stdio.h>
3655#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003656int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303657EOF
3658 if compile_prog "" "-lcap" ; then
3659 cap=yes
3660 else
3661 cap=no
3662 fi
3663fi
3664
3665##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003666# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003667PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003668
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003669pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003670cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003671#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003672static void *f(void *p) { return NULL; }
3673int main(void) {
3674 pthread_t thread;
3675 pthread_create(&thread, 0, f, 0);
3676 return 0;
3677}
blueswir1414f0da2008-08-15 18:20:52 +00003678EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003679if compile_prog "" "" ; then
3680 pthread=yes
3681else
3682 for pthread_lib in $PTHREADLIBS_LIST; do
3683 if compile_prog "" "$pthread_lib" ; then
3684 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003685 found=no
3686 for lib_entry in $LIBS; do
3687 if test "$lib_entry" = "$pthread_lib"; then
3688 found=yes
3689 break
3690 fi
3691 done
3692 if test "$found" = "no"; then
3693 LIBS="$pthread_lib $LIBS"
Marc-André Lureau14ab3aa2018-01-04 17:05:06 +01003694 libs_qga="$pthread_lib $libs_qga"
Peter Portantee3c56762012-04-20 10:36:12 -04003695 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003696 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003697 break
3698 fi
3699 done
3700fi
blueswir1414f0da2008-08-15 18:20:52 +00003701
Anthony Liguori4617e592009-08-25 17:21:56 -05003702if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003703 error_exit "pthread check failed" \
3704 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003705fi
3706
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003707# check for pthread_setname_np
3708pthread_setname_np=no
3709cat > $TMPC << EOF
3710#include <pthread.h>
3711
3712static void *f(void *p) { return NULL; }
3713int main(void)
3714{
3715 pthread_t thread;
3716 pthread_create(&thread, 0, f, 0);
3717 pthread_setname_np(thread, "QEMU");
3718 return 0;
3719}
3720EOF
3721if compile_prog "" "$pthread_lib" ; then
3722 pthread_setname_np=yes
3723fi
3724
aliguoribf9298b2008-12-05 20:05:26 +00003725##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003726# rbd probe
3727if test "$rbd" != "no" ; then
3728 cat > $TMPC <<EOF
3729#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003730#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003731int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003732 rados_t cluster;
3733 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003734 return 0;
3735}
3736EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003737 rbd_libs="-lrbd -lrados"
3738 if compile_prog "" "$rbd_libs" ; then
3739 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003740 else
3741 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003742 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003743 fi
3744 rbd=no
3745 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003746fi
3747
3748##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003749# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003750min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003751if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003752 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003753 libssh2_cflags=$($pkg_config libssh2 --cflags)
3754 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003755 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003756 else
3757 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003758 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003759 fi
3760 libssh2=no
3761 fi
3762fi
3763
3764##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003765# libssh2_sftp_fsync probe
3766
3767if test "$libssh2" = "yes"; then
3768 cat > $TMPC <<EOF
3769#include <stdio.h>
3770#include <libssh2.h>
3771#include <libssh2_sftp.h>
3772int main(void) {
3773 LIBSSH2_SESSION *session;
3774 LIBSSH2_SFTP *sftp;
3775 LIBSSH2_SFTP_HANDLE *sftp_handle;
3776 session = libssh2_session_init ();
3777 sftp = libssh2_sftp_init (session);
3778 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3779 libssh2_sftp_fsync (sftp_handle);
3780 return 0;
3781}
3782EOF
3783 # libssh2_cflags/libssh2_libs defined in previous test.
3784 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3785 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3786 fi
3787fi
3788
3789##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003790# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003791
3792if test "$linux_aio" != "no" ; then
3793 cat > $TMPC <<EOF
3794#include <libaio.h>
3795#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003796#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003797int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3798EOF
3799 if compile_prog "" "-laio" ; then
3800 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003801 else
3802 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003803 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003804 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003805 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003806 fi
3807fi
3808
3809##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003810# TPM passthrough is only on x86 Linux
3811
3812if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3813 tpm_passthrough=$tpm
3814else
3815 tpm_passthrough=no
3816fi
3817
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003818# TPM emulator is for all posix systems
3819if test "$mingw32" != "yes"; then
3820 tpm_emulator=$tpm
3821else
3822 tpm_emulator=no
3823fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003824##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003825# attr probe
3826
3827if test "$attr" != "no" ; then
3828 cat > $TMPC <<EOF
3829#include <stdio.h>
3830#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003831#ifdef CONFIG_LIBATTR
3832#include <attr/xattr.h>
3833#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003834#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003835#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003836int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3837EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003838 if compile_prog "" "" ; then
3839 attr=yes
3840 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003841 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003842 attr=yes
3843 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003844 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003845 else
3846 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003847 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003848 fi
3849 attr=no
3850 fi
3851fi
3852
3853##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003854# iovec probe
3855cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003856#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003857#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003858#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003859int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003860EOF
3861iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003862if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003863 iovec=yes
3864fi
3865
aurel32f652e6a2008-12-16 10:43:48 +00003866##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003867# preadv probe
3868cat > $TMPC <<EOF
3869#include <sys/types.h>
3870#include <sys/uio.h>
3871#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003872int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003873EOF
3874preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003875if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003876 preadv=yes
3877fi
3878
3879##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003880# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003881# fdt support is mandatory for at least some target architectures,
3882# so insist on it if we're building those system emulators.
3883fdt_required=no
3884for target in $target_list; do
3885 case $target in
KONRAD Frederica6664092018-05-03 17:17:16 +02003886 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003887 fdt_required=yes
3888 ;;
3889 esac
3890done
3891
3892if test "$fdt_required" = "yes"; then
3893 if test "$fdt" = "no"; then
3894 error_exit "fdt disabled but some requested targets require it." \
3895 "You can turn off fdt only if you also disable all the system emulation" \
3896 "targets which need it (by specifying a cut down --target-list)."
3897 fi
3898 fdt=yes
3899fi
3900
Juan Quintela2df87df2009-08-12 18:29:54 +02003901if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003902 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003903 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003904 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003905 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003906#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003907#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003908int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003909EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003910 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003911 # system DTC is good - use it
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03003912 fdt=system
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003913 else
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003914 # have GIT checkout, so activate dtc submodule
3915 if test -e "${source_path}/.git" ; then
3916 git_submodules="${git_submodules} dtc"
3917 fi
3918 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03003919 fdt=git
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003920 mkdir -p dtc
3921 if [ "$pwd_is_source_path" != "y" ] ; then
3922 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3923 symlink "$source_path/dtc/scripts" "dtc/scripts"
3924 fi
3925 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03003926 fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt"
3927 fdt_libs="$fdt_libs"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003928 elif test "$fdt" = "yes" ; then
3929 # Not a git build & no libfdt found, prompt for system install
3930 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3931 "Please install the DTC (libfdt) devel package"
3932 else
3933 # don't have and don't want
3934 fdt_libs=
3935 fdt=no
3936 fi
aurel32f652e6a2008-12-16 10:43:48 +00003937 fi
3938fi
3939
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003940libs_softmmu="$libs_softmmu $fdt_libs"
3941
Michael Walle20ff0752011-03-07 23:32:39 +01003942##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003943# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003944
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003945if test "$opengl" != "no" ; then
Michael Tokarev4939a1d2018-06-30 19:54:48 +03003946 opengl_pkgs="epoxy gbm"
Gerd Hoffmann5f9b1e32018-03-01 11:05:43 +01003947 if $pkg_config $opengl_pkgs; then
3948 opengl_cflags="$($pkg_config --cflags $opengl_pkgs)"
3949 opengl_libs="$($pkg_config --libs $opengl_pkgs)"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003950 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003951 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3952 gtk_gl="yes"
3953 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003954 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003955 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003956 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003957 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003958 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003959 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003960 opengl_libs=""
3961 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003962 fi
3963fi
3964
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003965if test "$opengl" = "yes"; then
3966 cat > $TMPC << EOF
3967#include <epoxy/egl.h>
3968#ifndef EGL_MESA_image_dma_buf_export
3969# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3970#endif
3971int main(void) { return 0; }
3972EOF
3973 if compile_prog "" "" ; then
3974 opengl_dmabuf=yes
3975 fi
3976fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003977
Klim Kireeved279a02018-01-12 12:01:19 +03003978##########################################
3979# libxml2 probe
3980if test "$libxml2" != "no" ; then
3981 if $pkg_config --exists libxml-2.0; then
3982 libxml2="yes"
3983 libxml2_cflags=$($pkg_config --cflags libxml-2.0)
3984 libxml2_libs=$($pkg_config --libs libxml-2.0)
3985 else
3986 if test "$libxml2" = "yes"; then
3987 feature_not_found "libxml2" "Install libxml2 devel"
3988 fi
3989 libxml2="no"
3990 fi
3991fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003992
Bharata B Raoeb100392012-09-24 14:42:45 +05303993##########################################
3994# glusterfs probe
3995if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003996 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303997 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003998 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3999 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04004000 if $pkg_config --atleast-version=4 glusterfs-api; then
4001 glusterfs_xlator_opt="yes"
4002 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004003 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05304004 glusterfs_discard="yes"
4005 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05304006 if $pkg_config --atleast-version=6 glusterfs-api; then
Niels de Vosdf3a4292017-05-28 12:01:14 +05304007 glusterfs_fallocate="yes"
Bharata B Rao7c815372013-12-21 14:51:25 +05304008 glusterfs_zerofill="yes"
4009 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05304010 else
4011 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004012 feature_not_found "GlusterFS backend support" \
4013 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05304014 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05304015 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05304016 fi
4017fi
4018
aurel3239386ac2009-04-15 19:48:17 +00004019# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00004020# emulator. This is done because older glibc versions don't
4021# have syscall stubs for these implemented. In that case we
4022# don't provide them even if kernel supports them.
4023#
4024inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03004025cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00004026#include <sys/inotify.h>
4027
4028int
4029main(void)
4030{
4031 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00004032 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00004033}
4034EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004035if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03004036 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00004037fi
4038
Riku Voipioc05c7a72010-03-26 15:25:11 +00004039inotify1=no
4040cat > $TMPC << EOF
4041#include <sys/inotify.h>
4042
4043int
4044main(void)
4045{
4046 /* try to start inotify */
4047 return inotify_init1(0);
4048}
4049EOF
4050if compile_prog "" "" ; then
4051 inotify1=yes
4052fi
4053
Riku Voipio099d6b02009-05-05 12:10:04 +03004054# check if pipe2 is there
4055pipe2=no
4056cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03004057#include <unistd.h>
4058#include <fcntl.h>
4059
4060int main(void)
4061{
4062 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06004063 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03004064}
4065EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004066if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03004067 pipe2=yes
4068fi
4069
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004070# check if accept4 is there
4071accept4=no
4072cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004073#include <sys/socket.h>
4074#include <stddef.h>
4075
4076int main(void)
4077{
4078 accept4(0, NULL, NULL, SOCK_CLOEXEC);
4079 return 0;
4080}
4081EOF
4082if compile_prog "" "" ; then
4083 accept4=yes
4084fi
4085
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304086# check if tee/splice is there. vmsplice was added same time.
4087splice=no
4088cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304089#include <unistd.h>
4090#include <fcntl.h>
4091#include <limits.h>
4092
4093int main(void)
4094{
Stefan Weil66ea0f22011-12-17 09:27:35 +01004095 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304096 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
4097 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
4098 return 0;
4099}
4100EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004101if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304102 splice=yes
4103fi
4104
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004105##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004106# libnuma probe
4107
4108if test "$numa" != "no" ; then
4109 cat > $TMPC << EOF
4110#include <numa.h>
4111int main(void) { return numa_available(); }
4112EOF
4113
4114 if compile_prog "" "-lnuma" ; then
4115 numa=yes
4116 libs_softmmu="-lnuma $libs_softmmu"
4117 else
4118 if test "$numa" = "yes" ; then
4119 feature_not_found "numa" "install numactl devel"
4120 fi
4121 numa=no
4122 fi
4123fi
4124
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004125if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
4126 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
4127 exit 1
4128fi
4129
Yang Zhong5a22ab72017-12-20 21:16:46 +08004130# Even if malloc_trim() is available, these non-libc memory allocators
4131# do not support it.
4132if test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then
4133 if test "$malloc_trim" = "yes" ; then
4134 echo "Disabling malloc_trim with non-libc memory allocator"
4135 fi
4136 malloc_trim="no"
4137fi
4138
4139#######################################
4140# malloc_trim
4141
4142if test "$malloc_trim" != "no" ; then
4143 cat > $TMPC << EOF
4144#include <malloc.h>
4145int main(void) { malloc_trim(0); return 0; }
4146EOF
4147 if compile_prog "" "" ; then
4148 malloc_trim="yes"
4149 else
4150 malloc_trim="no"
4151 fi
4152fi
4153
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004154##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08004155# tcmalloc probe
4156
4157if test "$tcmalloc" = "yes" ; then
4158 cat > $TMPC << EOF
4159#include <stdlib.h>
4160int main(void) { malloc(1); return 0; }
4161EOF
4162
4163 if compile_prog "" "-ltcmalloc" ; then
4164 LIBS="-ltcmalloc $LIBS"
4165 else
4166 feature_not_found "tcmalloc" "install gperftools devel"
4167 fi
4168fi
4169
4170##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004171# jemalloc probe
4172
4173if test "$jemalloc" = "yes" ; then
4174 cat > $TMPC << EOF
4175#include <stdlib.h>
4176int main(void) { malloc(1); return 0; }
4177EOF
4178
4179 if compile_prog "" "-ljemalloc" ; then
4180 LIBS="-ljemalloc $LIBS"
4181 else
4182 feature_not_found "jemalloc" "install jemalloc devel"
4183 fi
4184fi
4185
4186##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004187# signalfd probe
4188signalfd="no"
4189cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004190#include <unistd.h>
4191#include <sys/syscall.h>
4192#include <signal.h>
4193int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4194EOF
4195
4196if compile_prog "" "" ; then
4197 signalfd=yes
4198fi
4199
Riku Voipioc2882b92009-08-12 15:08:24 +03004200# check if eventfd is supported
4201eventfd=no
4202cat > $TMPC << EOF
4203#include <sys/eventfd.h>
4204
4205int main(void)
4206{
Stefan Weil55cc7f32011-12-17 09:27:37 +01004207 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03004208}
4209EOF
4210if compile_prog "" "" ; then
4211 eventfd=yes
4212fi
4213
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004214# check if memfd is supported
4215memfd=no
4216cat > $TMPC << EOF
Paolo Bonzini75e5b702017-11-28 11:51:27 +01004217#include <sys/mman.h>
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004218
4219int main(void)
4220{
4221 return memfd_create("foo", MFD_ALLOW_SEALING);
4222}
4223EOF
4224if compile_prog "" "" ; then
4225 memfd=yes
4226fi
4227
Cortland Tölva955727d2018-10-08 09:35:19 -07004228# check for usbfs
4229have_usbfs=no
4230if test "$linux_user" = "yes"; then
4231 if check_include linux/usbdevice_fs.h; then
4232 have_usbfs=yes
4233 fi
4234 have_usbfs=yes
4235fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004236
Ulrich Hechtd0927932009-09-17 20:22:14 +03004237# check for fallocate
4238fallocate=no
4239cat > $TMPC << EOF
4240#include <fcntl.h>
4241
4242int main(void)
4243{
4244 fallocate(0, 0, 0, 0);
4245 return 0;
4246}
4247EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004248if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004249 fallocate=yes
4250fi
4251
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004252# check for fallocate hole punching
4253fallocate_punch_hole=no
4254cat > $TMPC << EOF
4255#include <fcntl.h>
4256#include <linux/falloc.h>
4257
4258int main(void)
4259{
4260 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4261 return 0;
4262}
4263EOF
4264if compile_prog "" "" ; then
4265 fallocate_punch_hole=yes
4266fi
4267
Denis V. Lunevb953f072015-01-30 11:42:14 +03004268# check that fallocate supports range zeroing inside the file
4269fallocate_zero_range=no
4270cat > $TMPC << EOF
4271#include <fcntl.h>
4272#include <linux/falloc.h>
4273
4274int main(void)
4275{
4276 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4277 return 0;
4278}
4279EOF
4280if compile_prog "" "" ; then
4281 fallocate_zero_range=yes
4282fi
4283
Kevin Wolfed911432014-09-29 17:12:59 +02004284# check for posix_fallocate
4285posix_fallocate=no
4286cat > $TMPC << EOF
4287#include <fcntl.h>
4288
4289int main(void)
4290{
4291 posix_fallocate(0, 0, 0);
4292 return 0;
4293}
4294EOF
4295if compile_prog "" "" ; then
4296 posix_fallocate=yes
4297fi
4298
Peter Maydellc727f472011-01-06 11:05:10 +00004299# check for sync_file_range
4300sync_file_range=no
4301cat > $TMPC << EOF
4302#include <fcntl.h>
4303
4304int main(void)
4305{
4306 sync_file_range(0, 0, 0, 0);
4307 return 0;
4308}
4309EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004310if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00004311 sync_file_range=yes
4312fi
4313
Peter Maydelldace20d2011-01-10 13:11:24 +00004314# check for linux/fiemap.h and FS_IOC_FIEMAP
4315fiemap=no
4316cat > $TMPC << EOF
4317#include <sys/ioctl.h>
4318#include <linux/fs.h>
4319#include <linux/fiemap.h>
4320
4321int main(void)
4322{
4323 ioctl(0, FS_IOC_FIEMAP, 0);
4324 return 0;
4325}
4326EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004327if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00004328 fiemap=yes
4329fi
4330
Ulrich Hechtd0927932009-09-17 20:22:14 +03004331# check for dup3
4332dup3=no
4333cat > $TMPC << EOF
4334#include <unistd.h>
4335
4336int main(void)
4337{
4338 dup3(0, 0, 0);
4339 return 0;
4340}
4341EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01004342if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004343 dup3=yes
4344fi
4345
Alex Bligh4e0c6522013-08-21 16:02:43 +01004346# check for ppoll support
4347ppoll=no
4348cat > $TMPC << EOF
4349#include <poll.h>
4350
4351int main(void)
4352{
4353 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4354 ppoll(&pfd, 1, 0, 0);
4355 return 0;
4356}
4357EOF
4358if compile_prog "" "" ; then
4359 ppoll=yes
4360fi
4361
Alex Blighcd758dd2013-08-21 16:02:44 +01004362# check for prctl(PR_SET_TIMERSLACK , ... ) support
4363prctl_pr_set_timerslack=no
4364cat > $TMPC << EOF
4365#include <sys/prctl.h>
4366
4367int main(void)
4368{
4369 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4370 return 0;
4371}
4372EOF
4373if compile_prog "" "" ; then
4374 prctl_pr_set_timerslack=yes
4375fi
4376
Peter Maydell3b6edd12011-02-15 18:35:05 +00004377# check for epoll support
4378epoll=no
4379cat > $TMPC << EOF
4380#include <sys/epoll.h>
4381
4382int main(void)
4383{
4384 epoll_create(0);
4385 return 0;
4386}
4387EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004388if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004389 epoll=yes
4390fi
4391
Peter Maydell227f0212016-06-06 19:58:11 +01004392# epoll_create1 is a later addition
4393# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00004394epoll_create1=no
4395cat > $TMPC << EOF
4396#include <sys/epoll.h>
4397
4398int main(void)
4399{
Peter Maydell19e83f62011-04-26 16:56:40 +01004400 /* Note that we use epoll_create1 as a value, not as
4401 * a function being called. This is necessary so that on
4402 * old SPARC glibc versions where the function was present in
4403 * the library but not declared in the header file we will
4404 * fail the configure check. (Otherwise we will get a compiler
4405 * warning but not an error, and will proceed to fail the
4406 * qemu compile where we compile with -Werror.)
4407 */
Blue Swirlc075a722012-08-09 20:21:25 +00004408 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00004409}
4410EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004411if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004412 epoll_create1=yes
4413fi
4414
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004415# check for sendfile support
4416sendfile=no
4417cat > $TMPC << EOF
4418#include <sys/sendfile.h>
4419
4420int main(void)
4421{
4422 return sendfile(0, 0, 0, 0);
4423}
4424EOF
4425if compile_prog "" "" ; then
4426 sendfile=yes
4427fi
4428
Riku Voipio51834342014-06-22 11:25:42 +01004429# check for timerfd support (glibc 2.8 and newer)
4430timerfd=no
4431cat > $TMPC << EOF
4432#include <sys/timerfd.h>
4433
4434int main(void)
4435{
4436 return(timerfd_create(CLOCK_REALTIME, 0));
4437}
4438EOF
4439if compile_prog "" "" ; then
4440 timerfd=yes
4441fi
4442
Riku Voipio9af5c902014-08-12 15:58:57 +03004443# check for setns and unshare support
4444setns=no
4445cat > $TMPC << EOF
4446#include <sched.h>
4447
4448int main(void)
4449{
4450 int ret;
4451 ret = setns(0, 0);
4452 ret = unshare(0);
4453 return ret;
4454}
4455EOF
4456if compile_prog "" "" ; then
4457 setns=yes
4458fi
4459
Aleksandar Markovic38860a02016-10-10 13:23:29 +02004460# clock_adjtime probe
4461clock_adjtime=no
4462cat > $TMPC <<EOF
4463#include <time.h>
4464
4465int main(void)
4466{
4467 return clock_adjtime(0, 0);
4468}
4469EOF
4470clock_adjtime=no
4471if compile_prog "" "" ; then
4472 clock_adjtime=yes
4473fi
4474
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02004475# syncfs probe
4476syncfs=no
4477cat > $TMPC <<EOF
4478#include <unistd.h>
4479
4480int main(void)
4481{
4482 return syncfs(0);
4483}
4484EOF
4485syncfs=no
4486if compile_prog "" "" ; then
4487 syncfs=yes
4488fi
4489
pbrookcc8ae6d2006-04-23 17:57:59 +00004490# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004491if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004492 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004493 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004494 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004495 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004496 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004497 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004498 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004499 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004500fi
4501
Stefan Weilf514f412009-10-11 12:44:07 +02004502# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004503byteswap_h=no
4504cat > $TMPC << EOF
4505#include <byteswap.h>
4506int main(void) { return bswap_32(0); }
4507EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004508if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004509 byteswap_h=yes
4510fi
4511
Stefan Weil75f13592013-01-05 12:17:38 +01004512# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004513bswap_h=no
4514cat > $TMPC << EOF
4515#include <sys/endian.h>
4516#include <sys/types.h>
4517#include <machine/bswap.h>
4518int main(void) { return bswap32(0); }
4519EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004520if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004521 bswap_h=yes
4522fi
4523
aliguorida93a1f2008-12-12 20:02:52 +00004524##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004525# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004526if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004527 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004528 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004529 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4530 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004531 else
4532 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004533 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004534 fi
4535 libiscsi="no"
4536 fi
4537fi
4538
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004539##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004540# Do we need libm
4541cat > $TMPC << EOF
4542#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004543int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004544EOF
4545if compile_prog "" "" ; then
4546 :
4547elif compile_prog "" "-lm" ; then
4548 LIBS="-lm $LIBS"
4549 libs_qga="-lm $libs_qga"
4550else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004551 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004552fi
4553
4554##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004555# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004556# uClibc provides 2 versions of clock_gettime(), one with realtime
4557# support and one without. This means that the clock_gettime() don't
4558# need -lrt. We still need it for timer_create() so we check for this
4559# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004560cat > $TMPC <<EOF
4561#include <signal.h>
4562#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004563int main(void) {
4564 timer_create(CLOCK_REALTIME, NULL, NULL);
4565 return clock_gettime(CLOCK_REALTIME, NULL);
4566}
aliguorida93a1f2008-12-12 20:02:52 +00004567EOF
4568
Juan Quintela52166aa2009-08-03 14:46:03 +02004569if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004570 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004571# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004572elif compile_prog "" "$pthread_lib -lrt" ; then
4573 LIBS="$LIBS -lrt"
4574 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004575fi
4576
Blue Swirl31ff5042009-09-12 12:33:07 +00004577if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Peter Maydell78723752017-09-04 18:19:00 +01004578 "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004579 libs_softmmu="-lutil $libs_softmmu"
4580fi
4581
Blue Swirlde5071c2009-09-12 09:58:46 +00004582##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004583# spice probe
4584if test "$spice" != "no" ; then
4585 cat > $TMPC << EOF
4586#include <spice.h>
4587int main(void) { spice_server_new(); return 0; }
4588EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004589 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4590 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004591 if $pkg_config --atleast-version=0.12.0 spice-server && \
4592 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004593 compile_prog "$spice_cflags" "$spice_libs" ; then
4594 spice="yes"
4595 libs_softmmu="$libs_softmmu $spice_libs"
4596 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004597 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4598 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004599 else
4600 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004601 feature_not_found "spice" \
4602 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004603 fi
4604 spice="no"
4605 fi
4606fi
4607
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004608# check for smartcard support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004609if test "$smartcard" != "no"; then
Michal Privoznik0f5c6422018-04-03 12:34:37 +02004610 if $pkg_config --atleast-version=2.5.1 libcacard; then
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004611 libcacard_cflags=$($pkg_config --cflags libcacard)
4612 libcacard_libs=$($pkg_config --libs libcacard)
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004613 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004614 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004615 if test "$smartcard" = "yes"; then
4616 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004617 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004618 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004619 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004620fi
4621
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004622# check for libusb
4623if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004624 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004625 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004626 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4627 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004628 else
4629 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004630 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004631 fi
4632 libusb="no"
4633 fi
4634fi
4635
Hans de Goede69354a82011-07-19 11:04:10 +02004636# check for usbredirparser for usb network redirection support
4637if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004638 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004639 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004640 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4641 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004642 else
4643 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004644 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004645 fi
4646 usb_redir="no"
4647 fi
4648fi
4649
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004650##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004651# check if we have VSS SDK headers for win
4652
4653if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4654 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004655 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004656 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4657 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004658 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004659 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4660 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004661 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004662 esac
4663 cat > $TMPC << EOF
4664#define __MIDL_user_allocate_free_DEFINED__
4665#include <inc/win2003/vss.h>
4666int main(void) { return VSS_CTX_BACKUP; }
4667EOF
4668 if compile_prog "$vss_win32_include" "" ; then
4669 guest_agent_with_vss="yes"
4670 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004671 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004672 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004673 else
4674 if test "$vss_win32_sdk" != "" ; then
4675 echo "ERROR: Please download and install Microsoft VSS SDK:"
4676 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4677 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4678 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4679 echo "ERROR: The headers are extracted in the directory \`inc'."
4680 feature_not_found "VSS support"
4681 fi
4682 guest_agent_with_vss="no"
4683 fi
4684fi
4685
4686##########################################
4687# lookup Windows platform SDK (if not specified)
4688# The SDK is needed only to build .tlb (type library) file of guest agent
4689# VSS provider from the source. It is usually unnecessary because the
4690# pre-compiled .tlb file is included.
4691
4692if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4693 if test -z "$win_sdk"; then
4694 programfiles="$PROGRAMFILES"
4695 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4696 if test -n "$programfiles"; then
4697 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4698 else
4699 feature_not_found "Windows SDK"
4700 fi
4701 elif test "$win_sdk" = "no"; then
4702 win_sdk=""
4703 fi
4704fi
4705
4706##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004707# check if mingw environment provides a recent ntddscsi.h
4708if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4709 cat > $TMPC << EOF
4710#include <windows.h>
4711#include <ntddscsi.h>
4712int main(void) {
4713#if !defined(IOCTL_SCSI_GET_ADDRESS)
4714#error Missing required ioctl definitions
4715#endif
4716 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4717 return addr.Lun;
4718}
4719EOF
4720 if compile_prog "" "" ; then
4721 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004722 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004723 fi
4724fi
4725
4726##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004727# virgl renderer probe
4728
4729if test "$virglrenderer" != "no" ; then
4730 cat > $TMPC << EOF
4731#include <virglrenderer.h>
4732int main(void) { virgl_renderer_poll(); return 0; }
4733EOF
4734 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4735 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
Marc-André Lureau47479c52018-05-25 17:36:09 +02004736 virgl_version=$($pkg_config --modversion virglrenderer 2>/dev/null)
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004737 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4738 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4739 virglrenderer="yes"
4740 else
4741 if test "$virglrenderer" = "yes" ; then
4742 feature_not_found "virglrenderer"
4743 fi
4744 virglrenderer="no"
4745 fi
4746fi
4747
4748##########################################
Richard Henderson8ca80762017-09-14 09:41:12 -07004749# capstone
4750
Richard Hendersone219c492017-09-28 09:01:23 -07004751case "$capstone" in
4752 "" | yes)
4753 if $pkg_config capstone; then
4754 capstone=system
Alexey Kardashevskiy123ac0b2018-01-15 13:35:01 +11004755 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
Richard Hendersone219c492017-09-28 09:01:23 -07004756 capstone=git
4757 elif test -e "${source_path}/capstone/Makefile" ; then
4758 capstone=internal
4759 elif test -z "$capstone" ; then
4760 capstone=no
4761 else
4762 feature_not_found "capstone" "Install capstone devel or git submodule"
4763 fi
4764 ;;
4765
4766 system)
4767 if ! $pkg_config capstone; then
4768 feature_not_found "capstone" "Install capstone devel"
4769 fi
4770 ;;
4771esac
4772
4773case "$capstone" in
4774 git | internal)
4775 if test "$capstone" = git; then
4776 git_submodules="${git_submodules} capstone"
4777 fi
4778 mkdir -p capstone
4779 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4780 if test "$mingw32" = "yes"; then
4781 LIBCAPSTONE=capstone.lib
4782 else
4783 LIBCAPSTONE=libcapstone.a
4784 fi
4785 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4786 ;;
4787
4788 system)
Richard Henderson8ca80762017-09-14 09:41:12 -07004789 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4790 LIBS="$($pkg_config --libs capstone) $LIBS"
Richard Hendersone219c492017-09-28 09:01:23 -07004791 ;;
4792
4793 no)
4794 ;;
4795 *)
4796 error_exit "Unknown state for capstone: $capstone"
4797 ;;
4798esac
Richard Henderson8ca80762017-09-14 09:41:12 -07004799
4800##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004801# check if we have fdatasync
4802
4803fdatasync=no
4804cat > $TMPC << EOF
4805#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004806int main(void) {
4807#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4808return fdatasync(0);
4809#else
Stefan Weile172fe12012-04-06 21:33:20 +02004810#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004811#endif
4812}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004813EOF
4814if compile_prog "" "" ; then
4815 fdatasync=yes
4816fi
4817
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004818##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004819# check if we have madvise
4820
4821madvise=no
4822cat > $TMPC << EOF
4823#include <sys/types.h>
4824#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004825#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004826int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4827EOF
4828if compile_prog "" "" ; then
4829 madvise=yes
4830fi
4831
4832##########################################
4833# check if we have posix_madvise
4834
4835posix_madvise=no
4836cat > $TMPC << EOF
4837#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004838#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004839int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4840EOF
4841if compile_prog "" "" ; then
4842 posix_madvise=yes
4843fi
4844
4845##########################################
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02004846# check if we have posix_memalign()
4847
4848posix_memalign=no
4849cat > $TMPC << EOF
4850#include <stdlib.h>
4851int main(void) {
4852 void *p;
4853 return posix_memalign(&p, 8, 8);
4854}
4855EOF
4856if compile_prog "" "" ; then
4857 posix_memalign=yes
4858fi
4859
4860##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004861# check if we have posix_syslog
4862
4863posix_syslog=no
4864cat > $TMPC << EOF
4865#include <syslog.h>
4866int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4867EOF
4868if compile_prog "" "" ; then
4869 posix_syslog=yes
4870fi
4871
4872##########################################
Peter Maydell401bc052017-09-05 13:19:32 +01004873# check if we have sem_timedwait
4874
4875sem_timedwait=no
4876cat > $TMPC << EOF
4877#include <semaphore.h>
4878int main(void) { return sem_timedwait(0, 0); }
4879EOF
4880if compile_prog "" "" ; then
4881 sem_timedwait=yes
4882fi
4883
4884##########################################
Keno Fischer5c99fa32018-06-29 12:32:10 +02004885# check if we have strchrnul
4886
4887strchrnul=no
4888cat > $TMPC << EOF
4889#include <string.h>
4890int main(void);
4891// Use a haystack that the compiler shouldn't be able to constant fold
4892char *haystack = (char*)&main;
4893int main(void) { return strchrnul(haystack, 'x') != &haystack[6]; }
4894EOF
4895if compile_prog "" "" ; then
4896 strchrnul=yes
4897fi
4898
4899##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004900# check if trace backend exists
4901
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004902$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004903if test "$?" -ne 0 ; then
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004904 error_exit "invalid trace backends" \
4905 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004906fi
4907
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004908##########################################
4909# For 'ust' backend, test if ust headers are present
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004910if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004911 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004912#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004913int main(void) { return 0; }
4914EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004915 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004916 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004917 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004918 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004919 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004920 fi
4921 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004922 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004923 else
4924 urcu_bp_libs="-lurcu-bp"
4925 fi
4926
4927 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4928 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004929 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004930 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004931 fi
4932fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004933
4934##########################################
4935# For 'dtrace' backend, test if 'dtrace' command is present
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02004936if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004937 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004938 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004939 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004940 trace_backend_stap="no"
4941 if has 'stap' ; then
4942 trace_backend_stap="yes"
4943 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004944fi
4945
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004946##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004947# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304948
Peter Maydell7c2acc72013-04-08 12:11:27 +01004949# We prefer ucontext, but it's not always possible. The fallback
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004950# is sigcontext. On Windows the only valid backend is the Windows
4951# specific one.
Peter Maydell7c2acc72013-04-08 12:11:27 +01004952
4953ucontext_works=no
4954if test "$darwin" != "yes"; then
4955 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304956#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004957#ifdef __stub_makecontext
4958#error Ignoring glibc stub makecontext which will always fail
4959#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004960int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304961EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004962 if compile_prog "" "" ; then
4963 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304964 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004965fi
4966
4967if test "$coroutine" = ""; then
4968 if test "$mingw32" = "yes"; then
4969 coroutine=win32
4970 elif test "$ucontext_works" = "yes"; then
4971 coroutine=ucontext
4972 else
4973 coroutine=sigaltstack
4974 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004975else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004976 case $coroutine in
4977 windows)
4978 if test "$mingw32" != "yes"; then
4979 error_exit "'windows' coroutine backend only valid for Windows"
4980 fi
4981 # Unfortunately the user visible backend name doesn't match the
4982 # coroutine-*.c filename for this case, so we have to adjust it here.
4983 coroutine=win32
4984 ;;
4985 ucontext)
4986 if test "$ucontext_works" != "yes"; then
4987 feature_not_found "ucontext"
4988 fi
4989 ;;
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004990 sigaltstack)
Peter Maydell7c2acc72013-04-08 12:11:27 +01004991 if test "$mingw32" = "yes"; then
4992 error_exit "only the 'windows' coroutine backend is valid for Windows"
4993 fi
4994 ;;
4995 *)
4996 error_exit "unknown coroutine backend $coroutine"
4997 ;;
4998 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304999fi
5000
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005001if test "$coroutine_pool" = ""; then
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01005002 coroutine_pool=yes
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005003fi
5004
Peter Lieven7d992e42016-09-27 11:58:45 +02005005if test "$debug_stack_usage" = "yes"; then
Peter Lieven7d992e42016-09-27 11:58:45 +02005006 if test "$coroutine_pool" = "yes"; then
5007 echo "WARN: disabling coroutine pool for stack usage debugging"
5008 coroutine_pool=no
5009 fi
5010fi
5011
5012
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305013##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305014# check if we have open_by_handle_at
5015
Stefan Weil4e1797f2012-06-18 22:11:06 +02005016open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305017cat > $TMPC << EOF
5018#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00005019#if !defined(AT_EMPTY_PATH)
5020# error missing definition
5021#else
Stefan Weil75cafad2011-12-17 09:27:29 +01005022int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00005023#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305024EOF
5025if compile_prog "" "" ; then
5026 open_by_handle_at=yes
5027fi
5028
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305029########################################
5030# check if we have linux/magic.h
5031
5032linux_magic_h=no
5033cat > $TMPC << EOF
5034#include <linux/magic.h>
5035int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01005036 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305037}
5038EOF
5039if compile_prog "" "" ; then
5040 linux_magic_h=yes
5041fi
5042
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005043########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01005044# check whether we can disable warning option with a pragma (this is needed
5045# to silence warnings in the headers of some versions of external libraries).
5046# This test has to be compiled with -Werror as otherwise an unknown pragma is
5047# only a warning.
5048#
5049# If we can't selectively disable warning in the code, disable -Werror so that
5050# the build doesn't fail anyway.
5051
Peter Maydell06d71fa2012-07-30 16:13:07 +01005052pragma_disable_unused_but_set=no
5053cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02005054#pragma GCC diagnostic push
Kevin Wolfc95e3082013-02-22 21:08:51 +01005055#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02005056#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01005057
Peter Maydell06d71fa2012-07-30 16:13:07 +01005058int main(void) {
5059 return 0;
5060}
5061EOF
5062if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005063 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01005064else
5065 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01005066fi
5067
5068########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02005069# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005070
5071valgrind_h=no
5072cat > $TMPC << EOF
5073#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005074int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005075 return 0;
5076}
5077EOF
5078if compile_prog "" "" ; then
5079 valgrind_h=yes
5080fi
5081
5082########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005083# check if environ is declared
5084
5085has_environ=no
5086cat > $TMPC << EOF
5087#include <unistd.h>
5088int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00005089 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005090 return 0;
5091}
5092EOF
5093if compile_prog "" "" ; then
5094 has_environ=yes
5095fi
5096
Richard Henderson76a347e2012-12-28 14:17:02 -08005097########################################
5098# check if cpuid.h is usable.
5099
Richard Henderson76a347e2012-12-28 14:17:02 -08005100cat > $TMPC << EOF
5101#include <cpuid.h>
5102int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00005103 unsigned a, b, c, d;
5104 int max = __get_cpuid_max(0, 0);
5105
5106 if (max >= 1) {
5107 __cpuid(1, a, b, c, d);
5108 }
5109
5110 if (max >= 7) {
5111 __cpuid_count(7, 0, a, b, c, d);
5112 }
5113
5114 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08005115}
5116EOF
5117if compile_prog "" "" ; then
5118 cpuid_h=yes
5119fi
5120
Richard Henderson5dd89902017-07-18 18:40:18 -10005121##########################################
5122# avx2 optimization requirement check
5123#
5124# There is no point enabling this if cpuid.h is not usable,
5125# since we won't be able to select the new routines.
5126
Liam Merwick86583a02018-10-19 21:38:59 +01005127if test "$cpuid_h" = "yes" -a "$avx2_opt" != "no"; then
Richard Henderson5dd89902017-07-18 18:40:18 -10005128 cat > $TMPC << EOF
5129#pragma GCC push_options
5130#pragma GCC target("avx2")
5131#include <cpuid.h>
5132#include <immintrin.h>
5133static int bar(void *a) {
5134 __m256i x = *(__m256i *)a;
5135 return _mm256_testz_si256(x, x);
5136}
5137int main(int argc, char *argv[]) { return bar(argv[0]); }
5138EOF
5139 if compile_object "" ; then
5140 avx2_opt="yes"
Liam Merwick86583a02018-10-19 21:38:59 +01005141 else
5142 avx2_opt="no"
Richard Henderson5dd89902017-07-18 18:40:18 -10005143 fi
5144fi
5145
Richard Hendersonf5401662013-02-16 12:46:59 -08005146########################################
5147# check if __[u]int128_t is usable.
5148
5149int128=no
5150cat > $TMPC << EOF
5151__int128_t a;
5152__uint128_t b;
5153int main (void) {
5154 a = a + b;
5155 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01005156 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08005157 return 0;
5158}
5159EOF
5160if compile_prog "" "" ; then
5161 int128=yes
5162fi
Richard Henderson76a347e2012-12-28 14:17:02 -08005163
Richard Henderson7ebee432016-06-29 21:10:59 -07005164#########################################
5165# See if 128-bit atomic operations are supported.
5166
5167atomic128=no
5168if test "$int128" = "yes"; then
5169 cat > $TMPC << EOF
5170int main(void)
5171{
5172 unsigned __int128 x = 0, y = 0;
5173 y = __atomic_load_16(&x, 0);
5174 __atomic_store_16(&x, y, 0);
5175 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5176 return 0;
5177}
5178EOF
5179 if compile_prog "" "" ; then
5180 atomic128=yes
5181 fi
5182fi
5183
Richard Hendersone6cd4bb2018-08-15 16:31:47 -07005184cmpxchg128=no
5185if test "$int128" = yes -a "$atomic128" = no; then
5186 cat > $TMPC << EOF
5187int main(void)
5188{
5189 unsigned __int128 x = 0, y = 0;
5190 __sync_val_compare_and_swap_16(&x, y, x);
5191 return 0;
5192}
5193EOF
5194 if compile_prog "" "" ; then
5195 cmpxchg128=yes
5196 fi
5197fi
5198
Richard Hendersondf79b992016-09-02 12:23:57 -07005199#########################################
5200# See if 64-bit atomic operations are supported.
5201# Note that without __atomic builtins, we can only
5202# assume atomic loads/stores max at pointer size.
5203
5204cat > $TMPC << EOF
5205#include <stdint.h>
5206int main(void)
5207{
5208 uint64_t x = 0, y = 0;
5209#ifdef __ATOMIC_RELAXED
5210 y = __atomic_load_8(&x, 0);
5211 __atomic_store_8(&x, y, 0);
5212 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5213 __atomic_exchange_8(&x, y, 0);
5214 __atomic_fetch_add_8(&x, y, 0);
5215#else
5216 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5217 __sync_lock_test_and_set(&x, y);
5218 __sync_val_compare_and_swap(&x, y, 0);
5219 __sync_fetch_and_add(&x, y);
5220#endif
5221 return 0;
5222}
5223EOF
5224if compile_prog "" "" ; then
5225 atomic64=yes
5226fi
5227
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005228########################################
Richard Hendersondb432672017-09-15 14:11:45 -07005229# See if 16-byte vector operations are supported.
5230# Even without a vector unit the compiler may expand these.
5231# There is a bug in old GCC for PPC that crashes here.
5232# Unfortunately it's the system compiler for Centos 7.
5233
5234cat > $TMPC << EOF
5235typedef unsigned char U1 __attribute__((vector_size(16)));
5236typedef unsigned short U2 __attribute__((vector_size(16)));
5237typedef unsigned int U4 __attribute__((vector_size(16)));
5238typedef unsigned long long U8 __attribute__((vector_size(16)));
5239typedef signed char S1 __attribute__((vector_size(16)));
5240typedef signed short S2 __attribute__((vector_size(16)));
5241typedef signed int S4 __attribute__((vector_size(16)));
5242typedef signed long long S8 __attribute__((vector_size(16)));
5243static U1 a1, b1;
5244static U2 a2, b2;
5245static U4 a4, b4;
5246static U8 a8, b8;
5247static S1 c1;
5248static S2 c2;
5249static S4 c4;
5250static S8 c8;
5251static int i;
Laurent Vivier74912f62018-03-28 15:31:52 +02005252void helper(void *d, void *a, int shift, int i);
5253void helper(void *d, void *a, int shift, int i)
5254{
5255 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5256 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5257 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5258 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5259}
Richard Hendersondb432672017-09-15 14:11:45 -07005260int main(void)
5261{
5262 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5263 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5264 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5265 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5266 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5267 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5268 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5269 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5270 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5271 return 0;
5272}
5273EOF
5274
5275vector16=no
5276if compile_prog "" "" ; then
5277 vector16=yes
5278fi
5279
5280########################################
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005281# check if getauxval is available.
5282
5283getauxval=no
5284cat > $TMPC << EOF
5285#include <sys/auxv.h>
5286int main(void) {
5287 return getauxval(AT_HWCAP) == 0;
5288}
5289EOF
5290if compile_prog "" "" ; then
5291 getauxval=yes
5292fi
5293
John Snowfd0e6052015-03-25 18:57:39 -04005294########################################
5295# check if ccache is interfering with
5296# semantic analysis of macros
5297
John Snow5e4dfd32015-10-28 13:56:40 -04005298unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04005299ccache_cpp2=no
5300cat > $TMPC << EOF
5301static const int Z = 1;
5302#define fn() ({ Z; })
5303#define TAUT(X) ((X) == Z)
5304#define PAREN(X, Y) (X == Y)
5305#define ID(X) (X)
5306int main(int argc, char *argv[])
5307{
5308 int x = 0, y = 0;
5309 x = ID(x);
5310 x = fn();
5311 fn();
5312 if (PAREN(x, y)) return 0;
5313 if (TAUT(Z)) return 0;
5314 return 0;
5315}
5316EOF
5317
5318if ! compile_object "-Werror"; then
5319 ccache_cpp2=yes
5320fi
5321
John Snowb553a042015-11-03 15:43:42 -05005322#################################################
5323# clang does not support glibc + FORTIFY_SOURCE.
5324
5325if test "$fortify_source" != "no"; then
5326 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
5327 fortify_source="no";
Peter Maydelle1890912017-06-26 16:25:24 +01005328 elif test -n "$cxx" && has $cxx &&
John Snowcfcc7c12015-11-12 11:29:49 -05005329 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05005330 fortify_source="no";
5331 else
5332 fortify_source="yes"
5333 fi
5334fi
5335
Fam Zheng1efad062018-06-01 17:26:43 +08005336###############################################
5337# Check if copy_file_range is provided by glibc
5338have_copy_file_range=no
5339cat > $TMPC << EOF
5340#include <unistd.h>
5341int main(void) {
5342 copy_file_range(0, NULL, 0, NULL, 0, 0);
5343 return 0;
5344}
5345EOF
5346if compile_prog "" "" ; then
5347 have_copy_file_range=yes
5348fi
5349
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305350##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04005351# check if struct fsxattr is available via linux/fs.h
5352
5353have_fsxattr=no
5354cat > $TMPC << EOF
5355#include <linux/fs.h>
5356struct fsxattr foo;
5357int main(void) {
5358 return 0;
5359}
5360EOF
5361if compile_prog "" "" ; then
5362 have_fsxattr=yes
5363fi
5364
Peter Maydellb66e10e2016-06-08 18:34:32 +01005365##########################################
Paolo Bonzinia40161c2018-02-16 10:05:23 +01005366# check for usable membarrier system call
5367if test "$membarrier" = "yes"; then
5368 have_membarrier=no
5369 if test "$mingw32" = "yes" ; then
5370 have_membarrier=yes
5371 elif test "$linux" = "yes" ; then
5372 cat > $TMPC << EOF
5373 #include <linux/membarrier.h>
5374 #include <sys/syscall.h>
5375 #include <unistd.h>
5376 #include <stdlib.h>
5377 int main(void) {
5378 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5379 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5380 exit(0);
5381 }
5382EOF
5383 if compile_prog "" "" ; then
5384 have_membarrier=yes
5385 fi
5386 fi
5387 if test "$have_membarrier" = "no"; then
5388 feature_not_found "membarrier" "membarrier system call not available"
5389 fi
5390else
5391 # Do not enable it by default even for Mingw32, because it doesn't
5392 # work on Wine.
5393 membarrier=no
5394fi
5395
5396##########################################
Peter Maydellb66e10e2016-06-08 18:34:32 +01005397# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02005398have_rtnetlink=no
5399cat > $TMPC << EOF
5400#include <linux/rtnetlink.h>
5401int main(void) {
5402 return IFLA_PROTO_DOWN;
5403}
5404EOF
5405if compile_prog "" "" ; then
5406 have_rtnetlink=yes
5407fi
5408
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01005409##########################################
5410# check for usable AF_VSOCK environment
5411have_af_vsock=no
5412cat > $TMPC << EOF
5413#include <errno.h>
5414#include <sys/types.h>
5415#include <sys/socket.h>
5416#if !defined(AF_VSOCK)
5417# error missing AF_VSOCK flag
5418#endif
5419#include <linux/vm_sockets.h>
5420int main(void) {
5421 int sock, ret;
5422 struct sockaddr_vm svm;
5423 socklen_t len = sizeof(svm);
5424 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5425 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5426 if ((ret == -1) && (errno == ENOTCONN)) {
5427 return 0;
5428 }
5429 return -1;
5430}
5431EOF
5432if compile_prog "" "" ; then
5433 have_af_vsock=yes
5434fi
5435
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005436##########################################
5437# check for usable AF_ALG environment
5438hava_afalg=no
5439cat > $TMPC << EOF
5440#include <errno.h>
5441#include <sys/types.h>
5442#include <sys/socket.h>
5443#include <linux/if_alg.h>
5444int main(void) {
5445 int sock;
5446 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5447 return sock;
5448}
5449EOF
5450if compile_prog "" "" ; then
5451 have_afalg=yes
5452fi
5453if test "$crypto_afalg" = "yes"
5454then
5455 if test "$have_afalg" != "yes"
5456 then
5457 error_exit "AF_ALG requested but could not be detected"
5458 fi
5459fi
5460
5461
James Clarke6969ec62016-06-06 12:02:50 +01005462#################################################
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005463# Check to see if we have the Hypervisor framework
Peter Maydelld2d08522018-01-08 17:10:42 +00005464if [ "$darwin" = "yes" ] ; then
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005465 cat > $TMPC << EOF
5466#include <Hypervisor/hv.h>
5467int main() { return 0;}
5468EOF
5469 if ! compile_object ""; then
5470 hvf='no'
5471 else
5472 hvf='yes'
5473 LDFLAGS="-framework Hypervisor $LDFLAGS"
5474 fi
5475fi
5476
5477#################################################
James Clarke6969ec62016-06-06 12:02:50 +01005478# Sparc implicitly links with --relax, which is
5479# incompatible with -r, so --no-relax should be
5480# given. It does no harm to give it on other
5481# platforms too.
5482
5483# Note: the prototype is needed since QEMU_CFLAGS
5484# contains -Wmissing-prototypes
5485cat > $TMPC << EOF
5486extern int foo(void);
5487int foo(void) { return 0; }
5488EOF
5489if ! compile_object ""; then
5490 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5491fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01005492for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5493 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5494 LD_REL_FLAGS=$i
5495 break
5496 fi
5497done
5498if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5499 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01005500fi
5501
Jan Vesely277abf12016-04-29 13:15:23 -04005502##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05005503# check for sysmacros.h
5504
5505have_sysmacros=no
5506cat > $TMPC << EOF
5507#include <sys/sysmacros.h>
5508int main(void) {
5509 return makedev(0, 0);
5510}
5511EOF
5512if compile_prog "" "" ; then
5513 have_sysmacros=yes
5514fi
5515
5516##########################################
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005517# Veritas HyperScale block driver VxHS
5518# Check if libvxhs is installed
5519
5520if test "$vxhs" != "no" ; then
5521 cat > $TMPC <<EOF
5522#include <stdint.h>
5523#include <qnio/qnio_api.h>
5524
5525void *vxhs_callback;
5526
5527int main(void) {
5528 iio_init(QNIO_VERSION, vxhs_callback);
5529 return 0;
5530}
5531EOF
5532 vxhs_libs="-lvxhs -lssl"
5533 if compile_prog "" "$vxhs_libs" ; then
5534 vxhs=yes
5535 else
5536 if test "$vxhs" = "yes" ; then
5537 feature_not_found "vxhs block device" "Install libvxhs See github"
5538 fi
5539 vxhs=no
5540 fi
5541fi
5542
5543##########################################
Andreas Grapentin49e00a12017-03-14 17:59:53 +01005544# check for _Static_assert()
5545
5546have_static_assert=no
5547cat > $TMPC << EOF
5548_Static_assert(1, "success");
5549int main(void) {
5550 return 0;
5551}
5552EOF
5553if compile_prog "" "" ; then
5554 have_static_assert=yes
5555fi
5556
5557##########################################
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02005558# check for utmpx.h, it is missing e.g. on OpenBSD
5559
5560have_utmpx=no
5561cat > $TMPC << EOF
5562#include <utmpx.h>
5563struct utmpx user_info;
5564int main(void) {
5565 return 0;
5566}
5567EOF
5568if compile_prog "" "" ; then
5569 have_utmpx=yes
5570fi
5571
5572##########################################
Marc-André Lureau247724c2018-01-16 16:11:51 +01005573# checks for sanitizers
5574
Marc-André Lureau247724c2018-01-16 16:11:51 +01005575have_asan=no
5576have_ubsan=no
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005577have_asan_iface_h=no
5578have_asan_iface_fiber=no
Marc-André Lureau247724c2018-01-16 16:11:51 +01005579
5580if test "$sanitizers" = "yes" ; then
Marc-André Lureaub9f44da2018-02-15 22:25:47 +01005581 write_c_skeleton
Marc-André Lureau247724c2018-01-16 16:11:51 +01005582 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5583 have_asan=yes
5584 fi
Marc-André Lureaub9f44da2018-02-15 22:25:47 +01005585
5586 # we could use a simple skeleton for flags checks, but this also
5587 # detect the static linking issue of ubsan, see also:
5588 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5589 cat > $TMPC << EOF
5590#include <stdlib.h>
5591int main(void) {
5592 void *tmp = malloc(10);
5593 return *(int *)(tmp + 2);
5594}
5595EOF
Marc-André Lureau247724c2018-01-16 16:11:51 +01005596 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5597 have_ubsan=yes
5598 fi
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005599
5600 if check_include "sanitizer/asan_interface.h" ; then
5601 have_asan_iface_h=yes
5602 fi
5603
5604 cat > $TMPC << EOF
5605#include <sanitizer/asan_interface.h>
5606int main(void) {
5607 __sanitizer_start_switch_fiber(0, 0, 0);
5608 return 0;
5609}
5610EOF
5611 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5612 have_asan_iface_fiber=yes
5613 fi
Marc-André Lureau247724c2018-01-16 16:11:51 +01005614fi
5615
5616##########################################
Alex Bennée51a12b52018-04-04 14:24:39 +01005617# Docker and cross-compiler support
5618#
5619# This is specifically for building test
5620# cases for foreign architectures, not
5621# cross-compiling QEMU itself.
5622
5623if has "docker"; then
5624 docker=$($python $source_path/tests/docker/docker.py probe)
5625fi
5626
5627##########################################
Junyan He17824402018-07-18 15:47:59 +08005628# check for libpmem
5629
5630if test "$libpmem" != "no"; then
5631 if $pkg_config --exists "libpmem"; then
5632 libpmem="yes"
5633 libpmem_libs=$($pkg_config --libs libpmem)
5634 libpmem_cflags=$($pkg_config --cflags libpmem)
5635 libs_softmmu="$libs_softmmu $libpmem_libs"
5636 QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags"
5637 else
5638 if test "$libpmem" = "yes" ; then
5639 feature_not_found "libpmem" "Install nvml or pmdk"
5640 fi
5641 libpmem="no"
5642 fi
5643fi
5644
5645##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02005646# End of CC checks
5647# After here, no more $cc or $ld runs
5648
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005649write_c_skeleton
5650
Blue Swirl1d728c32012-05-01 18:45:39 +00005651if test "$gcov" = "yes" ; then
5652 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5653 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05005654elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02005655 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Paolo Bonzini48e56d52018-03-06 11:32:44 +01005656elif test "$debug" = "no"; then
5657 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005658fi
Juan Quintelaa316e372009-09-30 01:10:55 +02005659
Marc-André Lureau247724c2018-01-16 16:11:51 +01005660if test "$have_asan" = "yes"; then
5661 CFLAGS="-fsanitize=address $CFLAGS"
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005662 if test "$have_asan_iface_h" = "no" ; then
5663 echo "ASAN build enabled, but ASAN header missing." \
5664 "Without code annotation, the report may be inferior."
5665 elif test "$have_asan_iface_fiber" = "no" ; then
5666 echo "ASAN build enabled, but ASAN header is too old." \
5667 "Without code annotation, the report may be inferior."
5668 fi
Marc-André Lureau247724c2018-01-16 16:11:51 +01005669fi
5670if test "$have_ubsan" = "yes"; then
5671 CFLAGS="-fsanitize=undefined $CFLAGS"
5672fi
5673
Peter Lieven6542aa92014-02-03 10:26:13 +01005674##########################################
5675# Do we have libnfs
5676if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01005677 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01005678 libnfs="yes"
5679 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01005680 else
5681 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08005682 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01005683 fi
5684 libnfs="no"
5685 fi
5686fi
Blue Swirl1d728c32012-05-01 18:45:39 +00005687
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +02005688##########################################
5689# Do we have libudev
5690if test "$libudev" != "no" ; then
5691 if $pkg_config libudev && test "$static" != "yes"; then
5692 libudev="yes"
5693 libudev_libs=$($pkg_config --libs libudev)
5694 else
5695 libudev="no"
5696 fi
5697fi
5698
Peter Maydell6ca026c2012-07-18 15:10:18 +01005699# Now we've finished running tests it's OK to add -Werror to the compiler flags
5700if test "$werror" = "yes"; then
5701 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5702fi
5703
Juan Quintelae86ecd42009-08-03 14:45:59 +02005704if test "$solaris" = "no" ; then
5705 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02005706 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005707 fi
5708fi
5709
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005710# test if pod2man has --utf8 option
5711if pod2man --help | grep -q utf8; then
5712 POD2MAN="pod2man --utf8"
5713else
5714 POD2MAN="pod2man"
5715fi
5716
Blue Swirl952afb72010-09-19 08:36:34 +00005717# Use ASLR, no-SEH and DEP if available
5718if test "$mingw32" = "yes" ; then
5719 for flag in --dynamicbase --no-seh --nxcompat; do
Christian Borntraegere9a35912017-08-23 12:16:23 +02005720 if ld_has $flag ; then
Blue Swirl952afb72010-09-19 08:36:34 +00005721 LDFLAGS="-Wl,$flag $LDFLAGS"
5722 fi
5723 done
5724fi
5725
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03005726qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08005727qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03005728qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06005729qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02005730
Kamil Rytarowskie0580342017-07-14 09:33:44 +01005731# We can only support ivshmem if we have eventfd
5732if [ "$eventfd" = "yes" ]; then
5733 ivshmem=yes
5734fi
5735
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005736tools=""
5737if test "$want_tools" = "yes" ; then
Gerd Hoffmann72d277a2018-09-25 09:56:42 +02005738 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005739 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5740 tools="qemu-nbd\$(EXESUF) $tools"
Kamil Rytarowskib1449ed2017-07-14 09:33:45 +01005741 fi
5742 if [ "$ivshmem" = "yes" ]; then
David Marchanda75eb032014-09-08 11:17:48 +02005743 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005744 fi
Viktor Prutyanov3fa2d382018-08-29 15:41:25 +03005745 if [ "$posix" = "yes" ] && [ "$curl" = "yes" ]; then
5746 tools="elf2dmp $tools"
5747 fi
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005748fi
5749if test "$softmmu" = yes ; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005750 if test "$linux" = yes; then
5751 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02005752 virtfs=yes
5753 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5754 else
5755 if test "$virtfs" = yes; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005756 error_exit "VirtFS requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05305757 fi
Andreas Färber17500372012-05-01 01:12:03 +02005758 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02005759 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005760 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5761 mpath=yes
5762 else
5763 if test "$mpath" = yes; then
5764 error_exit "Multipath requires libmpathpersist devel"
5765 fi
5766 mpath=no
5767 fi
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005768 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5769 else
5770 if test "$virtfs" = yes; then
5771 error_exit "VirtFS is supported only on Linux"
5772 fi
5773 virtfs=no
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005774 if test "$mpath" = yes; then
5775 error_exit "Multipath is supported only on Linux"
5776 fi
5777 mpath=no
M. Mohan Kumar17bff522011-12-14 13:58:42 +05305778 fi
Laurent Vivierff69fd82017-10-19 21:16:06 +02005779 if test "$xkbcommon" = "yes"; then
5780 tools="qemu-keymap\$(EXESUF) $tools"
5781 fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005782fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005783
5784# Probe for guest agent support/options
5785
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005786if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04005787 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05005788 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005789 guest_agent=yes
5790 elif [ "$guest_agent" != yes ]; then
5791 guest_agent=no
5792 else
5793 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02005794 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02005795fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005796
Michael Roth9d6bc272015-08-26 10:49:13 -05005797# Guest agent Window MSI package
5798
5799if test "$guest_agent" != yes; then
5800 if test "$guest_agent_msi" = yes; then
5801 error_exit "MSI guest agent package requires guest agent enabled"
5802 fi
5803 guest_agent_msi=no
5804elif test "$mingw32" != "yes"; then
5805 if test "$guest_agent_msi" = "yes"; then
5806 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5807 fi
5808 guest_agent_msi=no
5809elif ! has wixl; then
5810 if test "$guest_agent_msi" = "yes"; then
5811 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5812 fi
5813 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05005814else
5815 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5816 # disabled explicitly
5817 if test "$guest_agent_msi" != "no"; then
5818 guest_agent_msi=yes
5819 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005820fi
5821
Michael Roth1a349042015-08-26 11:14:31 -05005822if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05005823 if test "$guest_agent_with_vss" = "yes"; then
5824 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5825 fi
5826
5827 if test "$QEMU_GA_MANUFACTURER" = ""; then
5828 QEMU_GA_MANUFACTURER=QEMU
5829 fi
5830
5831 if test "$QEMU_GA_DISTRO" = ""; then
5832 QEMU_GA_DISTRO=Linux
5833 fi
5834
5835 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02005836 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05005837 fi
5838
Stefan Weil89138852016-05-16 15:10:20 +02005839 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05005840
5841 case "$cpu" in
5842 x86_64)
5843 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5844 ;;
5845 i386)
5846 QEMU_GA_MSI_ARCH="-D Arch=32"
5847 ;;
5848 *)
5849 error_exit "CPU $cpu not supported for building installation package"
5850 ;;
5851 esac
5852fi
5853
Paolo Bonzinica35f782010-05-26 16:08:29 +02005854# Mac OS X ships with a broken assembler
5855roms=
5856if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5857 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5858 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01005859 # Different host OS linkers have different ideas about the name of the ELF
Brad Smithc65d5e42017-11-07 18:46:11 -05005860 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5861 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5862 for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
Peter Maydelle57218b2016-08-08 17:11:28 +01005863 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5864 ld_i386_emulation="$emu"
5865 roms="optionrom"
5866 break
5867 fi
5868 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02005869fi
Andreas Färberd0384d12011-05-01 18:23:56 +02005870if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11005871 roms="$roms spapr-rtas"
5872fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005873
Christian Borntraeger9933c302013-04-23 01:23:03 +00005874if test "$cpu" = "s390x" ; then
5875 roms="$roms s390-ccw"
5876fi
5877
Richard Henderson964c6fa2013-06-21 19:10:16 -07005878# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005879if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005880 textseg_addr=
5881 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07005882 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5883 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07005884 textseg_addr=0x60000000
5885 ;;
5886 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07005887 # A 256M aligned address, high in the address space, with enough
5888 # room for the code_gen_buffer above it before the stack.
5889 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07005890 ;;
5891 esac
5892 if [ -n "$textseg_addr" ]; then
5893 cat > $TMPC <<EOF
5894 int main(void) { return 0; }
5895EOF
5896 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5897 if ! compile_prog "" "$textseg_ldflags"; then
5898 # In case ld does not support -Ttext-segment, edit the default linker
5899 # script via sed to set the .text start addr. This is needed on FreeBSD
5900 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005901 if ! $ld --verbose >/dev/null 2>&1; then
5902 error_exit \
5903 "We need to link the QEMU user mode binaries at a" \
5904 "specific text address. Unfortunately your linker" \
5905 "doesn't support either the -Ttext-segment option or" \
5906 "printing the default linker script with --verbose." \
5907 "If you don't want the user mode binaries, pass the" \
5908 "--disable-user option to configure."
5909 fi
5910
Richard Henderson964c6fa2013-06-21 19:10:16 -07005911 $ld --verbose | sed \
5912 -e '1,/==================================================/d' \
5913 -e '/==================================================/,$d' \
5914 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5915 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5916 textseg_ldflags="-Wl,-T../config-host.ld"
5917 fi
5918 fi
5919fi
5920
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005921# Check that the C++ compiler exists and works with the C compiler.
5922# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5923if has $cxx; then
5924 cat > $TMPC <<EOF
5925int c_function(void);
5926int main(void) { return c_function(); }
5927EOF
5928
5929 compile_object
5930
5931 cat > $TMPCXX <<EOF
5932extern "C" {
5933 int c_function(void);
5934}
5935int c_function(void) { return 42; }
5936EOF
5937
5938 update_cxxflags
5939
5940 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5941 # C++ compiler $cxx works ok with C compiler $cc
5942 :
5943 else
5944 echo "C++ compiler $cxx does not work with C compiler $cc"
5945 echo "Disabling C++ specific optional code"
5946 cxx=
5947 fi
5948else
5949 echo "No C++ compiler available; disabling C++ specific optional code"
5950 cxx=
5951fi
5952
Cole Robinson02d34f62016-05-06 14:03:09 -04005953echo_version() {
5954 if test "$1" = "yes" ; then
5955 echo "($2)"
5956 fi
5957}
5958
Jan Kiszka50e12062014-10-02 10:03:55 +02005959# prepend pixman and ftd flags after all config tests are done
5960QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03005961QEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS"
Jan Kiszka50e12062014-10-02 10:03:55 +02005962libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005963
bellard43ce4df2003-06-09 19:53:12 +00005964echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005965echo "BIOS directory $(eval echo $qemu_datadir)"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005966echo "firmware path $(eval echo $firmwarepath)"
Stefan Weil89138852016-05-16 15:10:20 +02005967echo "binary directory $(eval echo $bindir)"
5968echo "library directory $(eval echo $libdir)"
5969echo "module directory $(eval echo $qemu_moddir)"
5970echo "libexec directory $(eval echo $libexecdir)"
5971echo "include directory $(eval echo $includedir)"
5972echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005973if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005974echo "local state directory $(eval echo $local_statedir)"
5975echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005976echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005977else
5978echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005979echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005980fi
bellard5a671352003-10-01 00:13:48 +00005981echo "Source path $source_path"
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005982echo "GIT binary $git"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005983echo "GIT submodules $git_submodules"
bellard43ce4df2003-06-09 19:53:12 +00005984echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005985echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005986echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005987echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005988echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005989echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005990echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005991echo "LDFLAGS $LDFLAGS"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03005992echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005993echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005994echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005995echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005996if test "$slirp" = "yes" ; then
5997 echo "smbd $smbd"
5998fi
Fam Zheng17969262014-02-10 14:48:56 +08005999echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00006000echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00006001echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00006002echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +00006003echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00006004echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00006005echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00006006echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00006007echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00006008if test "$darwin" = "yes" ; then
6009 echo "Cocoa support $cocoa"
6010fi
Stefan Weil89138852016-05-16 15:10:20 +02006011echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
6012echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02006013echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02006014echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01006015echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01006016echo "GNUTLS support $gnutls"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006017echo "libgcrypt $gcrypt"
Stefan Weil89138852016-05-16 15:10:20 +02006018echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01006019echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00006020echo "curses support $curses"
Marc-André Lureau47479c52018-05-25 17:36:09 +02006021echo "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)"
Alexander Graf769ce762009-05-11 17:41:42 +02006022echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00006023echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00006024echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08006025echo "Block whitelist (rw) $block_drv_rw_whitelist"
6026echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05306027echo "VirtFS support $virtfs"
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006028echo "Multipath support $mpath"
Jes Sorensen821601e2011-03-16 13:33:36 +01006029echo "VNC support $vnc"
6030if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01006031 echo "VNC SASL support $vnc_sasl"
6032 echo "VNC JPEG support $vnc_jpeg"
6033 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01006034fi
blueswir131422552007-04-16 18:27:06 +00006035if test -n "$sparc_cpu"; then
6036 echo "Target Sparc Arch $sparc_cpu"
6037fi
aliguorie37630c2009-04-22 15:19:10 +00006038echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00006039if test "$xen" = "yes" ; then
6040 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00006041 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00006042fi
aurel322e4d9fb2008-04-08 06:01:02 +00006043echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02006044echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02006045echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02006046echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00006047echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01006048echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02006049echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006050echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00006051echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02006052echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006053echo "HAX support $hax"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05006054echo "HVF support $hvf"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08006055echo "WHPX support $whpx"
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006056echo "TCG support $tcg"
6057if test "$tcg" = "yes" ; then
6058 echo "TCG debug enabled $debug_tcg"
6059 echo "TCG interpreter $tcg_interpreter"
6060fi
Yang Zhong5a22ab72017-12-20 21:16:46 +08006061echo "malloc trim support $malloc_trim"
Michael R. Hines2da776d2013-07-22 10:01:54 -04006062echo "RDMA support $rdma"
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03006063echo "PVRDMA support $pvrdma"
aurel32f652e6a2008-12-16 10:43:48 +00006064echo "fdt support $fdt"
Paolo Bonzinia40161c2018-02-16 10:05:23 +01006065echo "membarrier $membarrier"
aliguoriceb42de2009-04-07 18:43:28 +00006066echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006067echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00006068echo "madvise $madvise"
6069echo "posix_madvise $posix_madvise"
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02006070echo "posix_memalign $posix_memalign"
Corey Bryant47e98652012-01-26 09:42:26 -05006071echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006072echo "vhost-net support $vhost_net"
Gonglei042cea22018-03-01 21:46:28 +08006073echo "vhost-crypto support $vhost_crypto"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00006074echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01006075echo "vhost-vsock support $vhost_vsock"
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006076echo "vhost-user support $vhost_user"
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006077echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01006078if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01006079echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01006080fi
Stefan Weil89138852016-05-16 15:10:20 +02006081echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006082echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01006083echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006084echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006085echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02006086echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006087echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006088echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006089echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01006090echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05006091echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04006092echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05006093echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05006094echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03006095echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01006096echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006097echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02006098echo "debug stack usage $debug_stack_usage"
Paolo Bonziniba59fb72018-06-13 14:23:08 +02006099echo "mutex debugging $debug_mutex"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006100echo "crypto afalg $crypto_afalg"
Bharata B Raoeb100392012-09-24 14:42:45 +05306101echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00006102echo "gcov $gcov_tool"
6103echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05006104echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006105echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006106echo "TPM passthrough $tpm_passthrough"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006107echo "TPM emulator $tpm_emulator"
Paolo Bonzini3556c232013-05-10 14:16:40 +02006108echo "QOM debugging $qom_cast_debug"
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006109echo "Live block migration $live_block_migration"
qiaonuohan607dacd2014-02-18 14:11:30 +08006110echo "lzo support $lzo"
6111echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01006112echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08006113echo "NUMA host support $numa"
Klim Kireeved279a02018-01-12 12:01:19 +03006114echo "libxml2 $libxml2"
Fam Zheng2847b462015-03-26 11:03:12 +08006115echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02006116echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08006117echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006118echo "replication support $replication"
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006119echo "VxHS block device $vxhs"
Jeff Cody2f740132018-11-07 07:36:44 +01006120echo "bochs support $bochs"
6121echo "cloop support $cloop"
6122echo "dmg support $dmg"
6123echo "qcow v1 support $qcow1"
6124echo "vdi support $vdi"
6125echo "vvfat support $vvfat"
6126echo "qed support $qed"
6127echo "parallels support $parallels"
6128echo "sheepdog support $sheepdog"
Richard Henderson8ca80762017-09-14 09:41:12 -07006129echo "capstone $capstone"
Alex Bennée51a12b52018-04-04 14:24:39 +01006130echo "docker $docker"
Junyan He17824402018-07-18 15:47:59 +08006131echo "libpmem support $libpmem"
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +02006132echo "libudev $libudev"
bellard67b915a2004-03-31 23:37:16 +00006133
Stefan Weil1ba16962011-07-29 22:40:45 +02006134if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00006135echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00006136fi
bellard97a847b2003-08-10 21:36:04 +00006137
Daniel P. Berrangee52c6ba2018-01-15 14:25:33 +00006138if test "$sdlabi" = "1.2"; then
6139 echo
6140 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
6141 echo "WARNING: future releases. Please switch to using SDL 2.0"
6142fi
6143
Peter Maydell898be3e2017-03-21 14:31:57 +00006144if test "$supported_cpu" = "no"; then
6145 echo
6146 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
6147 echo
6148 echo "CPU host architecture $cpu support is not currently maintained."
6149 echo "The QEMU project intends to remove support for this host CPU in"
6150 echo "a future release if nobody volunteers to maintain it and to"
6151 echo "provide a build host for our continuous integration setup."
6152 echo "configure has succeeded and you can continue to build, but"
6153 echo "if you care about QEMU on this platform you should contact"
6154 echo "us upstream at qemu-devel@nongnu.org."
6155fi
6156
6157if test "$supported_os" = "no"; then
6158 echo
6159 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
6160 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00006161 echo "Host OS $targetos support is not currently maintained."
6162 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00006163 echo "a future release if nobody volunteers to maintain it and to"
6164 echo "provide a build host for our continuous integration setup."
6165 echo "configure has succeeded and you can continue to build, but"
6166 echo "if you care about QEMU on this platform you should contact"
6167 echo "us upstream at qemu-devel@nongnu.org."
6168fi
6169
Juan Quintela98ec69a2009-07-16 18:34:18 +02006170config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00006171
Stefan Weildbd99ae2013-01-01 18:33:44 +01006172echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
6173
Juan Quintela98ec69a2009-07-16 18:34:18 +02006174echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006175echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006176
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02006177echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02006178echo "prefix=$prefix" >> $config_host_mak
6179echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03006180echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04006181echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02006182echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02006183echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02006184echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03006185echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03006186echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02006187echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03006188echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08006189echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02006190if test "$mingw32" = "no" ; then
6191 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
6192fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04006193echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06006194echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02006195echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01006196echo "GIT=$git" >> $config_host_mak
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01006197echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01006198echo "GIT_UPDATE=$git_update" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006199
Juan Quintela98ec69a2009-07-16 18:34:18 +02006200echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02006201
aurel32f8393942009-04-13 18:45:38 +00006202if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006203 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00006204fi
aliguori1625af82009-04-05 17:41:02 +00006205if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07006206 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00006207fi
bellard7d132992003-03-06 23:23:54 +00006208if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02006209 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00006210fi
bellard67b915a2004-03-31 23:37:16 +00006211if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006212 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02006213 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00006214 version_major=${rc_version%%.*}
6215 rc_version=${rc_version#*.}
6216 version_minor=${rc_version%%.*}
6217 rc_version=${rc_version#*.}
6218 version_subminor=${rc_version%%.*}
6219 version_micro=0
6220 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
6221 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04006222 if test "$guest_agent_with_vss" = "yes" ; then
6223 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05006224 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04006225 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
6226 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05006227 if test "$guest_agent_ntddscsi" = "yes" ; then
Tomáš Golembiovský76dc75c2018-10-23 13:23:16 +02006228 echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak
Michael Roth50cbebb2015-07-07 18:10:09 -05006229 fi
Michael Roth1a349042015-08-26 11:14:31 -05006230 if test "$guest_agent_msi" = "yes"; then
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08006231 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
Yossi Hindin9dacf322015-05-06 14:57:40 +03006232 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6233 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6234 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6235 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6236 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6237 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6238 fi
pbrook210fa552007-02-27 21:04:49 +00006239else
Juan Quintela35f4df22009-07-27 16:13:07 +02006240 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00006241fi
blueswir1128ab2f2008-08-15 18:33:42 +00006242
Mark McLoughlindffcb712009-10-22 17:49:11 +01006243if test "$linux" = "yes" ; then
6244 echo "CONFIG_LINUX=y" >> $config_host_mak
6245fi
6246
bellard83fb7ad2004-07-05 21:25:26 +00006247if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006248 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00006249fi
malcb29fe3e2008-11-18 01:42:22 +00006250
bellardec530c82006-04-25 22:36:06 +00006251if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006252 echo "CONFIG_SOLARIS=y" >> $config_host_mak
bellardec530c82006-04-25 22:36:06 +00006253fi
Andreas Färber179cf402010-09-20 00:50:43 +02006254if test "$haiku" = "yes" ; then
6255 echo "CONFIG_HAIKU=y" >> $config_host_mak
6256fi
bellard97a847b2003-08-10 21:36:04 +00006257if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006258 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00006259fi
Stefan Weil1ba16962011-07-29 22:40:45 +02006260if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006261 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00006262fi
bellardc20709a2004-04-21 23:27:19 +00006263if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006264 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04006265 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00006266fi
ths8a16d272008-07-19 09:56:24 +00006267if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006268 echo "CONFIG_VDE=y" >> $config_host_mak
Fam Zhenge2ad6f12017-09-07 16:35:52 +08006269 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00006270fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01006271if test "$netmap" = "yes" ; then
6272 echo "CONFIG_NETMAP=y" >> $config_host_mak
6273fi
Gonglei015a33b2014-07-01 20:58:08 +08006274if test "$l2tpv3" = "yes" ; then
6275 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6276fi
Corey Bryant47e98652012-01-26 09:42:26 -05006277if test "$cap_ng" = "yes" ; then
6278 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6279fi
Juan Quintela2358a492009-07-27 16:13:25 +02006280echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00006281for drv in $audio_drv_list; do
Gerd Hoffmann1ef1ec22018-03-01 11:05:46 +01006282 def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Gerd Hoffmannce3dc032018-03-06 08:40:50 +01006283 case "$drv" in
Gerd Hoffmann051c7d52018-03-06 08:40:53 +01006284 alsa | oss | pa | sdl)
Gerd Hoffmannce3dc032018-03-06 08:40:50 +01006285 echo "$def=m" >> $config_host_mak ;;
6286 *)
6287 echo "$def=y" >> $config_host_mak ;;
6288 esac
malc0c58ac12008-06-25 21:04:05 +00006289done
Fam Zhengb1149912017-09-07 16:29:13 +08006290echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6291echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6292echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6293echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6294echo "OSS_LIBS=$oss_libs" >> $config_host_mak
Juan Quintela67f86e82009-08-03 14:46:59 +02006295if test "$audio_pt_int" = "yes" ; then
6296 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6297fi
malcd5631632009-10-10 01:13:41 +04006298if test "$audio_win_int" = "yes" ; then
6299 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6300fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08006301echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6302echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01006303if test "$vnc" = "yes" ; then
6304 echo "CONFIG_VNC=y" >> $config_host_mak
6305fi
aliguori2f9606b2009-03-06 20:27:28 +00006306if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006307 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00006308fi
Jes Sorensen821601e2011-03-16 13:33:36 +01006309if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02006310 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02006311fi
Jes Sorensen821601e2011-03-16 13:33:36 +01006312if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02006313 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02006314fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02006315if test "$xkbcommon" = "yes" ; then
6316 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6317 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6318fi
aliguori76655d62009-03-06 20:27:37 +00006319if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006320 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00006321fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01006322if test "$xfs" = "yes" ; then
6323 echo "CONFIG_XFS=y" >> $config_host_mak
6324fi
Stefan Weil89138852016-05-16 15:10:20 +02006325qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02006326echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02006327echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006328echo "SRC_PATH=$source_path" >> $config_host_mak
Alex Bennée2b1f35b2018-07-04 07:30:11 +01006329echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02006330if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006331 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00006332fi
Fam Zheng17969262014-02-10 14:48:56 +08006333if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08006334 # $shacmd can generate a hash started with digit, which the compiler doesn't
6335 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02006336 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006337 echo "CONFIG_MODULES=y" >> $config_host_mak
6338fi
Gerd Hoffmann87815952018-03-01 11:05:42 +01006339if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6340 echo "CONFIG_X11=y" >> $config_host_mak
6341 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6342 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6343fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02006344if test "$sdl" = "yes" ; then
Gerd Hoffmann96400a12018-03-01 11:05:47 +01006345 echo "CONFIG_SDL=m" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04006346 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02006347 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
Fam Zheng8ecc89f2017-09-07 16:29:11 +08006348 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00006349fi
6350if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006351 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00006352fi
6353if test "$curses" = "yes" ; then
Gerd Hoffmann2373f7d2018-03-01 11:05:45 +01006354 echo "CONFIG_CURSES=m" >> $config_host_mak
6355 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6356 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00006357fi
Riku Voipio099d6b02009-05-05 12:10:04 +03006358if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006359 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03006360fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01006361if test "$accept4" = "yes" ; then
6362 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6363fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05306364if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006365 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05306366fi
Riku Voipioc2882b92009-08-12 15:08:24 +03006367if test "$eventfd" = "yes" ; then
6368 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6369fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02006370if test "$memfd" = "yes" ; then
6371 echo "CONFIG_MEMFD=y" >> $config_host_mak
6372fi
Cortland Tölva955727d2018-10-08 09:35:19 -07006373if test "$have_usbfs" = "yes" ; then
6374 echo "CONFIG_USBFS=y" >> $config_host_mak
6375fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03006376if test "$fallocate" = "yes" ; then
6377 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6378fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01006379if test "$fallocate_punch_hole" = "yes" ; then
6380 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6381fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03006382if test "$fallocate_zero_range" = "yes" ; then
6383 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6384fi
Kevin Wolfed911432014-09-29 17:12:59 +02006385if test "$posix_fallocate" = "yes" ; then
6386 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6387fi
Peter Maydellc727f472011-01-06 11:05:10 +00006388if test "$sync_file_range" = "yes" ; then
6389 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6390fi
Peter Maydelldace20d2011-01-10 13:11:24 +00006391if test "$fiemap" = "yes" ; then
6392 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6393fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03006394if test "$dup3" = "yes" ; then
6395 echo "CONFIG_DUP3=y" >> $config_host_mak
6396fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01006397if test "$ppoll" = "yes" ; then
6398 echo "CONFIG_PPOLL=y" >> $config_host_mak
6399fi
Alex Blighcd758dd2013-08-21 16:02:44 +01006400if test "$prctl_pr_set_timerslack" = "yes" ; then
6401 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6402fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00006403if test "$epoll" = "yes" ; then
6404 echo "CONFIG_EPOLL=y" >> $config_host_mak
6405fi
6406if test "$epoll_create1" = "yes" ; then
6407 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6408fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00006409if test "$sendfile" = "yes" ; then
6410 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6411fi
Riku Voipio51834342014-06-22 11:25:42 +01006412if test "$timerfd" = "yes" ; then
6413 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6414fi
Riku Voipio9af5c902014-08-12 15:58:57 +03006415if test "$setns" = "yes" ; then
6416 echo "CONFIG_SETNS=y" >> $config_host_mak
6417fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02006418if test "$clock_adjtime" = "yes" ; then
6419 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6420fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02006421if test "$syncfs" = "yes" ; then
6422 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6423fi
aurel323b3f24a2009-04-15 16:12:13 +00006424if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006425 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00006426fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00006427if test "$inotify1" = "yes" ; then
6428 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6429fi
Peter Maydell401bc052017-09-05 13:19:32 +01006430if test "$sem_timedwait" = "yes" ; then
6431 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6432fi
Keno Fischer5c99fa32018-06-29 12:32:10 +02006433if test "$strchrnul" = "yes" ; then
6434 echo "HAVE_STRCHRNUL=y" >> $config_host_mak
6435fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02006436if test "$byteswap_h" = "yes" ; then
6437 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6438fi
6439if test "$bswap_h" = "yes" ; then
6440 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6441fi
Alexander Graf769ce762009-05-11 17:41:42 +02006442if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006443 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02006444 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006445 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02006446fi
aurel322e4d9fb2008-04-08 06:01:02 +00006447if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006448 echo "CONFIG_BRLAPI=y" >> $config_host_mak
Fam Zheng8eca2882017-09-07 16:47:00 +08006449 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00006450fi
balrogfb599c92008-09-28 23:49:55 +00006451if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006452 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02006453 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00006454fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006455if test "$gtk" = "yes" ; then
Gerd Hoffmanne0fb1292018-03-01 11:05:44 +01006456 echo "CONFIG_GTK=m" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006457 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006458 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02006459 if test "$gtk_gl" = "yes" ; then
6460 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6461 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006462fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01006463echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01006464if test "$gnutls" = "yes" ; then
6465 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6466fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006467if test "$gcrypt" = "yes" ; then
6468 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08006469 if test "$gcrypt_hmac" = "yes" ; then
6470 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6471 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01006472fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006473if test "$nettle" = "yes" ; then
6474 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02006475 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01006476fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01006477if test "$tasn1" = "yes" ; then
6478 echo "CONFIG_TASN1=y" >> $config_host_mak
6479fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00006480if test "$have_ifaddrs_h" = "yes" ; then
6481 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6482fi
Eric Blake6b39b062016-10-11 10:46:23 -05006483if test "$have_broken_size_max" = "yes" ; then
6484 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6485fi
Jan Vesely277abf12016-04-29 13:15:23 -04006486
6487# Work around a system header bug with some kernel/XFS header
6488# versions where they both try to define 'struct fsxattr':
6489# xfs headers will not try to redefine structs from linux headers
6490# if this macro is set.
6491if test "$have_fsxattr" = "yes" ; then
6492 echo "HAVE_FSXATTR=y" >> $config_host_mak
6493fi
Fam Zheng1efad062018-06-01 17:26:43 +08006494if test "$have_copy_file_range" = "yes" ; then
6495 echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak
6496fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006497if test "$vte" = "yes" ; then
6498 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006499 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
Gerd Hoffmanne0fb1292018-03-01 11:05:44 +01006500 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006501fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02006502if test "$virglrenderer" = "yes" ; then
6503 echo "CONFIG_VIRGL=y" >> $config_host_mak
6504 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6505 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6506fi
aliguorie37630c2009-04-22 15:19:10 +00006507if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02006508 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00006509 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00006510 if test "$xen_pv_domain_build" = "yes" ; then
6511 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6512 fi
aliguorie37630c2009-04-22 15:19:10 +00006513fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02006514if test "$linux_aio" = "yes" ; then
6515 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6516fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006517if test "$attr" = "yes" ; then
6518 echo "CONFIG_ATTR=y" >> $config_host_mak
6519fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02006520if test "$libattr" = "yes" ; then
6521 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6522fi
Meador Inge983eef52012-02-24 14:00:42 +05306523if test "$virtfs" = "yes" ; then
6524 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006525fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006526if test "$mpath" = "yes" ; then
6527 echo "CONFIG_MPATH=y" >> $config_host_mak
Murilo Opsfelder Araujo1b0578f2018-08-10 11:11:16 -03006528 if test "$mpathpersist_new_api" = "yes"; then
6529 echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
6530 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006531fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00006532if test "$vhost_scsi" = "yes" ; then
6533 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6534fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006535if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03006536 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6537fi
Gonglei042cea22018-03-01 21:46:28 +08006538if test "$vhost_crypto" = "yes" ; then
6539 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6540fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01006541if test "$vhost_vsock" = "yes" ; then
6542 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6543fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006544if test "$vhost_user" = "yes" ; then
6545 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6546fi
ths77755342008-11-27 15:45:16 +00006547if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006548 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00006549fi
aliguoribf9298b2008-12-05 20:05:26 +00006550if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006551 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00006552fi
aliguoriceb42de2009-04-07 18:43:28 +00006553if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006554 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00006555fi
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03006556if test "$fdt" != "no" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02006557 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00006558fi
Paolo Bonzinia40161c2018-02-16 10:05:23 +01006559if test "$membarrier" = "yes" ; then
6560 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6561fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03006562if test "$signalfd" = "yes" ; then
6563 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6564fi
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006565if test "$tcg" = "yes"; then
6566 echo "CONFIG_TCG=y" >> $config_host_mak
6567 if test "$tcg_interpreter" = "yes" ; then
6568 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6569 fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02006570fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006571if test "$fdatasync" = "yes" ; then
6572 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6573fi
Andreas Färbere78815a2010-09-25 11:26:05 +00006574if test "$madvise" = "yes" ; then
6575 echo "CONFIG_MADVISE=y" >> $config_host_mak
6576fi
6577if test "$posix_madvise" = "yes" ; then
6578 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6579fi
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02006580if test "$posix_memalign" = "yes" ; then
6581 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6582fi
bellard97a847b2003-08-10 21:36:04 +00006583
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01006584if test "$spice" = "yes" ; then
6585 echo "CONFIG_SPICE=y" >> $config_host_mak
6586fi
6587
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006588if test "$smartcard" = "yes" ; then
6589 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Fam Zheng7b62bf52017-09-07 16:29:16 +08006590 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6591 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02006592fi
6593
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006594if test "$libusb" = "yes" ; then
6595 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
Fam Zhengb878b652017-09-07 16:29:17 +08006596 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6597 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006598fi
6599
Hans de Goede69354a82011-07-19 11:04:10 +02006600if test "$usb_redir" = "yes" ; then
6601 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
Fam Zhengcc7923f2017-09-07 16:29:18 +08006602 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6603 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
Hans de Goede69354a82011-07-19 11:04:10 +02006604fi
6605
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006606if test "$opengl" = "yes" ; then
6607 echo "CONFIG_OPENGL=y" >> $config_host_mak
6608 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006609 if test "$opengl_dmabuf" = "yes" ; then
6610 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6611 fi
Michael Walle20ff0752011-03-07 23:32:39 +01006612fi
6613
Yang Zhong5a22ab72017-12-20 21:16:46 +08006614if test "$malloc_trim" = "yes" ; then
6615 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6616fi
6617
Liang Li99f2dbd2016-03-08 13:53:16 +08006618if test "$avx2_opt" = "yes" ; then
6619 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6620fi
6621
qiaonuohan607dacd2014-02-18 14:11:30 +08006622if test "$lzo" = "yes" ; then
6623 echo "CONFIG_LZO=y" >> $config_host_mak
6624fi
6625
6626if test "$snappy" = "yes" ; then
6627 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6628fi
6629
Peter Wu6b383c02015-01-06 18:48:14 +01006630if test "$bzip2" = "yes" ; then
6631 echo "CONFIG_BZIP2=y" >> $config_host_mak
6632 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6633fi
6634
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006635if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006636 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006637 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6638 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006639fi
6640
Peter Lieven6542aa92014-02-03 10:26:13 +01006641if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04006642 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6643 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01006644fi
6645
Eduardo Otubof7945732012-08-14 18:44:05 -03006646if test "$seccomp" = "yes"; then
6647 echo "CONFIG_SECCOMP=y" >> $config_host_mak
Fam Zhengc3883e12017-09-07 16:53:16 +08006648 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6649 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
Eduardo Otubof7945732012-08-14 18:44:05 -03006650fi
6651
bellard83fb7ad2004-07-05 21:25:26 +00006652# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00006653if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006654 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00006655fi
6656
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01006657if test "$localtime_r" = "yes" ; then
6658 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6659fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02006660if test "$qom_cast_debug" = "yes" ; then
6661 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6662fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006663if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006664 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006665 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6666 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006667fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06006668
Peter Maydell7c2acc72013-04-08 12:11:27 +01006669echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006670if test "$coroutine_pool" = "yes" ; then
6671 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6672else
6673 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6674fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05306675
Peter Lieven7d992e42016-09-27 11:58:45 +02006676if test "$debug_stack_usage" = "yes" ; then
6677 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6678fi
6679
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006680if test "$crypto_afalg" = "yes" ; then
6681 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6682fi
6683
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05306684if test "$open_by_handle_at" = "yes" ; then
6685 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6686fi
6687
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05306688if test "$linux_magic_h" = "yes" ; then
6689 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6690fi
6691
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01006692if test "$pragma_diagnostic_available" = "yes" ; then
6693 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01006694fi
6695
Kevin Wolf3f4349d2012-06-29 13:40:27 +02006696if test "$valgrind_h" = "yes" ; then
6697 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6698fi
6699
Marc-André Lureaud83414e2018-01-16 16:11:52 +01006700if test "$have_asan_iface_fiber" = "yes" ; then
6701 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6702fi
6703
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03006704if test "$has_environ" = "yes" ; then
6705 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6706fi
6707
Richard Henderson76a347e2012-12-28 14:17:02 -08006708if test "$cpuid_h" = "yes" ; then
6709 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6710fi
6711
Richard Hendersonf5401662013-02-16 12:46:59 -08006712if test "$int128" = "yes" ; then
6713 echo "CONFIG_INT128=y" >> $config_host_mak
6714fi
6715
Richard Henderson7ebee432016-06-29 21:10:59 -07006716if test "$atomic128" = "yes" ; then
6717 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6718fi
6719
Richard Hendersone6cd4bb2018-08-15 16:31:47 -07006720if test "$cmpxchg128" = "yes" ; then
6721 echo "CONFIG_CMPXCHG128=y" >> $config_host_mak
6722fi
6723
Richard Hendersondf79b992016-09-02 12:23:57 -07006724if test "$atomic64" = "yes" ; then
6725 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6726fi
6727
Richard Hendersondb432672017-09-15 14:11:45 -07006728if test "$vector16" = "yes" ; then
6729 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6730fi
6731
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08006732if test "$getauxval" = "yes" ; then
6733 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6734fi
6735
Bharata B Raoeb100392012-09-24 14:42:45 +05306736if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006737 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006738 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6739 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05306740fi
6741
Jeff Codyd85fa9e2016-04-05 10:40:09 -04006742if test "$glusterfs_xlator_opt" = "yes" ; then
6743 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6744fi
6745
Bharata B Rao0c14fb42013-07-16 21:47:42 +05306746if test "$glusterfs_discard" = "yes" ; then
6747 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6748fi
6749
Niels de Vosdf3a4292017-05-28 12:01:14 +05306750if test "$glusterfs_fallocate" = "yes" ; then
6751 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6752fi
6753
Bharata B Rao7c815372013-12-21 14:51:25 +05306754if test "$glusterfs_zerofill" = "yes" ; then
6755 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6756fi
6757
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006758if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006759 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006760 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6761 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006762fi
6763
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006764if test "$live_block_migration" = "yes" ; then
6765 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6766fi
6767
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006768if test "$tpm" = "yes"; then
6769 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006770 # TPM passthrough support?
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006771 if test "$tpm_passthrough" = "yes"; then
6772 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6773 fi
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006774 # TPM emulator support?
6775 if test "$tpm_emulator" = "yes"; then
6776 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6777 fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006778fi
6779
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006780echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6781if have_backend "nop"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006782 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05306783fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006784if have_backend "simple"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006785 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6786 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02006787 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01006788fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03006789if have_backend "log"; then
6790 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
LluĂ­s6d8a7642011-08-31 20:30:43 +02006791fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006792if have_backend "ust"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006793 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6794fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006795if have_backend "dtrace"; then
LluĂ­s6d8a7642011-08-31 20:30:43 +02006796 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6797 if test "$trace_backend_stap" = "yes" ; then
6798 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6799 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00006800fi
LluĂ­s Vilanova5b808272014-05-27 15:02:14 +02006801if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006802 if test "$linux" = "yes" ; then
6803 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006804 else
Stewart Smith21684af2014-01-24 12:39:10 +11006805 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006806 fi
6807fi
Paul Durrant0a852412016-08-04 14:44:14 +01006808if have_backend "syslog"; then
6809 if test "$posix_syslog" = "yes" ; then
6810 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6811 else
6812 feature_not_found "syslog(trace backend)" "syslog not available"
6813 fi
6814fi
Prerna Saxena9410b562010-07-13 09:26:32 +01006815echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6816
Michael R. Hines2da776d2013-07-22 10:01:54 -04006817if test "$rdma" = "yes" ; then
6818 echo "CONFIG_RDMA=y" >> $config_host_mak
Fam Zheng392fb642017-09-07 16:42:30 +08006819 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
Michael R. Hines2da776d2013-07-22 10:01:54 -04006820fi
6821
Marcel Apfelbaum21ab34c2018-08-16 18:16:37 +03006822if test "$pvrdma" = "yes" ; then
6823 echo "CONFIG_PVRDMA=y" >> $config_host_mak
6824fi
6825
Laurent Vivier575b22b2016-06-02 22:14:15 +02006826if test "$have_rtnetlink" = "yes" ; then
6827 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6828fi
6829
Klim Kireeved279a02018-01-12 12:01:19 +03006830if test "$libxml2" = "yes" ; then
6831 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6832 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6833 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6834fi
6835
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006836if test "$replication" = "yes" ; then
6837 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6838fi
6839
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01006840if test "$have_af_vsock" = "yes" ; then
6841 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6842fi
6843
Christopher Covington4d043512016-12-28 15:04:33 -05006844if test "$have_sysmacros" = "yes" ; then
6845 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6846fi
6847
Andreas Grapentin49e00a12017-03-14 17:59:53 +01006848if test "$have_static_assert" = "yes" ; then
6849 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6850fi
6851
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02006852if test "$have_utmpx" = "yes" ; then
6853 echo "HAVE_UTMPX=y" >> $config_host_mak
6854fi
6855
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006856if test "$ivshmem" = "yes" ; then
6857 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6858fi
Richard Hendersone219c492017-09-28 09:01:23 -07006859if test "$capstone" != "no" ; then
Richard Henderson8ca80762017-09-14 09:41:12 -07006860 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6861fi
Paolo Bonziniba59fb72018-06-13 14:23:08 +02006862if test "$debug_mutex" = "yes" ; then
6863 echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak
6864fi
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006865
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00006866# Hold two types of flag:
6867# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6868# a thread we have a handle to
6869# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6870# platform
6871if test "$pthread_setname_np" = "yes" ; then
6872 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6873 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6874fi
6875
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006876if test "$vxhs" = "yes" ; then
6877 echo "CONFIG_VXHS=y" >> $config_host_mak
6878 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6879fi
6880
Junyan He17824402018-07-18 15:47:59 +08006881if test "$libpmem" = "yes" ; then
6882 echo "CONFIG_LIBPMEM=y" >> $config_host_mak
6883fi
6884
Jeff Cody2f740132018-11-07 07:36:44 +01006885if test "$bochs" = "yes" ; then
6886 echo "CONFIG_BOCHS=y" >> $config_host_mak
6887fi
6888if test "$cloop" = "yes" ; then
6889 echo "CONFIG_CLOOP=y" >> $config_host_mak
6890fi
6891if test "$dmg" = "yes" ; then
6892 echo "CONFIG_DMG=y" >> $config_host_mak
6893fi
6894if test "$qcow1" = "yes" ; then
6895 echo "CONFIG_QCOW1=y" >> $config_host_mak
6896fi
6897if test "$vdi" = "yes" ; then
6898 echo "CONFIG_VDI=y" >> $config_host_mak
6899fi
6900if test "$vvfat" = "yes" ; then
6901 echo "CONFIG_VVFAT=y" >> $config_host_mak
6902fi
6903if test "$qed" = "yes" ; then
6904 echo "CONFIG_QED=y" >> $config_host_mak
6905fi
6906if test "$parallels" = "yes" ; then
6907 echo "CONFIG_PARALLELS=y" >> $config_host_mak
6908fi
6909if test "$sheepdog" = "yes" ; then
6910 echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
6911fi
6912
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006913if test "$tcg_interpreter" = "yes"; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006914 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006915elif test "$ARCH" = "sparc64" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006916 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006917elif test "$ARCH" = "s390x" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006918 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006919elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006920 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07006921elif test "$ARCH" = "ppc64" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006922 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006923else
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006924 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006925fi
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006926QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006927
Juan Quintela98ec69a2009-07-16 18:34:18 +02006928echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006929echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006930echo "MAKE=$make" >> $config_host_mak
6931echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04006932echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6933echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03006934echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6935echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00006936echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006937echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006938if $iasl -h > /dev/null 2>&1; then
6939 echo "IASL=$iasl" >> $config_host_mak
6940fi
Juan Quintela804edf22009-07-27 16:12:49 +02006941echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04006942echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01006943echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006944echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01006945echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006946echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006947echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006948echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006949echo "OBJCOPY=$objcopy" >> $config_host_mak
6950echo "LD=$ld" >> $config_host_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006951echo "RANLIB=$ranlib" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02006952echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00006953echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006954echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006955echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02006956echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01006957echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01006958echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006959if test "$sparse" = "yes" ; then
6960 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01006961 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02006962 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006963 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6964 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6965fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01006966if test "$cross_prefix" != ""; then
6967 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6968else
6969 echo "AUTOCONF_HOST := " >> $config_host_mak
6970fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006971echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006972echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03006973echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01006974echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01006975echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02006976echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02006977echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01006978echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006979echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006980echo "DSOSUF=$DSOSUF" >> $config_host_mak
6981echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05006982echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01006983echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6984echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02006985echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01006986echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00006987if test "$gcov" = "yes" ; then
6988 echo "CONFIG_GCOV=y" >> $config_host_mak
6989 echo "GCOV=$gcov_tool" >> $config_host_mak
6990fi
Juan Quintela804edf22009-07-27 16:12:49 +02006991
Alex Bennée51a12b52018-04-04 14:24:39 +01006992if test "$docker" != "no"; then
6993 echo "HAVE_USER_DOCKER=y" >> $config_host_mak
6994fi
6995
Tomáš Golembiovský3efac6e2018-10-23 13:23:10 +02006996if test "$libudev" != "no"; then
6997 echo "CONFIG_LIBUDEV=y" >> $config_host_mak
6998 echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
6999fi
7000
Peter Maydell6efd7512011-11-30 11:59:04 +00007001# use included Linux headers
7002if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00007003 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00007004 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07007005 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01007006 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00007007 ;;
Thomas Hutha69dc532018-08-21 13:27:48 +02007008 ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01007009 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00007010 ;;
7011 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01007012 linux_arch=s390
7013 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01007014 aarch64)
7015 linux_arch=arm64
7016 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01007017 mips64)
7018 linux_arch=mips
7019 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01007020 *)
7021 # For most CPUs the kernel architecture name and QEMU CPU name match.
7022 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00007023 ;;
7024 esac
Peter Maydell08312a62012-08-03 13:51:25 +01007025 # For non-KVM architectures we will not have asm headers
7026 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
7027 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
7028 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00007029fi
7030
bellard1d14ffa2005-10-30 18:58:22 +00007031for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00007032target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02007033config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02007034target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00007035target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02007036
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007037case "$target_name" in
Thomas Hutha69dc532018-08-21 13:27:48 +02007038 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 +02007039 target_bigendian=yes
7040 ;;
7041esac
bellard97a847b2003-08-10 21:36:04 +00007042target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00007043target_user_only="no"
ths831b7822007-01-18 20:06:33 +00007044target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00007045target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00007046case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007047 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00007048 target_softmmu="yes"
7049 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007050 ${target_name}-linux-user)
pbrook9e407a82007-05-26 16:38:53 +00007051 target_user_only="yes"
7052 target_linux_user="yes"
7053 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007054 ${target_name}-bsd-user)
blueswir184778502008-10-26 20:33:16 +00007055 target_user_only="yes"
7056 target_bsd_user="yes"
7057 ;;
pbrook9e407a82007-05-26 16:38:53 +00007058 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01007059 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00007060 exit 1
7061 ;;
7062esac
ths831b7822007-01-18 20:06:33 +00007063
Alex Bennéed75402b2018-04-04 20:27:05 +01007064target_compiler=""
7065target_compiler_static=""
Alex Bennée716a5072018-04-10 12:19:40 +01007066target_compiler_cflags=""
Alex Bennéed75402b2018-04-04 20:27:05 +01007067
bellard97a847b2003-08-10 21:36:04 +00007068mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02007069echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00007070
pbrooke5fe0c52006-06-11 13:32:59 +00007071bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00007072mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02007073interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00007074gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00007075
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007076TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02007077TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02007078TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02007079
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007080case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00007081 i386)
Emilio G. Cota0a7fa002018-08-13 20:52:26 -04007082 mttcg="yes"
Abdallah Bouassidab8158192017-06-01 11:33:15 +02007083 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007084 target_compiler=$cross_cc_i386
Alex Bennée716a5072018-04-10 12:19:40 +01007085 target_compiler_cflags=$cross_cc_ccflags_i386
aurel322408a522008-04-20 20:19:44 +00007086 ;;
7087 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02007088 TARGET_BASE_ARCH=i386
Emilio G. Cota0a7fa002018-08-13 20:52:26 -04007089 mttcg="yes"
Abdallah Bouassidab8158192017-06-01 11:33:15 +02007090 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007091 target_compiler=$cross_cc_x86_64
aurel322408a522008-04-20 20:19:44 +00007092 ;;
7093 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11007094 mttcg="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007095 target_compiler=$cross_cc_alpha
aurel322408a522008-04-20 20:19:44 +00007096 ;;
7097 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007098 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00007099 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00007100 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00007101 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007102 target_compiler=$cross_cc_arm
Alex Bennéed422b2b2018-04-13 11:07:58 +01007103 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
aurel322408a522008-04-20 20:19:44 +00007104 ;;
Michael Weiser722dd7b2018-01-11 13:25:32 +00007105 aarch64|aarch64_be)
7106 TARGET_ARCH=aarch64
Alexander Graf6a49fa92013-09-03 20:12:22 +01007107 TARGET_BASE_ARCH=arm
7108 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00007109 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01007110 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 +01007111 target_compiler=$cross_cc_aarch64
Alex Bennéed422b2b2018-04-13 11:07:58 +01007112 eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}"
Alexander Graf6a49fa92013-09-03 20:12:22 +01007113 ;;
aurel322408a522008-04-20 20:19:44 +00007114 cris)
Alex Bennéed75402b2018-04-04 20:27:05 +01007115 target_compiler=$cross_cc_cris
aurel322408a522008-04-20 20:19:44 +00007116 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08007117 hppa)
Richard Henderson7b93dab2018-01-06 16:02:27 -08007118 mttcg="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007119 target_compiler=$cross_cc_hppa
Richard Henderson61766fe2016-12-15 11:26:14 -08007120 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01007121 lm32)
Alex Bennéed75402b2018-04-04 20:27:05 +01007122 target_compiler=$cross_cc_lm32
Michael Walle613a22c2011-02-17 23:45:17 +01007123 ;;
aurel322408a522008-04-20 20:19:44 +00007124 m68k)
aurel322408a522008-04-20 20:19:44 +00007125 bflt="yes"
Laurent Vivier5a4526b2017-06-20 22:51:19 +02007126 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007127 target_compiler=$cross_cc_m68k
aurel322408a522008-04-20 20:19:44 +00007128 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01007129 microblaze|microblazeel)
7130 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02007131 bflt="yes"
Edgar E. Iglesiasbe73ef62018-04-13 18:10:00 +02007132 echo "TARGET_ABI32=y" >> $config_target_mak
Alex Bennéed75402b2018-04-04 20:27:05 +01007133 target_compiler=$cross_cc_microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02007134 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02007135 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007136 TARGET_ARCH=mips
Alex Bennéed75402b2018-04-04 20:27:05 +01007137 target_compiler=$cross_cc_mips
Juan Quintela25be2102009-10-07 02:41:00 +02007138 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007139 ;;
7140 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08007141 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007142 TARGET_BASE_ARCH=mips
Alex Bennéed75402b2018-04-04 20:27:05 +01007143 target_compiler=$cross_cc_mipsn32
Juan Quintela25be2102009-10-07 02:41:00 +02007144 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08007145 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007146 ;;
7147 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007148 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007149 TARGET_BASE_ARCH=mips
Alex Bennéed75402b2018-04-04 20:27:05 +01007150 target_compiler=$cross_cc_mips64
Juan Quintela25be2102009-10-07 02:41:00 +02007151 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007152 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04007153 moxie)
Alex Bennéed75402b2018-04-04 20:27:05 +01007154 target_compiler=$cross_cc_moxie
Anthony Greend15a9c22013-03-18 15:49:25 -04007155 ;;
Marek Vasute6717112017-01-18 23:01:46 +01007156 nios2)
Alex Bennéed75402b2018-04-04 20:27:05 +01007157 target_compiler=$cross_cc_nios2
Marek Vasute6717112017-01-18 23:01:46 +01007158 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08007159 or1k)
Alex Bennéed75402b2018-04-04 20:27:05 +01007160 target_compiler=$cross_cc_or1k
Jia Liue67db062012-07-20 15:50:39 +08007161 TARGET_ARCH=openrisc
7162 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08007163 ;;
aurel322408a522008-04-20 20:19:44 +00007164 ppc)
aurel32c8b35322009-01-24 15:07:34 +00007165 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
Alex Bennéed75402b2018-04-04 20:27:05 +01007166 target_compiler=$cross_cc_powerpc
aurel322408a522008-04-20 20:19:44 +00007167 ;;
aurel322408a522008-04-20 20:19:44 +00007168 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02007169 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02007170 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05307171 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01007172 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 +01007173 target_compiler=$cross_cc_ppc64
aurel322408a522008-04-20 20:19:44 +00007174 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05007175 ppc64le)
7176 TARGET_ARCH=ppc64
7177 TARGET_BASE_ARCH=ppc
7178 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05307179 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01007180 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 +01007181 target_compiler=$cross_cc_ppc64le
Doug Kwan9c351262014-05-29 09:12:21 -05007182 ;;
aurel322408a522008-04-20 20:19:44 +00007183 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007184 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007185 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02007186 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02007187 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01007188 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 +01007189 target_compiler=$cross_cc_ppc64abi32
aurel322408a522008-04-20 20:19:44 +00007190 ;;
Michael Clark25fa1942018-03-03 01:32:59 +13007191 riscv32)
7192 TARGET_BASE_ARCH=riscv
7193 TARGET_ABI_DIR=riscv
7194 mttcg=yes
Alex Bennéed75402b2018-04-04 20:27:05 +01007195 target_compiler=$cross_cc_riscv32
Michael Clark25fa1942018-03-03 01:32:59 +13007196 ;;
7197 riscv64)
7198 TARGET_BASE_ARCH=riscv
7199 TARGET_ABI_DIR=riscv
7200 mttcg=yes
Alex Bennéed75402b2018-04-04 20:27:05 +01007201 target_compiler=$cross_cc_riscv64
Michael Clark25fa1942018-03-03 01:32:59 +13007202 ;;
aurel322408a522008-04-20 20:19:44 +00007203 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007204 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00007205 bflt="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007206 target_compiler=$cross_cc_sh4
aurel322408a522008-04-20 20:19:44 +00007207 ;;
7208 sparc)
Alex Bennéed75402b2018-04-04 20:27:05 +01007209 target_compiler=$cross_cc_sparc
aurel322408a522008-04-20 20:19:44 +00007210 ;;
7211 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02007212 TARGET_BASE_ARCH=sparc
Alex Bennéed75402b2018-04-04 20:27:05 +01007213 target_compiler=$cross_cc_sparc64
aurel322408a522008-04-20 20:19:44 +00007214 ;;
7215 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02007216 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02007217 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02007218 TARGET_ABI_DIR=sparc
Alex Bennéed75402b2018-04-04 20:27:05 +01007219 target_compiler=$cross_cc_sparc32plus
Juan Quintela25be2102009-10-07 02:41:00 +02007220 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00007221 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01007222 s390x)
David Hildenbrand63685bc2018-01-29 13:56:20 +01007223 mttcg=yes
Christian Borntraeger86158a22017-03-08 12:41:14 +01007224 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 +01007225 target_compiler=$cross_cc_s390x
Alexander Graf24e804ec2009-12-05 12:44:22 +01007226 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08007227 tilegx)
Alex Bennéed75402b2018-04-04 20:27:05 +01007228 target_compiler=$cross_cc_tilegx
Chen Gang444e06b2015-08-21 05:43:37 +08007229 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07007230 tricore)
Alex Bennéed75402b2018-04-04 20:27:05 +01007231 target_compiler=$cross_cc_tricore
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07007232 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08007233 unicore32)
Alex Bennéed75402b2018-04-04 20:27:05 +01007234 target_compiler=$cross_cc_unicore32
Guan Xuetaod2fbca92011-04-12 16:27:03 +08007235 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04007236 xtensa|xtensaeb)
7237 TARGET_ARCH=xtensa
Max Filippov02e33e92018-10-19 18:40:20 -07007238 bflt="yes"
Max Filippov9fb40342017-03-06 17:17:43 -08007239 mttcg="yes"
Alex Bennéed75402b2018-04-04 20:27:05 +01007240 target_compiler=$cross_cc_xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04007241 ;;
aurel322408a522008-04-20 20:19:44 +00007242 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01007243 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00007244 ;;
7245esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02007246# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
7247if [ "$TARGET_BASE_ARCH" = "" ]; then
7248 TARGET_BASE_ARCH=$TARGET_ARCH
7249fi
7250
Alex Bennéed75402b2018-04-04 20:27:05 +01007251# Do we have a cross compiler for this target?
7252if has $target_compiler; then
7253
7254 write_c_skeleton
7255
Alex Bennée716a5072018-04-10 12:19:40 +01007256 if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then
Alex Bennéed75402b2018-04-04 20:27:05 +01007257 # For host systems we might get away with building without -static
Alex Bennée716a5072018-04-10 12:19:40 +01007258 if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then
Alex Bennéed75402b2018-04-04 20:27:05 +01007259 target_compiler=""
7260 else
7261 enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'"
7262 target_compiler_static="n"
7263 fi
7264 else
7265 enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'"
7266 target_compiler_static="y"
7267 fi
7268else
7269 target_compiler=""
7270fi
7271
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02007272symlink "$source_path/Makefile.target" "$target_dir/Makefile"
7273
Daniel P. Berrange99afc912012-08-20 15:31:38 +01007274upper() {
7275 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
7276}
7277
Stefan Weil89138852016-05-16 15:10:20 +02007278target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02007279echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01007280echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02007281echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02007282if [ "$TARGET_ABI_DIR" = "" ]; then
7283 TARGET_ABI_DIR=$TARGET_ARCH
7284fi
Juan Quintela25be2102009-10-07 02:41:00 +02007285echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07007286if [ "$HOST_VARIANT_DIR" != "" ]; then
7287 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
7288fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02007289
7290if supported_xen_target $target; then
7291 echo "CONFIG_XEN=y" >> $config_target_mak
7292 if test "$xen_pci_passthrough" = yes; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00007293 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
Juan Quintela1b0c87f2009-07-16 18:33:59 +02007294 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02007295fi
7296if supported_kvm_target $target; then
7297 echo "CONFIG_KVM=y" >> $config_target_mak
7298 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02007299 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureaue6a74862017-08-03 11:07:46 +02007300 if test "$vhost_user" = "yes" ; then
7301 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
7302 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02007303 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02007304fi
7305if supported_hax_target $target; then
7306 echo "CONFIG_HAX=y" >> $config_target_mak
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01007307fi
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05007308if supported_hvf_target $target; then
7309 echo "CONFIG_HVF=y" >> $config_target_mak
7310fi
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08007311if supported_whpx_target $target; then
7312 echo "CONFIG_WHPX=y" >> $config_target_mak
7313fi
bellardde83cd02003-06-15 20:25:43 +00007314if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007315 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00007316fi
7317if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007318 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00007319 if test "$mttcg" = "yes" ; then
7320 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
7321 fi
bellardde83cd02003-06-15 20:25:43 +00007322fi
bellard997344f2003-10-27 21:10:39 +00007323if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007324 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01007325 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00007326fi
ths831b7822007-01-18 20:06:33 +00007327if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007328 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00007329fi
pbrook56aebc82008-10-11 17:55:29 +00007330list=""
7331if test ! -z "$gdb_xml_files" ; then
7332 for x in $gdb_xml_files; do
7333 list="$list $source_path/gdb-xml/$x"
7334 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02007335 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00007336fi
bellardde83cd02003-06-15 20:25:43 +00007337
pbrooke5fe0c52006-06-11 13:32:59 +00007338if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02007339 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00007340fi
blueswir184778502008-10-26 20:33:16 +00007341if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007342 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00007343fi
bellard5b0753e2005-03-01 21:37:28 +00007344
Alex Bennéed75402b2018-04-04 20:27:05 +01007345if test -n "$target_compiler"; then
7346 echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak
7347
7348 if test -n "$target_compiler_static"; then
7349 echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak
7350 fi
Alex Bennée716a5072018-04-10 12:19:40 +01007351
7352 if test -n "$target_compiler_cflags"; then
7353 echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
7354 fi
Alex Bennéed75402b2018-04-04 20:27:05 +01007355fi
7356
Alex Bennée716a5072018-04-10 12:19:40 +01007357
Juan Quintela4afddb52009-08-03 14:46:45 +02007358# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02007359
Juan Quintela4afddb52009-08-03 14:46:45 +02007360cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02007361ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02007362
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007363disas_config() {
7364 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7365 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7366}
7367
Juan Quintela64656022009-08-03 14:46:53 +02007368for i in $ARCH $TARGET_BASE_ARCH ; do
7369 case "$i" in
7370 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007371 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02007372 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05007373 aarch64)
7374 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007375 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05007376 fi
7377 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007378 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007379 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00007380 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007381 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00007382 fi
Juan Quintela64656022009-08-03 14:46:53 +02007383 ;;
7384 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007385 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02007386 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07007387 hppa)
7388 disas_config "HPPA"
7389 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07007390 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007391 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02007392 ;;
Michael Walle79368f42012-03-31 19:54:20 +02007393 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007394 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02007395 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007396 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007397 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02007398 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01007399 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007400 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02007401 ;;
7402 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007403 disas_config "MIPS"
Aleksandar Markovic89a955e2018-10-24 17:41:49 +02007404 if test -n "${cxx}"; then
7405 disas_config "NANOMIPS"
7406 fi
Juan Quintela64656022009-08-03 14:46:53 +02007407 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04007408 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007409 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04007410 ;;
Marek Vasute6717112017-01-18 23:01:46 +01007411 nios2)
7412 disas_config "NIOS2"
7413 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08007414 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007415 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08007416 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007417 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007418 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02007419 ;;
Michael Clark25fa1942018-03-03 01:32:59 +13007420 riscv)
7421 disas_config "RISCV"
7422 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01007423 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007424 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02007425 ;;
7426 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007427 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02007428 ;;
7429 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007430 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02007431 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04007432 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007433 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04007434 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007435 esac
7436done
Stefan Weil9195b2c2011-10-19 07:07:18 +02007437if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007438 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02007439fi
Juan Quintela64656022009-08-03 14:46:53 +02007440
Juan Quintela6ee71262009-08-03 14:46:47 +02007441case "$ARCH" in
7442alpha)
7443 # Ensure there's only a single GP
7444 cflags="-msmall-data $cflags"
7445;;
7446esac
7447
Juan Quintelad02c1db2009-08-03 14:46:50 +02007448if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007449 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02007450 if test "$target_linux_user" = "yes" ; then
7451 cflags="-p $cflags"
7452 ldflags="-p $ldflags"
7453 fi
7454 if test "$target_softmmu" = "yes" ; then
7455 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02007456 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02007457 fi
7458fi
7459
Juan Quintela9b8e1112009-08-03 14:46:46 +02007460if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07007461 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02007462fi
Juan Quintelafa282482009-07-22 22:37:39 +02007463
Christian Borntraegere9a35912017-08-23 12:16:23 +02007464# Newer kernels on s390 check for an S390_PGSTE program header and
7465# enable the pgste page table extensions in that case. This makes
7466# the vm.allocate_pgste sysctl unnecessary. We enable this program
7467# header if
7468# - we build on s390x
7469# - we build the system emulation for s390x (qemu-system-s390x)
7470# - KVM is enabled
7471# - the linker supports --s390-pgste
7472if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7473 if ld_has --s390-pgste ; then
7474 ldflags="-Wl,--s390-pgste $ldflags"
7475 fi
7476fi
7477
Juan Quintela25be2102009-10-07 02:41:00 +02007478echo "LDFLAGS+=$ldflags" >> $config_target_mak
7479echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02007480
bellard97a847b2003-08-10 21:36:04 +00007481done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00007482
Alex Bennéed75402b2018-04-04 20:27:05 +01007483if test -n "$enabled_cross_compilers"; then
7484 echo
7485 echo "NOTE: cross-compilers enabled: $enabled_cross_compilers"
7486fi
7487
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03007488if [ "$fdt" = "git" ]; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10007489 echo "config-host.h: subdir-dtc" >> $config_host_mak
7490fi
Richard Hendersone219c492017-09-28 09:01:23 -07007491if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7492 echo "config-host.h: subdir-capstone" >> $config_host_mak
7493fi
7494if test -n "$LIBCAPSTONE"; then
7495 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7496fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10007497
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08007498if test "$numa" = "yes"; then
7499 echo "CONFIG_NUMA=y" >> $config_host_mak
7500fi
7501
John Snowfd0e6052015-03-25 18:57:39 -04007502if test "$ccache_cpp2" = "yes"; then
7503 echo "export CCACHE_CPP2=y" >> $config_host_mak
7504fi
7505
Peter Maydelle29e5c62018-11-02 11:52:38 +00007506# If we're using a separate build tree, set it up now.
7507# DIRS are directories which we simply mkdir in the build tree;
7508# LINKS are things to symlink back into the source tree
7509# (these can be both files and directories).
7510# Caution: do not add files or directories here using wildcards. This
7511# will result in problems later if a new file matching the wildcard is
7512# added to the source tree -- nothing will cause configure to be rerun
7513# so the build tree will be missing the link back to the new file, and
7514# tests might fail. Prefer to keep the relevant files in their own
7515# directory and symlink the directory instead.
Fam Zhengb1fb9a62017-09-05 10:11:58 +08007516DIRS="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 -05007517DIRS="$DIRS tests/fp"
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02007518DIRS="$DIRS docs docs/interop fsdev scsi"
Christian Borntraeger9933c302013-04-23 01:23:03 +00007519DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007520DIRS="$DIRS roms/seabios roms/vgabios"
Peter Maydelle29e5c62018-11-02 11:52:38 +00007521LINKS="Makefile tests/tcg/Makefile qdict-test-data.txt"
7522LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
7523LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
7524LINKS="$LINKS tests/fp/Makefile"
7525LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps"
7526LINKS="$LINKS pc-bios/spapr-rtas/Makefile"
7527LINKS="$LINKS pc-bios/s390-ccw/Makefile"
7528LINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile"
7529LINKS="$LINKS pc-bios/qemu-icon.bmp"
7530LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
Peter Maydell39950352018-11-02 11:52:39 +00007531LINKS="$LINKS tests/acceptance tests/data"
7532LINKS="$LINKS tests/qemu-iotests/check"
Richard Henderson753d11f2011-06-24 11:58:37 -07007533for bios_file in \
7534 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11007535 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01007536 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07007537 $source_path/pc-bios/*.rom \
7538 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00007539 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07007540 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01007541 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07007542 $source_path/pc-bios/palcode-*
7543do
Peter Maydelle29e5c62018-11-02 11:52:38 +00007544 LINKS="$LINKS pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007545done
7546mkdir -p $DIRS
Peter Maydelle29e5c62018-11-02 11:52:38 +00007547for f in $LINKS ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03007548 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01007549 symlink "$source_path/$f" "$f"
7550 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007551done
Paul Brook1ad21342009-05-19 16:17:58 +01007552
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007553# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06007554for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007555 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01007556 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007557 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07007558 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07007559 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007560 echo "CC=$cc" >> $config_mak
7561 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00007562 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007563 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03007564 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007565 echo "LD=$ld" >> $config_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08007566 echo "RANLIB=$ranlib" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007567done
7568
Max Reitz76c75602014-05-24 23:24:56 +02007569# set up qemu-iotests in this build directory
7570iotests_common_env="tests/qemu-iotests/common.env"
Max Reitz76c75602014-05-24 23:24:56 +02007571
7572echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7573echo >> "$iotests_common_env"
7574echo "export PYTHON='$python'" >> "$iotests_common_env"
7575
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007576# Save the configure command line for later reuse.
7577cat <<EOD >config.status
7578#!/bin/sh
7579# Generated by configure.
7580# Run this file to recreate the current configuration.
7581# Compiler output produced by configure, useful for debugging
7582# configure, is in config.log if it exists.
7583EOD
Daniel P. Berrangée811da72018-09-04 13:36:03 +01007584
7585preserve_env() {
7586 envname=$1
7587
7588 eval envval=\$$envname
7589
7590 if test -n "$envval"
7591 then
7592 echo "$envname='$envval'" >> config.status
7593 echo "export $envname" >> config.status
7594 else
7595 echo "unset $envname" >> config.status
7596 fi
7597}
7598
7599# Preserve various env variables that influence what
7600# features/build target configure will detect
7601preserve_env AR
7602preserve_env AS
7603preserve_env CC
7604preserve_env CPP
7605preserve_env CXX
7606preserve_env INSTALL
7607preserve_env LD
7608preserve_env LD_LIBRARY_PATH
7609preserve_env LIBTOOL
7610preserve_env MAKE
7611preserve_env NM
7612preserve_env OBJCOPY
7613preserve_env PATH
7614preserve_env PKG_CONFIG
7615preserve_env PKG_CONFIG_LIBDIR
7616preserve_env PKG_CONFIG_PATH
7617preserve_env PYTHON
7618preserve_env SDL_CONFIG
7619preserve_env SDL2_CONFIG
7620preserve_env SMBD
7621preserve_env STRIP
7622preserve_env WINDRES
7623
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007624printf "exec" >>config.status
7625printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00007626echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007627chmod +x config.status
7628
Peter Maydell8cd05ab2014-05-23 17:07:24 +01007629rm -r "$TMPDIR1"