blob: 99b4a287ddb53408b15cf66c763845d622e434a5 [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 | \
198 ppc:ppc | ppcemb:ppc | ppc64:ppc | \
199 ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
200 s390x:s390x)
201 return 0
202 ;;
203 esac
204 return 1
205}
206
207supported_xen_target() {
208 test "$xen" = "yes" || return 1
209 glob "$1" "*-softmmu" || return 1
Paolo Bonzinib5ed2e12017-07-11 12:00:49 +0200210 # Only i386 and x86_64 provide the xenpv machine.
211 case "${1%-softmmu}" in
212 i386|x86_64)
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200213 return 0
214 ;;
215 esac
216 return 1
217}
218
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500219supported_hvf_target() {
220 test "$hvf" = "yes" || return 1
221 glob "$1" "*-softmmu" || return 1
222 case "${1%-softmmu}" in
223 x86_64)
224 return 0
225 ;;
226 esac
227 return 1
228}
229
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800230supported_whpx_target() {
231 test "$whpx" = "yes" || return 1
232 glob "$1" "*-softmmu" || return 1
233 case "${1%-softmmu}" in
234 i386|x86_64)
235 return 0
236 ;;
237 esac
238 return 1
239}
240
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200241supported_target() {
242 case "$1" in
243 *-softmmu)
244 ;;
245 *-linux-user)
246 if test "$linux" != "yes"; then
247 print_error "Target '$target' is only available on a Linux host"
248 return 1
249 fi
250 ;;
251 *-bsd-user)
252 if test "$bsd" != "yes"; then
253 print_error "Target '$target' is only available on a BSD host"
254 return 1
255 fi
256 ;;
257 *)
258 print_error "Invalid target name '$target'"
259 return 1
260 ;;
261 esac
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200262 test "$tcg" = "yes" && return 0
263 supported_kvm_target "$1" && return 0
264 supported_xen_target "$1" && return 0
265 supported_hax_target "$1" && return 0
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500266 supported_hvf_target "$1" && return 0
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800267 supported_whpx_target "$1" && return 0
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200268 print_error "TCG disabled, but hardware accelerator not available for '$target'"
269 return 1
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200270}
271
Christian Borntraegere9a35912017-08-23 12:16:23 +0200272
273ld_has() {
274 $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
275}
276
bellard7d132992003-03-06 23:23:54 +0000277# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200278source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200279cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300280iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000281interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000282static="no"
bellard7d132992003-03-06 23:23:54 +0000283cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000284audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800285block_drv_rw_whitelist=""
286block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000287host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200288libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200289libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200290audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400291audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200292cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500293libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100294debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100295stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000296
Daniel P. Berrange92712822017-09-29 11:11:58 +0100297if test -e "$source_path/.git"
298then
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100299 git_update=yes
Daniel P. Berrange92712822017-09-29 11:11:58 +0100300 git_submodules="ui/keycodemapdb"
301else
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100302 git_update=no
Daniel P. Berrange92712822017-09-29 11:11:58 +0100303 git_submodules=""
304fi
Daniel P. Berrangecc84d632017-10-20 15:02:43 +0100305git="git"
aliguoriac0df512008-12-29 17:14:15 +0000306
Stefan Weilafb63eb2012-09-26 22:04:38 +0200307# Don't accept a target_list environment variable.
308unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100309
310# Default value for a variable defining feature "foo".
311# * foo="no" feature will only be used if --enable-foo arg is given
312# * foo="" feature will be searched for, and if found, will be used
313# unless --disable-foo is given
314# * foo="yes" this value will only be set by --enable-foo flag.
315# feature will searched for,
316# if not found, configure exits with error
317#
318# Always add --enable-foo and --disable-foo command line args.
319# Distributions want to ensure that several features are compiled in, and it
320# is impossible without a --enable-foo that exits if a feature is not found.
321
322bluez=""
323brlapi=""
324curl=""
325curses=""
326docs=""
327fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100328netmap="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100329sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400330sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530331virtfs=""
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200332mpath=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100333vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100334sparse="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100335vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100336vnc_sasl=""
337vnc_jpeg=""
338vnc_png=""
Gerd Hoffmann6a021532017-10-05 17:33:28 +0200339xkbcommon=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100340xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000341xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000342xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000343xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100344linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500345cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100346attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200347libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100348xfs=""
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200349tcg="yes"
Paolo Bonzinia40161c2018-02-16 10:05:23 +0100350membarrier=""
Bradd41a75a2011-07-26 23:11:26 -0400351vhost_net="no"
Gonglei042cea22018-03-01 21:46:28 +0800352vhost_crypto="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000353vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100354vhost_vsock="no"
Marc-André Lureaue6a74862017-08-03 11:07:46 +0200355vhost_user=""
Bradd41a75a2011-07-26 23:11:26 -0400356kvm="no"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100357hax="no"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500358hvf="no"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -0800359whpx="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400360rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100361gprof="no"
362debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100363debug="no"
Marc-André Lureau247724c2018-01-16 16:11:51 +0100364sanitizers="no"
John Snowb553a042015-11-03 15:43:42 -0500365fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100366strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200367tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100368bigendian="no"
369mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000370gcov="no"
371gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100372EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800373DSOSUF=".so"
374LDFLAGS_SHARED="-shared"
375modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100376prefix="/usr/local"
377mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300378datadir="\${prefix}/share"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200379firmwarepath="\${prefix}/share/qemu-firmware"
Eduardo Habkost850da182012-04-18 16:55:38 -0300380qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100381bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300382libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400383libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200384includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100385sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300386local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100387confsuffix="/qemu"
388slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100389oss_lib=""
390bsd="no"
391linux="no"
392solaris="no"
393profiler="no"
394cocoa="no"
395softmmu="yes"
396linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100397bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100398blobs="yes"
399pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200400pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200401qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300402trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100403trace_file="trace"
404spice=""
405rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200406smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100407libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200408usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100409opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100410opengl_dmabuf="no"
Richard Henderson5dd89902017-07-18 18:40:18 -1000411cpuid_h="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800412avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300413zlib="yes"
Richard Henderson8ca80762017-09-14 09:41:12 -0700414capstone=""
Stefan Weilb25c9df2014-04-29 08:21:16 +0200415lzo=""
416snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100417bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400418guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400419guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500420guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300421guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400422vss_win32_sdk=""
423win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100424want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100425libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100426libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100427coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200428coroutine_pool=""
Peter Lieven7d992e42016-09-27 11:58:45 +0200429debug_stack_usage="no"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -0400430crypto_afalg="no"
Eduardo Otubof7945732012-08-14 18:44:05 -0300431seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530432glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400433glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530434glusterfs_discard="no"
Niels de Vosdf3a4292017-05-28 12:01:14 +0530435glusterfs_fallocate="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530436glusterfs_zerofill="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600437gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200438gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200439gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100440tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100441gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900442gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100443nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100444nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100445gcrypt=""
Longpeng(Mike)1f923c72016-12-13 18:42:55 +0800446gcrypt_hmac="no"
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100447gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100448vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200449virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400450tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100451libssh2=""
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +0100452live_block_migration="yes"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800453numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800454tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200455jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800456replication="yes"
Ashish Mittalda92c3f2017-04-03 20:48:08 -0700457vxhs=""
Klim Kireeved279a02018-01-12 12:01:19 +0300458libxml2=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100459
Peter Maydell898be3e2017-03-21 14:31:57 +0000460supported_cpu="no"
461supported_os="no"
Peter Maydellfb59dab2017-03-28 14:01:52 +0100462bogus_os="no"
Yang Zhong5a22ab72017-12-20 21:16:46 +0800463malloc_trim=""
Peter Maydell898be3e2017-03-21 14:31:57 +0000464
aliguoriac0df512008-12-29 17:14:15 +0000465# parse CC options first
466for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200467 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000468 case "$opt" in
469 --cross-prefix=*) cross_prefix="$optarg"
470 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100471 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000472 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400473 --cxx=*) CXX="$optarg"
474 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100475 --source-path=*) source_path="$optarg"
476 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200477 --cpu=*) cpu="$optarg"
478 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100479 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200480 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100481 --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100482 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100483 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100484 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200485 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100486 --enable-debug-info) debug_info="yes"
487 ;;
488 --disable-debug-info) debug_info="no"
489 ;;
aliguoriac0df512008-12-29 17:14:15 +0000490 esac
491done
aliguoriac0df512008-12-29 17:14:15 +0000492# OS specific
493# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100494# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000495
Peter Maydelle49d0212012-12-07 15:39:13 +0000496# Preferred compiler:
497# ${CC} (if set)
498# ${cross_prefix}gcc (if cross-prefix specified)
499# system compiler
500if test -z "${CC}${cross_prefix}"; then
501 cc="$host_cc"
502else
503 cc="${CC-${cross_prefix}gcc}"
504fi
505
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400506if test -z "${CXX}${cross_prefix}"; then
507 cxx="c++"
508else
509 cxx="${CXX-${cross_prefix}g++}"
510fi
511
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500512ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700513as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700514ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000515cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500516objcopy="${OBJCOPY-${cross_prefix}objcopy}"
517ld="${LD-${cross_prefix}ld}"
Alistair Francis9f81aeb2017-11-07 17:10:46 -0800518ranlib="${RANLIB-${cross_prefix}ranlib}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200519nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500520strip="${STRIP-${cross_prefix}strip}"
521windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300522pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
523query_pkg_config() {
524 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
525}
526pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500527sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000528sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000529
Peter Maydell45d285a2013-10-21 21:03:06 +0100530# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
531ARFLAGS="${ARFLAGS-rv}"
532
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200533# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100534# We use -fwrapv to tell the compiler that we require a C dialect where
535# left shift of signed integers is well defined and has the expected
536# 2s-complement style results. (Both clang and gcc agree that it
537# provides these semantics.)
538QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400539QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100540QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200541QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +0200542QEMU_INCLUDES="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100543if test "$debug_info" = "yes"; then
544 CFLAGS="-g $CFLAGS"
545 LDFLAGS="-g $LDFLAGS"
546fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200547
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100548# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200549source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100550
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300551# running configure in the source tree?
552# we know that's the case if configure is there.
553if test -f "./configure"; then
554 pwd_is_source_path="y"
555else
556 pwd_is_source_path="n"
557fi
558
aliguoriac0df512008-12-29 17:14:15 +0000559check_define() {
560cat > $TMPC <<EOF
561#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000562#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000563#endif
564int main(void) { return 0; }
565EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200566 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000567}
568
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200569check_include() {
570cat > $TMPC <<EOF
571#include <$1>
572int main(void) { return 0; }
573EOF
574 compile_object
575}
576
John Snow93b25862015-03-25 18:57:37 -0400577write_c_skeleton() {
578 cat > $TMPC <<EOF
579int main(void) { return 0; }
580EOF
581}
582
Peter Maydellbbea4052012-08-14 15:35:34 +0100583if check_define __linux__ ; then
584 targetos="Linux"
585elif check_define _WIN32 ; then
586 targetos='MINGW32'
587elif check_define __OpenBSD__ ; then
588 targetos='OpenBSD'
589elif check_define __sun__ ; then
590 targetos='SunOS'
591elif check_define __HAIKU__ ; then
592 targetos='Haiku'
Peter Maydell951fedf2017-07-13 16:15:32 +0100593elif check_define __FreeBSD__ ; then
594 targetos='FreeBSD'
595elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
596 targetos='GNU/kFreeBSD'
597elif check_define __DragonFly__ ; then
598 targetos='DragonFly'
599elif check_define __NetBSD__; then
600 targetos='NetBSD'
601elif check_define __APPLE__; then
602 targetos='Darwin'
Peter Maydellbbea4052012-08-14 15:35:34 +0100603else
Peter Maydell951fedf2017-07-13 16:15:32 +0100604 # This is a fatal error, but don't report it yet, because we
605 # might be going to just print the --help text, or it might
606 # be the result of a missing compiler.
607 targetos='bogus'
608 bogus_os='yes'
Peter Maydellbbea4052012-08-14 15:35:34 +0100609fi
610
611# Some host OSes need non-standard checks for which CPU to use.
612# Note that these checks are broken for cross-compilation: if you're
613# cross-compiling to one of these OSes then you'll need to specify
614# the correct CPU with the --cpu option.
615case $targetos in
616Darwin)
617 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
618 # run 64-bit userspace code.
619 # If the user didn't specify a CPU explicitly and the kernel says this is
620 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
621 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
622 cpu="x86_64"
623 fi
624 ;;
625SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200626 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100627 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
628 cpu="x86_64"
629 fi
630esac
631
Juan Quintela2ff6b912009-08-03 14:45:55 +0200632if test ! -z "$cpu" ; then
633 # command line argument
634 :
635elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000636 cpu="i386"
637elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700638 if check_define __ILP32__ ; then
639 cpu="x32"
640 else
641 cpu="x86_64"
642 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000643elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000644 if check_define __arch64__ ; then
645 cpu="sparc64"
646 else
647 cpu="sparc"
648 fi
malcfdf7ed92009-01-14 18:39:52 +0000649elif check_define _ARCH_PPC ; then
650 if check_define _ARCH_PPC64 ; then
651 cpu="ppc64"
652 else
653 cpu="ppc"
654 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200655elif check_define __mips__ ; then
656 cpu="mips"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200657elif check_define __s390__ ; then
658 if check_define __s390x__ ; then
659 cpu="s390x"
660 else
661 cpu="s390"
662 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100663elif check_define __arm__ ; then
664 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100665elif check_define __aarch64__ ; then
666 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000667else
Stefan Weil89138852016-05-16 15:10:20 +0200668 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000669fi
670
Peter Maydell359bc952011-12-24 13:07:25 +0000671ARCH=
672# Normalise host CPU name and set ARCH.
673# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000674case "$cpu" in
Peter Maydell6499fd12017-03-28 11:58:38 +0100675 ppc|ppc64|s390|s390x|sparc64|x32)
Peter Maydell898be3e2017-03-21 14:31:57 +0000676 cpu="$cpu"
677 supported_cpu="yes"
678 ;;
bellard7d132992003-03-06 23:23:54 +0000679 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000680 cpu="i386"
Peter Maydell898be3e2017-03-21 14:31:57 +0000681 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000682 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000683 x86_64|amd64)
684 cpu="x86_64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000685 supported_cpu="yes"
aurel32aaa5fa12008-04-11 22:04:22 +0000686 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100687 armv*b|armv*l|arm)
688 cpu="arm"
Peter Maydell898be3e2017-03-21 14:31:57 +0000689 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000690 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100691 aarch64)
692 cpu="aarch64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000693 supported_cpu="yes"
Claudio Fontana1f080312013-06-12 16:20:23 +0100694 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200695 mips*)
696 cpu="mips"
Peter Maydell898be3e2017-03-21 14:31:57 +0000697 supported_cpu="yes"
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200698 ;;
blueswir131422552007-04-16 18:27:06 +0000699 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000700 cpu="sparc"
Peter Maydell6499fd12017-03-28 11:58:38 +0100701 supported_cpu="yes"
bellardae228532003-05-13 18:59:59 +0000702 ;;
bellard7d132992003-03-06 23:23:54 +0000703 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000704 # This will result in either an error or falling back to TCI later
705 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000706 ;;
707esac
Peter Maydell359bc952011-12-24 13:07:25 +0000708if test -z "$ARCH"; then
709 ARCH="$cpu"
710fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200711
bellard7d132992003-03-06 23:23:54 +0000712# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200713
Stacey Sonadfc3e92014-06-08 09:57:22 -0700714# host *BSD for user mode
715HOST_VARIANT_DIR=""
716
bellard7d132992003-03-06 23:23:54 +0000717case $targetos in
bellard67b915a2004-03-31 23:37:16 +0000718MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200719 mingw32="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100720 hax="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200721 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200722 if check_include dsound.h; then
723 audio_drv_list="dsound"
724 else
725 audio_drv_list=""
726 fi
Peter Maydell898be3e2017-03-21 14:31:57 +0000727 supported_os="yes"
bellard67b915a2004-03-31 23:37:16 +0000728;;
ths5c40d2b2007-06-23 16:03:36 +0000729GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100730 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200731 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200732 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000733;;
bellard7d3505c2004-05-12 19:32:15 +0000734FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200735 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100736 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200737 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200738 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100739 # needed for kinfo_getvmmap(3) in libutil.h
740 LIBS="-lutil $LIBS"
Ed Mastea7764f12016-11-21 20:32:45 -0500741 # needed for kinfo_getproc
742 libs_qga="-lutil $libs_qga"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100743 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700744 HOST_VARIANT_DIR="freebsd"
Peter Maydell898be3e2017-03-21 14:31:57 +0000745 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000746;;
blueswir1c5e97232009-03-07 20:06:23 +0000747DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200748 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100749 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200750 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200751 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700752 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000753;;
bellard7d3505c2004-05-12 19:32:15 +0000754NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200755 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100756 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200757 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200758 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200759 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700760 HOST_VARIANT_DIR="netbsd"
Kamil Rytarowski3c2bdbc2017-05-13 04:21:43 +0200761 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000762;;
763OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200764 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100765 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400766 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200767 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700768 HOST_VARIANT_DIR="openbsd"
Brad Smith0a773d52018-02-16 11:46:20 -0500769 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000770;;
bellard83fb7ad2004-07-05 21:25:26 +0000771Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200772 bsd="yes"
773 darwin="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100774 hax="yes"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500775 hvf="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800776 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200777 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200778 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200779 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200780 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200781 cocoa="yes"
782 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200783 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200784 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200785 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100786 # Disable attempts to use ObjectiveC features in os/object.h since they
787 # won't work when we're compiling with gcc as a C compiler.
788 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700789 HOST_VARIANT_DIR="darwin"
Peter Maydell898be3e2017-03-21 14:31:57 +0000790 supported_os="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000791;;
bellardec530c82006-04-25 22:36:06 +0000792SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200793 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100794 make="${MAKE-gmake}"
795 install="${INSTALL-ginstall}"
Brade2d88302011-09-02 16:53:28 -0400796 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200797 if test -f /usr/include/sys/soundcard.h ; then
798 audio_drv_list="oss"
799 fi
800 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000801# needed for CMSG_ macros in sys/socket.h
802 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
803# needed for TIOCWIN* defines in termios.h
804 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200805 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200806 solarisnetlibs="-lsocket -lnsl -lresolv"
807 LIBS="$solarisnetlibs $LIBS"
808 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000809;;
Andreas Färber179cf402010-09-20 00:50:43 +0200810Haiku)
811 haiku="yes"
812 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
813 LIBS="-lposix_error_mapper -lnetwork $LIBS"
814;;
Peter Maydell898be3e2017-03-21 14:31:57 +0000815Linux)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200816 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200817 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200818 linux="yes"
819 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200820 kvm="yes"
821 vhost_net="yes"
Gonglei042cea22018-03-01 21:46:28 +0800822 vhost_crypto="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000823 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100824 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000825 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
Peter Maydell898be3e2017-03-21 14:31:57 +0000826 supported_os="yes"
827;;
bellard7d132992003-03-06 23:23:54 +0000828esac
829
bellard7d3505c2004-05-12 19:32:15 +0000830if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000831 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200832 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000833 fi
bellard7d3505c2004-05-12 19:32:15 +0000834fi
835
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100836: ${make=${MAKE-make}}
837: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100838: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400839: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100840
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100841# Default objcc to clang if available, otherwise use CC
842if has clang; then
843 objcc=clang
844else
845 objcc="$cc"
846fi
847
Juan Quintela3457a3f2009-08-03 14:46:07 +0200848if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200849 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800850 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200851 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100852 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
853 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100854 # MinGW needs -mthreads for TLS and macro _MT.
855 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100856 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400857 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100858 if compile_prog "" "-liberty" ; then
859 LIBS="-liberty $LIBS"
860 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200861 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200862 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300863 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300864 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200865 bindir="\${prefix}"
866 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200867 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200868 confsuffix=""
Bishara AbuHattoum105fad62017-08-22 16:55:04 +0300869 libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200870fi
871
Anthony Liguori487fefd2009-06-11 13:28:25 -0500872werror=""
bellard85aa5182007-11-11 20:17:03 +0000873
bellard7d132992003-03-06 23:23:54 +0000874for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200875 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000876 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000877 --help|-h) show_help=yes
878 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400879 --version|-V) exec cat $source_path/VERSION
880 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000881 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000882 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000883 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000884 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100885 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000886 ;;
aliguoriac0df512008-12-29 17:14:15 +0000887 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000888 ;;
aliguoriac0df512008-12-29 17:14:15 +0000889 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000890 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000891 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000892 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400893 --cxx=*)
894 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200895 --iasl=*) iasl="$optarg"
896 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100897 --objcc=*) objcc="$optarg"
898 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000899 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000900 ;;
pbrook6a882642006-04-17 13:57:12 +0000901 --install=*) install="$optarg"
902 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000903 --python=*) python="$optarg"
904 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000905 --gcov=*) gcov_tool="$optarg"
906 ;;
Brade2d88302011-09-02 16:53:28 -0400907 --smbd=*) smbd="$optarg"
908 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200909 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000910 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100911 --extra-cxxflags=*)
912 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200913 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000914 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100915 --enable-debug-info)
916 ;;
917 --disable-debug-info)
918 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800919 --enable-modules)
920 modules="yes"
921 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000922 --disable-modules)
923 modules="no"
924 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200925 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000926 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000927 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000928 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200929 --enable-trace-backends=*) trace_backends="$optarg"
930 ;;
931 # XXX: backwards compatibility
932 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100933 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100934 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100935 ;;
bellard7d132992003-03-06 23:23:54 +0000936 --enable-gprof) gprof="yes"
937 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000938 --enable-gcov) gcov="yes"
939 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100940 --static)
941 static="yes"
942 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300943 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000944 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200945 --mandir=*) mandir="$optarg"
946 ;;
947 --bindir=*) bindir="$optarg"
948 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300949 --libdir=*) libdir="$optarg"
950 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400951 --libexecdir=*) libexecdir="$optarg"
952 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200953 --includedir=*) includedir="$optarg"
954 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300955 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200956 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300957 --with-confsuffix=*) confsuffix="$optarg"
958 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300959 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200960 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100961 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600962 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300963 --localstatedir=*) local_statedir="$optarg"
964 ;;
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200965 --firmwarepath=*) firmwarepath="$optarg"
966 ;;
Olaf Hering181ce1d2018-04-18 09:50:44 +0200967 --host=*|--build=*|\
968 --disable-dependency-tracking|\
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300969 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400970 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
971 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
972 # These switches are silently ignored, for compatibility with
973 # autoconf-generated configure scripts. This allows QEMU's
974 # configure to be used by RPM and similar macros that set
975 # lots of directory switches by default.
976 ;;
bellard97a847b2003-08-10 21:36:04 +0000977 --disable-sdl) sdl="no"
978 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200979 --enable-sdl) sdl="yes"
980 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000981 --with-sdlabi=*) sdlabi="$optarg"
982 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200983 --disable-qom-cast-debug) qom_cast_debug="no"
984 ;;
985 --enable-qom-cast-debug) qom_cast_debug="yes"
986 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530987 --disable-virtfs) virtfs="no"
988 ;;
989 --enable-virtfs) virtfs="yes"
990 ;;
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200991 --disable-mpath) mpath="no"
992 ;;
993 --enable-mpath) mpath="yes"
994 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100995 --disable-vnc) vnc="no"
996 ;;
997 --enable-vnc) vnc="yes"
998 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000999 --oss-lib=*) oss_lib="$optarg"
1000 ;;
malc0c58ac12008-06-25 21:04:05 +00001001 --audio-drv-list=*) audio_drv_list="$optarg"
1002 ;;
Stefan Weil89138852016-05-16 15:10:20 +02001003 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +08001004 ;;
Stefan Weil89138852016-05-16 15:10:20 +02001005 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +01001006 ;;
aurel32f8393942009-04-13 18:45:38 +00001007 --enable-debug-tcg) debug_tcg="yes"
1008 ;;
1009 --disable-debug-tcg) debug_tcg="no"
1010 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +01001011 --enable-debug)
1012 # Enable debugging options that aren't excessively noisy
1013 debug_tcg="yes"
1014 debug="yes"
1015 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -05001016 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +01001017 ;;
Marc-André Lureau247724c2018-01-16 16:11:51 +01001018 --enable-sanitizers) sanitizers="yes"
1019 ;;
1020 --disable-sanitizers) sanitizers="no"
1021 ;;
aliguori03b4fe72008-10-07 19:16:17 +00001022 --enable-sparse) sparse="yes"
1023 ;;
1024 --disable-sparse) sparse="no"
1025 ;;
aliguori1625af82009-04-05 17:41:02 +00001026 --disable-strip) strip_opt="no"
1027 ;;
aliguori2f9606b2009-03-06 20:27:28 +00001028 --disable-vnc-sasl) vnc_sasl="no"
1029 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +02001030 --enable-vnc-sasl) vnc_sasl="yes"
1031 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +02001032 --disable-vnc-jpeg) vnc_jpeg="no"
1033 ;;
1034 --enable-vnc-jpeg) vnc_jpeg="yes"
1035 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +02001036 --disable-vnc-png) vnc_png="no"
1037 ;;
1038 --enable-vnc-png) vnc_png="yes"
1039 ;;
bellard443f1372004-06-04 11:13:20 +00001040 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +00001041 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +00001042 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +00001043 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +02001044 --enable-vde) vde="yes"
1045 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +01001046 --disable-netmap) netmap="no"
1047 ;;
1048 --enable-netmap) netmap="yes"
1049 ;;
aliguorie37630c2009-04-22 15:19:10 +00001050 --disable-xen) xen="no"
1051 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +02001052 --enable-xen) xen="yes"
1053 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +00001054 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
1055 ;;
1056 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
1057 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +00001058 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
1059 ;;
1060 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
1061 ;;
aurel322e4d9fb2008-04-08 06:01:02 +00001062 --disable-brlapi) brlapi="no"
1063 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +02001064 --enable-brlapi) brlapi="yes"
1065 ;;
balrogfb599c92008-09-28 23:49:55 +00001066 --disable-bluez) bluez="no"
1067 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +02001068 --enable-bluez) bluez="yes"
1069 ;;
aliguori7ba1e612008-11-05 16:04:33 +00001070 --disable-kvm) kvm="no"
1071 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +02001072 --enable-kvm) kvm="yes"
1073 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001074 --disable-hax) hax="no"
zhanghailiang180fb752016-10-27 14:43:08 +08001075 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001076 --enable-hax) hax="yes"
zhanghailiang180fb752016-10-27 14:43:08 +08001077 ;;
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05001078 --disable-hvf) hvf="no"
1079 ;;
1080 --enable-hvf) hvf="yes"
1081 ;;
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08001082 --disable-whpx) whpx="no"
1083 ;;
1084 --enable-whpx) whpx="yes"
1085 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +02001086 --disable-tcg-interpreter) tcg_interpreter="no"
1087 ;;
1088 --enable-tcg-interpreter) tcg_interpreter="yes"
1089 ;;
Corey Bryant47e98652012-01-26 09:42:26 -05001090 --disable-cap-ng) cap_ng="no"
1091 ;;
1092 --enable-cap-ng) cap_ng="yes"
1093 ;;
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02001094 --disable-tcg) tcg="no"
1095 ;;
1096 --enable-tcg) tcg="yes"
1097 ;;
Yang Zhong5a22ab72017-12-20 21:16:46 +08001098 --disable-malloc-trim) malloc_trim="no"
1099 ;;
1100 --enable-malloc-trim) malloc_trim="yes"
1101 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01001102 --disable-spice) spice="no"
1103 ;;
1104 --enable-spice) spice="yes"
1105 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11001106 --disable-libiscsi) libiscsi="no"
1107 ;;
1108 --enable-libiscsi) libiscsi="yes"
1109 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +01001110 --disable-libnfs) libnfs="no"
1111 ;;
1112 --enable-libnfs) libnfs="yes"
1113 ;;
bellard05c2a3e2006-02-08 22:39:17 +00001114 --enable-profiler) profiler="yes"
1115 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +04001116 --disable-cocoa) cocoa="no"
1117 ;;
malcc2de5c92008-06-28 19:13:06 +00001118 --enable-cocoa)
1119 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +02001120 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +00001121 ;;
pbrookcad25d62006-03-19 16:31:11 +00001122 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001123 ;;
pbrookcad25d62006-03-19 16:31:11 +00001124 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +00001125 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -10001126 --disable-user)
1127 linux_user="no" ;
1128 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -10001129 ;;
1130 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +00001131 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001132 ;;
ths831b7822007-01-18 20:06:33 +00001133 --enable-linux-user) linux_user="yes"
1134 ;;
blueswir184778502008-10-26 20:33:16 +00001135 --disable-bsd-user) bsd_user="no"
1136 ;;
1137 --enable-bsd-user) bsd_user="yes"
1138 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001139 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001140 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001141 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001142 ;;
bellard85aa5182007-11-11 20:17:03 +00001143 --enable-werror) werror="yes"
1144 ;;
1145 --disable-werror) werror="no"
1146 ;;
Steven Noonan63678e12014-03-28 17:19:02 +01001147 --enable-stack-protector) stack_protector="yes"
1148 ;;
1149 --disable-stack-protector) stack_protector="no"
1150 ;;
balrog4d3b6f62008-02-10 16:33:14 +00001151 --disable-curses) curses="no"
1152 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +02001153 --enable-curses) curses="yes"
1154 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001155 --disable-curl) curl="no"
1156 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001157 --enable-curl) curl="yes"
1158 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001159 --disable-fdt) fdt="no"
1160 ;;
1161 --enable-fdt) fdt="yes"
1162 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001163 --disable-linux-aio) linux_aio="no"
1164 ;;
1165 --enable-linux-aio) linux_aio="yes"
1166 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001167 --disable-attr) attr="no"
1168 ;;
1169 --enable-attr) attr="yes"
1170 ;;
Paolo Bonzinia40161c2018-02-16 10:05:23 +01001171 --disable-membarrier) membarrier="no"
1172 ;;
1173 --enable-membarrier) membarrier="yes"
1174 ;;
ths77755342008-11-27 15:45:16 +00001175 --disable-blobs) blobs="no"
1176 ;;
Thomas Huth7e563bf2018-02-15 12:06:47 +01001177 --with-pkgversion=*) pkgversion="$optarg"
pbrook4a19f1e2009-04-07 23:17:49 +00001178 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001179 --with-coroutine=*) coroutine="$optarg"
1180 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001181 --disable-coroutine-pool) coroutine_pool="no"
1182 ;;
1183 --enable-coroutine-pool) coroutine_pool="yes"
1184 ;;
Peter Lieven7d992e42016-09-27 11:58:45 +02001185 --enable-debug-stack-usage) debug_stack_usage="yes"
1186 ;;
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001187 --enable-crypto-afalg) crypto_afalg="yes"
1188 ;;
1189 --disable-crypto-afalg) crypto_afalg="no"
1190 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001191 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001192 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001193 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001194 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001195 --disable-vhost-net) vhost_net="no"
1196 ;;
1197 --enable-vhost-net) vhost_net="yes"
1198 ;;
Gonglei042cea22018-03-01 21:46:28 +08001199 --disable-vhost-crypto) vhost_crypto="no"
1200 ;;
1201 --enable-vhost-crypto)
1202 vhost_crypto="yes"
1203 if test "$mingw32" = "yes"; then
1204 error_exit "vhost-crypto isn't available on win32"
1205 fi
1206 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001207 --disable-vhost-scsi) vhost_scsi="no"
1208 ;;
1209 --enable-vhost-scsi) vhost_scsi="yes"
1210 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001211 --disable-vhost-vsock) vhost_vsock="no"
1212 ;;
1213 --enable-vhost-vsock) vhost_vsock="yes"
1214 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001215 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001216 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001217 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001218 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001219 --disable-rbd) rbd="no"
1220 ;;
1221 --enable-rbd) rbd="yes"
1222 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001223 --disable-xfsctl) xfs="no"
1224 ;;
1225 --enable-xfsctl) xfs="yes"
1226 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001227 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001228 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001229 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001230 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001231 --disable-libusb) libusb="no"
1232 ;;
1233 --enable-libusb) libusb="yes"
1234 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001235 --disable-usb-redir) usb_redir="no"
1236 ;;
1237 --enable-usb-redir) usb_redir="yes"
1238 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001239 --disable-zlib-test) zlib="no"
1240 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001241 --disable-lzo) lzo="no"
1242 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001243 --enable-lzo) lzo="yes"
1244 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001245 --disable-snappy) snappy="no"
1246 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001247 --enable-snappy) snappy="yes"
1248 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001249 --disable-bzip2) bzip2="no"
1250 ;;
1251 --enable-bzip2) bzip2="yes"
1252 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001253 --enable-guest-agent) guest_agent="yes"
1254 ;;
1255 --disable-guest-agent) guest_agent="no"
1256 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001257 --enable-guest-agent-msi) guest_agent_msi="yes"
1258 ;;
1259 --disable-guest-agent-msi) guest_agent_msi="no"
1260 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001261 --with-vss-sdk) vss_win32_sdk=""
1262 ;;
1263 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1264 ;;
1265 --without-vss-sdk) vss_win32_sdk="no"
1266 ;;
1267 --with-win-sdk) win_sdk=""
1268 ;;
1269 --with-win-sdk=*) win_sdk="$optarg"
1270 ;;
1271 --without-win-sdk) win_sdk="no"
1272 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001273 --enable-tools) want_tools="yes"
1274 ;;
1275 --disable-tools) want_tools="no"
1276 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001277 --enable-seccomp) seccomp="yes"
1278 ;;
1279 --disable-seccomp) seccomp="no"
1280 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301281 --disable-glusterfs) glusterfs="no"
1282 ;;
1283 --enable-glusterfs) glusterfs="yes"
1284 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001285 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1286 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001287 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001288 --enable-vhdx|--disable-vhdx)
1289 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1290 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001291 --enable-uuid|--disable-uuid)
1292 echo "$0: $opt is obsolete, UUID support is always built" >&2
1293 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001294 --disable-gtk) gtk="no"
1295 ;;
1296 --enable-gtk) gtk="yes"
1297 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001298 --tls-priority=*) tls_priority="$optarg"
1299 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001300 --disable-gnutls) gnutls="no"
1301 ;;
1302 --enable-gnutls) gnutls="yes"
1303 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001304 --disable-nettle) nettle="no"
1305 ;;
1306 --enable-nettle) nettle="yes"
1307 ;;
1308 --disable-gcrypt) gcrypt="no"
1309 ;;
1310 --enable-gcrypt) gcrypt="yes"
1311 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001312 --enable-rdma) rdma="yes"
1313 ;;
1314 --disable-rdma) rdma="no"
1315 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001316 --with-gtkabi=*) gtkabi="$optarg"
1317 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001318 --disable-vte) vte="no"
1319 ;;
1320 --enable-vte) vte="yes"
1321 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001322 --disable-virglrenderer) virglrenderer="no"
1323 ;;
1324 --enable-virglrenderer) virglrenderer="yes"
1325 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001326 --disable-tpm) tpm="no"
1327 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001328 --enable-tpm) tpm="yes"
1329 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001330 --disable-libssh2) libssh2="no"
1331 ;;
1332 --enable-libssh2) libssh2="yes"
1333 ;;
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001334 --disable-live-block-migration) live_block_migration="no"
1335 ;;
1336 --enable-live-block-migration) live_block_migration="yes"
1337 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001338 --disable-numa) numa="no"
1339 ;;
1340 --enable-numa) numa="yes"
1341 ;;
Klim Kireeved279a02018-01-12 12:01:19 +03001342 --disable-libxml2) libxml2="no"
1343 ;;
1344 --enable-libxml2) libxml2="yes"
1345 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001346 --disable-tcmalloc) tcmalloc="no"
1347 ;;
1348 --enable-tcmalloc) tcmalloc="yes"
1349 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001350 --disable-jemalloc) jemalloc="no"
1351 ;;
1352 --enable-jemalloc) jemalloc="yes"
1353 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001354 --disable-replication) replication="no"
1355 ;;
1356 --enable-replication) replication="yes"
1357 ;;
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001358 --disable-vxhs) vxhs="no"
1359 ;;
1360 --enable-vxhs) vxhs="yes"
1361 ;;
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001362 --disable-vhost-user) vhost_user="no"
1363 ;;
1364 --enable-vhost-user)
1365 vhost_user="yes"
1366 if test "$mingw32" = "yes"; then
1367 error_exit "vhost-user isn't available on win32"
1368 fi
1369 ;;
Richard Henderson8ca80762017-09-14 09:41:12 -07001370 --disable-capstone) capstone="no"
1371 ;;
1372 --enable-capstone) capstone="yes"
1373 ;;
Richard Hendersone219c492017-09-28 09:01:23 -07001374 --enable-capstone=git) capstone="git"
1375 ;;
1376 --enable-capstone=system) capstone="system"
1377 ;;
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01001378 --with-git=*) git="$optarg"
1379 ;;
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01001380 --enable-git-update) git_update=yes
1381 ;;
1382 --disable-git-update) git_update=no
1383 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001384 *)
1385 echo "ERROR: unknown option $opt"
1386 echo "Try '$0 --help' for more information"
1387 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001388 ;;
bellard7d132992003-03-06 23:23:54 +00001389 esac
1390done
1391
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001392if test "$vhost_user" = ""; then
1393 if test "$mingw32" = "yes"; then
1394 vhost_user="no"
1395 else
1396 vhost_user="yes"
1397 fi
1398fi
1399
bellard40293e52008-01-31 11:32:10 +00001400case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001401 ppc)
1402 CPU_CFLAGS="-m32"
1403 LDFLAGS="-m32 $LDFLAGS"
1404 ;;
1405 ppc64)
1406 CPU_CFLAGS="-m64"
1407 LDFLAGS="-m64 $LDFLAGS"
1408 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001409 sparc)
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001410 CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
1411 LDFLAGS="-m32 -mv8plus $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001412 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001413 sparc64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001414 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001415 LDFLAGS="-m64 $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001416 ;;
ths76d83bd2007-11-18 21:22:10 +00001417 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001418 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001419 LDFLAGS="-m31 $LDFLAGS"
1420 ;;
1421 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001422 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001423 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001424 ;;
bellard40293e52008-01-31 11:32:10 +00001425 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001426 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001427 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001428 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001429 ;;
1430 x86_64)
Richard Henderson7ebee432016-06-29 21:10:59 -07001431 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1432 # If we truly care, we should simply detect this case at
1433 # runtime and generate the fallback to serial emulation.
1434 CPU_CFLAGS="-m64 -mcx16"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001435 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001436 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001437 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001438 x32)
1439 CPU_CFLAGS="-mx32"
1440 LDFLAGS="-mx32 $LDFLAGS"
1441 cc_i386='$(CC) -m32'
1442 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001443 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001444esac
1445
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001446QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001447
Peter Maydellaffc88c2016-06-13 11:32:24 +01001448# For user-mode emulation the host arch has to be one we explicitly
1449# support, even if we're using TCI.
1450if [ "$ARCH" = "unknown" ]; then
1451 bsd_user="no"
1452 linux_user="no"
1453fi
1454
Peter Maydell60e0df22011-05-03 14:50:13 +01001455default_target_list=""
1456
Peter Maydell6e92f822013-05-20 16:16:15 +01001457mak_wilds=""
1458
1459if [ "$softmmu" = "yes" ]; then
1460 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001461fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001462if [ "$linux_user" = "yes" ]; then
1463 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001464fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001465if [ "$bsd_user" = "yes" ]; then
1466 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001467fi
1468
Peter Maydell6e92f822013-05-20 16:16:15 +01001469for config in $mak_wilds; do
1470 default_target_list="${default_target_list} $(basename "$config" .mak)"
1471done
1472
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001473# Enumerate public trace backends for --help output
Greg Kurz64a60472017-04-26 15:36:07 +02001474trace_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 +01001475
pbrookaf5db582006-04-08 14:26:41 +00001476if test x"$show_help" = x"yes" ; then
1477cat << EOF
1478
1479Usage: configure [options]
1480Options: [defaults in brackets after descriptions]
1481
Stefan Weil08fb77e2013-12-18 22:09:39 +01001482Standard options:
1483 --help print this message
1484 --prefix=PREFIX install in PREFIX [$prefix]
1485 --interp-prefix=PREFIX where to find shared libraries, etc.
1486 use %M for cpu name [$interp_prefix]
1487 --target-list=LIST set target list (default: build everything)
1488$(echo Available targets: $default_target_list | \
1489 fold -s -w 53 | sed -e 's/^/ /')
1490
1491Advanced options (experts only):
1492 --source-path=PATH path of source code [$source_path]
1493 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1494 --cc=CC use C compiler CC [$cc]
1495 --iasl=IASL use ACPI compiler IASL [$iasl]
1496 --host-cc=CC use C compiler CC [$host_cc] for code run at
1497 build time
1498 --cxx=CXX use C++ compiler CXX [$cxx]
1499 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1500 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01001501 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
Stefan Weil08fb77e2013-12-18 22:09:39 +01001502 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1503 --make=MAKE use specified make [$make]
1504 --install=INSTALL use specified install [$install]
1505 --python=PYTHON use specified python [$python]
1506 --smbd=SMBD use specified smbd [$smbd]
Thomas Huthdb1b5f12018-03-27 17:09:30 +02001507 --with-git=GIT use specified git [$git]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001508 --static enable static build [$static]
1509 --mandir=PATH install man pages in PATH
1510 --datadir=PATH install firmware in PATH$confsuffix
1511 --docdir=PATH install documentation in PATH$confsuffix
1512 --bindir=PATH install binaries in PATH
1513 --libdir=PATH install libraries in PATH
Thomas Huthdb1b5f12018-03-27 17:09:30 +02001514 --libexecdir=PATH install helper binaries in PATH
Stefan Weil08fb77e2013-12-18 22:09:39 +01001515 --sysconfdir=PATH install config in PATH$confsuffix
1516 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02001517 --firmwarepath=PATH search PATH for firmware files
Fam Zhenge26110c2014-02-10 14:48:57 +08001518 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Thomas Huthdb1b5f12018-03-27 17:09:30 +02001519 --with-pkgversion=VERS use specified string as sub-version of the package
Stefan Weil08fb77e2013-12-18 22:09:39 +01001520 --enable-debug enable common debug build options
Marc-André Lureau247724c2018-01-16 16:11:51 +01001521 --enable-sanitizers enable default sanitizers
Stefan Weil08fb77e2013-12-18 22:09:39 +01001522 --disable-strip disable stripping binaries
1523 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001524 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001525 --audio-drv-list=LIST set audio drivers list:
1526 Available drivers: $audio_possible_drivers
1527 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1528 --block-drv-rw-whitelist=L
1529 set block driver read-write whitelist
1530 (affects only QEMU, not qemu-img)
1531 --block-drv-ro-whitelist=L
1532 set block driver read-only whitelist
1533 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001534 --enable-trace-backends=B Set trace backend
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001535 Available backends: $trace_backend_list
Stefan Weil08fb77e2013-12-18 22:09:39 +01001536 --with-trace-file=NAME Full PATH,NAME of file to store traces
1537 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001538 --disable-slirp disable SLIRP userspace network connectivity
1539 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
Yang Zhong5a22ab72017-12-20 21:16:46 +08001540 --enable-malloc-trim enable libc malloc_trim() for memory optimization
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001541 --oss-lib path to OSS library
1542 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001543 --with-coroutine=BACKEND coroutine backend. Supported options:
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01001544 ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001545 --enable-gcov enable test coverage analysis with gcov
1546 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001547 --disable-blobs disable installing provided firmware blobs
1548 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1549 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001550 --tls-priority default TLS protocol/cipher priority string
Lin Mac12d66a2017-03-10 18:14:05 +08001551 --enable-gprof QEMU profiling with gprof
1552 --enable-profiler profiler support
1553 --enable-xen-pv-domain-build
1554 xen pv domain builder
1555 --enable-debug-stack-usage
1556 track the maximum stack usage of stacks created by qemu_alloc_stack
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001557
1558Optional features, enabled with --enable-FEATURE and
1559disabled with --disable-FEATURE, default is enabled if available:
1560
1561 system all system emulation targets
1562 user supported user emulation targets
1563 linux-user all linux usermode emulation targets
1564 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001565 docs build documentation
1566 guest-agent build the QEMU Guest Agent
1567 guest-agent-msi build guest agent Windows MSI installation package
1568 pie Position Independent Executables
1569 modules modules support
1570 debug-tcg TCG debugging (default is disabled)
1571 debug-info debugging information
1572 sparse sparse checker
1573
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001574 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001575 nettle nettle cryptography support
1576 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001577 sdl SDL UI
1578 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1579 gtk gtk UI
1580 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1581 vte vte support for the gtk UI
1582 curses curses UI
1583 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001584 vnc-sasl SASL encryption for VNC server
1585 vnc-jpeg JPEG lossy compression for VNC server
1586 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001587 cocoa Cocoa UI (Mac OS X only)
1588 virtfs VirtFS
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02001589 mpath Multipath persistent reservation passthrough
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001590 xen xen backend driver support
Anthony PERARD70c292a2018-05-04 10:17:56 +01001591 xen-pci-passthrough PCI passthrough support for Xen
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001592 brlapi BrlAPI (Braile)
1593 curl curl connectivity
Paolo Bonzinia40161c2018-02-16 10:05:23 +01001594 membarrier membarrier system call (for Linux 4.14+ or Windows)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001595 fdt fdt device tree
1596 bluez bluez stack connectivity
1597 kvm KVM acceleration support
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001598 hax HAX acceleration support
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05001599 hvf Hypervisor.framework acceleration support
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08001600 whpx Windows Hypervisor Platform acceleration support
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02001601 rdma Enable RDMA-based migration and PVRDMA support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001602 vde support for vde network
1603 netmap support for netmap network
1604 linux-aio Linux AIO support
1605 cap-ng libcap-ng support
1606 attr attr and xattr support
1607 vhost-net vhost-net acceleration support
Gonglei042cea22018-03-01 21:46:28 +08001608 vhost-crypto vhost-crypto acceleration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001609 spice spice
1610 rbd rados block device (rbd)
1611 libiscsi iscsi support
1612 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001613 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001614 libusb libusb (for usb passthrough)
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001615 live-block-migration Block migration in the main migration stream
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001616 usb-redir usb network redirection support
1617 lzo support of lzo compression library
1618 snappy support of snappy compression library
1619 bzip2 support of bzip2 compression library
1620 (for reading bzip2-compressed dmg images)
1621 seccomp seccomp support
1622 coroutine-pool coroutine freelist (better performance)
1623 glusterfs GlusterFS backend
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001624 tpm TPM support
1625 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001626 numa libnuma support
Klim Kireeved279a02018-01-12 12:01:19 +03001627 libxml2 for Parallels image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001628 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001629 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001630 replication replication support
Lin Mac12d66a2017-03-10 18:14:05 +08001631 vhost-vsock virtio sockets device support
1632 opengl opengl support
1633 virglrenderer virgl rendering support
1634 xfsctl xfsctl support
1635 qom-cast-debug cast debugging support
1636 tools build qemu-io, qemu-nbd and qemu-image tools
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001637 vxhs Veritas HyperScale vDisk backend support
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001638 crypto-afalg Linux AF_ALG crypto backend driver
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001639 vhost-user vhost-user support
Richard Henderson8ca80762017-09-14 09:41:12 -07001640 capstone capstone disassembler support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001641
1642NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001643EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001644exit 0
pbrookaf5db582006-04-08 14:26:41 +00001645fi
1646
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001647if ! has $python; then
1648 error_exit "Python not found. Use --python=/path/to/python"
1649fi
1650
1651# Note that if the Python conditional here evaluates True we will exit
1652# with status 1 which is a shell 'false' value.
Daniel P. Berrangec21965a2018-01-16 13:42:13 +00001653if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6))'; then
1654 error_exit "Cannot use '$python', Python 2 >= 2.6 or Python 3 is required." \
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001655 "Use --python=/path/to/python to specify a supported Python."
1656fi
1657
1658# Suppress writing compiled files
1659python="$python -B"
1660
Daniel Henrique Barboza9aae6e52017-11-02 07:09:06 -02001661# Check that the C compiler works. Doing this here before testing
1662# the host CPU ensures that we had a valid CC to autodetect the
1663# $cpu var (and we should bail right here if that's not the case).
1664# It also allows the help message to be printed without a CC.
1665write_c_skeleton;
1666if compile_object ; then
1667 : C compiler works ok
1668else
1669 error_exit "\"$cc\" either does not exist or does not work"
1670fi
1671if ! compile_prog ; then
1672 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1673fi
1674
Peter Maydell359bc952011-12-24 13:07:25 +00001675# Now we have handled --enable-tcg-interpreter and know we're not just
1676# printing the help message, bail out if the host CPU isn't supported.
1677if test "$ARCH" = "unknown"; then
1678 if test "$tcg_interpreter" = "yes" ; then
1679 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001680 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001681 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001682 fi
1683fi
1684
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001685# Consult white-list to determine whether to enable werror
1686# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001687if test -z "$werror" ; then
1688 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001689 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001690 werror="yes"
1691 else
1692 werror="no"
1693 fi
1694fi
1695
Peter Maydellfb59dab2017-03-28 14:01:52 +01001696if test "$bogus_os" = "yes"; then
1697 # Now that we know that we're not printing the help and that
1698 # the compiler works (so the results of the check_defines we used
1699 # to identify the OS are reliable), if we didn't recognize the
1700 # host OS we should stop now.
Peter Maydell951fedf2017-07-13 16:15:32 +01001701 error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
Peter Maydellfb59dab2017-03-28 14:01:52 +01001702fi
1703
Paolo Bonzini8d050952010-12-23 11:43:52 +01001704gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1705gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001706gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001707gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Paolo Bonzinib98fcfd2017-07-11 10:08:55 +02001708gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001709gcc_flags="-Wno-string-plus-int $gcc_flags"
Gerd Hoffmann0e39c4a2018-03-09 14:59:45 +01001710gcc_flags="-Wno-error=address-of-packed-member $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001711# Note that we do not add -Werror to gcc_flags here, because that would
1712# enable it for all configure tests. If a configure test failed due
1713# to -Werror this would just silently disable some features,
1714# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001715
1716cc_has_warning_flag() {
1717 write_c_skeleton;
1718
Peter Maydella1d29d62012-10-27 22:19:07 +01001719 # Use the positive sense of the flag when testing for -Wno-wombat
1720 # support (gcc will happily accept the -Wno- form of unknown
1721 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001722 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1723 compile_prog "-Werror $optflag" ""
1724}
1725
1726for flag in $gcc_flags; do
1727 if cc_has_warning_flag $flag ; then
1728 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001729 fi
1730done
1731
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001732if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001733 cat > $TMPC << EOF
1734int main(int argc, char *argv[])
1735{
1736 char arr[64], *p = arr, *c = argv[0];
1737 while (*c) {
1738 *p++ = *c++;
1739 }
1740 return 0;
1741}
1742EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001743 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001744 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001745 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001746 # We need to check both a compile and a link, since some compiler
1747 # setups fail only on a .c->.o compile and some only at link time
1748 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1749 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001750 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001751 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001752 break
1753 fi
1754 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001755 if test "$stack_protector" = yes; then
1756 if test $sp_on = 0; then
1757 error_exit "Stack protector not supported"
1758 fi
1759 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001760fi
1761
Paolo Bonzini20bc94a2017-10-20 12:11:32 +02001762# Disable -Wmissing-braces on older compilers that warn even for
1763# the "universal" C zero initializer {0}.
1764cat > $TMPC << EOF
1765struct {
1766 int a[2];
1767} x = {0};
1768EOF
1769if compile_object "-Werror" "" ; then
1770 :
1771else
1772 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
1773fi
1774
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001775# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1776# large functions that use global variables. The bug is in all releases of
1777# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1778# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1779cat > $TMPC << EOF
1780#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1781int main(void) { return 0; }
1782#else
1783#error No bug in this compiler.
1784#endif
1785EOF
1786if compile_prog "-Werror -fno-gcse" "" ; then
1787 TRANSLATE_OPT_CFLAGS=-fno-gcse
1788fi
1789
Avi Kivity40d64442011-11-15 20:12:17 +02001790if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001791 if test "$modules" = "yes" ; then
1792 error_exit "static and modules are mutually incompatible"
1793 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001794 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001795 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001796 else
1797 pie="no"
1798 fi
1799fi
1800
Emilio G. Cota768b7852015-04-29 13:09:02 +02001801# Unconditional check for compiler __thread support
1802 cat > $TMPC << EOF
1803static __thread int tls_var;
1804int main(void) { return tls_var; }
1805EOF
1806
1807if ! compile_prog "-Werror" "" ; then
1808 error_exit "Your compiler does not support the __thread specifier for " \
1809 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1810fi
1811
Avi Kivity40d64442011-11-15 20:12:17 +02001812if test "$pie" = ""; then
1813 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001814 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001815 ;;
1816 *)
1817 pie="no"
1818 ;;
1819 esac
1820fi
1821
1822if test "$pie" != "no" ; then
1823 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001824
1825#ifdef __linux__
1826# define THREAD __thread
1827#else
1828# define THREAD
1829#endif
1830
1831static THREAD int tls_var;
1832
1833int main(void) { return tls_var; }
1834
Avi Kivity40d64442011-11-15 20:12:17 +02001835EOF
1836 if compile_prog "-fPIE -DPIE" "-pie"; then
1837 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1838 LDFLAGS="-pie $LDFLAGS"
1839 pie="yes"
1840 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1841 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1842 fi
1843 else
1844 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001845 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001846 else
1847 echo "Disabling PIE due to missing toolchain support"
1848 pie="no"
1849 fi
1850 fi
Brad46eef332013-12-10 19:49:08 -05001851
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001852 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001853 CFLAGS_NOPIE="-fno-pie"
1854 LDFLAGS_NOPIE="-nopie"
1855 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001856fi
1857
Paolo Bonzini09dada42013-04-17 16:26:47 +02001858##########################################
1859# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1860# use i686 as default anyway, but for those that don't, an explicit
1861# specification is necessary
1862
1863if test "$cpu" = "i386"; then
1864 cat > $TMPC << EOF
1865static int sfaa(int *ptr)
1866{
1867 return __sync_fetch_and_and(ptr, 0);
1868}
1869
1870int main(void)
1871{
1872 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001873 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001874 sfaa(&val);
1875 return val;
1876}
1877EOF
1878 if ! compile_prog "" "" ; then
1879 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1880 fi
1881fi
1882
1883#########################################
bellardec530c82006-04-25 22:36:06 +00001884# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001885
bellardec530c82006-04-25 22:36:06 +00001886if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001887 if has $install; then
1888 :
1889 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001890 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1891 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1892 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001893 fi
Stefan Weil89138852016-05-16 15:10:20 +02001894 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001895 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1896 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1897 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001898 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001899 if has ar; then
1900 :
1901 else
bellardec530c82006-04-25 22:36:06 +00001902 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001903 error_exit "No path includes ar" \
1904 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001905 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001906 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001907 fi
ths5fafdf22007-09-16 21:08:06 +00001908fi
bellardec530c82006-04-25 22:36:06 +00001909
Stefan Weilafb63eb2012-09-26 22:04:38 +02001910if test -z "${target_list+xxx}" ; then
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001911 for target in $default_target_list; do
1912 supported_target $target 2>/dev/null && \
1913 target_list="$target_list $target"
1914 done
1915 target_list="${target_list# }"
Anthony Liguori121afa92012-09-14 08:17:03 -05001916else
Stefan Weil89138852016-05-16 15:10:20 +02001917 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001918 for target in $target_list; do
1919 # Check that we recognised the target name; this allows a more
1920 # friendly error message than if we let it fall through.
1921 case " $default_target_list " in
1922 *" $target "*)
1923 ;;
1924 *)
1925 error_exit "Unknown target name '$target'"
1926 ;;
1927 esac
1928 supported_target $target || exit 1
1929 done
bellard5327cf42005-01-10 23:18:50 +00001930fi
Peter Maydell25b48332013-05-20 16:16:16 +01001931
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001932# see if system emulation was really requested
1933case " $target_list " in
1934 *"-softmmu "*) softmmu=yes
1935 ;;
1936 *) softmmu=no
1937 ;;
1938esac
bellard5327cf42005-01-10 23:18:50 +00001939
Juan Quintela249247c2009-08-12 18:20:25 +02001940feature_not_found() {
1941 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001942 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001943
Peter Maydell76ad07a2013-04-08 12:11:26 +01001944 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001945 "configure was not able to find it." \
1946 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001947}
1948
bellard7d132992003-03-06 23:23:54 +00001949# ---
1950# big/little endian test
1951cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001952short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1953short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1954extern int foo(short *, short *);
1955int main(int argc, char *argv[]) {
1956 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001957}
1958EOF
1959
Mike Frysinger61cc9192013-06-30 23:30:18 -04001960if compile_object ; then
Alice Frosi12f15c92018-01-30 14:38:28 +01001961 if strings -a $TMPO | grep -q BiGeNdIaN ; then
Mike Frysinger61cc9192013-06-30 23:30:18 -04001962 bigendian="yes"
Alice Frosi12f15c92018-01-30 14:38:28 +01001963 elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then
Mike Frysinger61cc9192013-06-30 23:30:18 -04001964 bigendian="no"
1965 else
1966 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001967 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001968else
1969 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001970fi
1971
Juan Quintelab0a47e72009-08-12 18:29:49 +02001972##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001973# cocoa implies not SDL or GTK
1974# (the cocoa UI code currently assumes it is always the active UI
1975# and doesn't interact well with other UI frontend code)
1976if test "$cocoa" = "yes"; then
1977 if test "$sdl" = "yes"; then
1978 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1979 fi
1980 if test "$gtk" = "yes"; then
1981 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1982 fi
1983 gtk=no
1984 sdl=no
1985fi
1986
Eric Blake6b39b062016-10-11 10:46:23 -05001987# Some versions of Mac OS X incorrectly define SIZE_MAX
1988cat > $TMPC << EOF
1989#include <stdint.h>
1990#include <stdio.h>
1991int main(int argc, char *argv[]) {
1992 return printf("%zu", SIZE_MAX);
1993}
1994EOF
1995have_broken_size_max=no
1996if ! compile_object -Werror ; then
1997 have_broken_size_max=yes
1998fi
1999
Peter Maydella30878e2015-08-14 16:10:52 +01002000##########################################
Gonglei015a33b2014-07-01 20:58:08 +08002001# L2TPV3 probe
2002
2003cat > $TMPC <<EOF
2004#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04002005#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08002006int main(void) { return sizeof(struct mmsghdr); }
2007EOF
2008if compile_prog "" "" ; then
2009 l2tpv3=yes
2010else
2011 l2tpv3=no
2012fi
2013
2014##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01002015# MinGW / Mingw-w64 localtime_r/gmtime_r check
2016
2017if test "$mingw32" = "yes"; then
2018 # Some versions of MinGW / Mingw-w64 lack localtime_r
2019 # and gmtime_r entirely.
2020 #
2021 # Some versions of Mingw-w64 define a macro for
2022 # localtime_r/gmtime_r.
2023 #
2024 # Some versions of Mingw-w64 will define functions
2025 # for localtime_r/gmtime_r, but only if you have
2026 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
2027 # though, unistd.h and pthread.h both define
2028 # that for you.
2029 #
2030 # So this #undef localtime_r and #include <unistd.h>
2031 # are not in fact redundant.
2032cat > $TMPC << EOF
2033#include <unistd.h>
2034#include <time.h>
2035#undef localtime_r
2036int main(void) { localtime_r(NULL, NULL); return 0; }
2037EOF
2038 if compile_prog "" "" ; then
2039 localtime_r="yes"
2040 else
2041 localtime_r="no"
2042 fi
2043fi
2044
2045##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01002046# pkg-config probe
2047
2048if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002049 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01002050fi
2051
2052##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02002053# NPTL probe
2054
Peter Maydell24cb36a2013-07-16 18:45:00 +01002055if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02002056 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00002057#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00002058#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01002059int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00002060#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2061#error bork
2062#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01002063 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00002064}
2065EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01002066 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002067 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02002068 fi
pbrookbd0c5662008-05-29 14:34:11 +00002069fi
2070
Liang Li99f2dbd2016-03-08 13:53:16 +08002071#########################################
balrogac629222008-10-11 09:56:04 +00002072# zlib check
2073
Alon Levy1ece9902011-07-26 12:30:40 +03002074if test "$zlib" != "no" ; then
2075 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00002076#include <zlib.h>
2077int main(void) { zlibVersion(); return 0; }
2078EOF
Alon Levy1ece9902011-07-26 12:30:40 +03002079 if compile_prog "" "-lz" ; then
2080 :
2081 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002082 error_exit "zlib check failed" \
2083 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03002084 fi
balrogac629222008-10-11 09:56:04 +00002085fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00002086LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00002087
2088##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08002089# lzo check
2090
2091if test "$lzo" != "no" ; then
2092 cat > $TMPC << EOF
2093#include <lzo/lzo1x.h>
2094int main(void) { lzo_version(); return 0; }
2095EOF
2096 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002097 libs_softmmu="$libs_softmmu -llzo2"
2098 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002099 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002100 if test "$lzo" = "yes"; then
2101 feature_not_found "liblzo2" "Install liblzo2 devel"
2102 fi
2103 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002104 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002105fi
2106
2107##########################################
2108# snappy check
2109
2110if test "$snappy" != "no" ; then
2111 cat > $TMPC << EOF
2112#include <snappy-c.h>
2113int main(void) { snappy_max_compressed_length(4096); return 0; }
2114EOF
2115 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002116 libs_softmmu="$libs_softmmu -lsnappy"
2117 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002118 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002119 if test "$snappy" = "yes"; then
2120 feature_not_found "libsnappy" "Install libsnappy devel"
2121 fi
2122 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002123 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002124fi
2125
2126##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01002127# bzip2 check
2128
2129if test "$bzip2" != "no" ; then
2130 cat > $TMPC << EOF
2131#include <bzlib.h>
2132int main(void) { BZ2_bzlibVersion(); return 0; }
2133EOF
2134 if compile_prog "" "-lbz2" ; then
2135 bzip2="yes"
2136 else
2137 if test "$bzip2" = "yes"; then
2138 feature_not_found "libbzip2" "Install libbzip2 devel"
2139 fi
2140 bzip2="no"
2141 fi
2142fi
2143
2144##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03002145# libseccomp check
2146
2147if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04002148 case "$cpu" in
2149 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06002150 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04002151 ;;
James Hogan5ce43972016-04-08 14:16:34 +01002152 mips)
2153 libseccomp_minver="2.2.0"
2154 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002155 arm|aarch64)
2156 libseccomp_minver="2.2.3"
2157 ;;
Thomas Huth3aa35fc2017-09-14 12:36:03 +02002158 ppc|ppc64|s390x)
Michael Strosaker3e684452016-06-01 18:30:18 -05002159 libseccomp_minver="2.3.0"
2160 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002161 *)
2162 libseccomp_minver=""
2163 ;;
2164 esac
2165
2166 if test "$libseccomp_minver" != "" &&
2167 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Fam Zhengc3883e12017-09-07 16:53:16 +08002168 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2169 seccomp_libs="$($pkg_config --libs libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04002170 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03002171 else
Andrew Jones693e5912015-09-30 11:59:18 -04002172 if test "$seccomp" = "yes" ; then
2173 if test "$libseccomp_minver" != "" ; then
2174 feature_not_found "libseccomp" \
2175 "Install libseccomp devel >= $libseccomp_minver"
2176 else
2177 feature_not_found "libseccomp" \
2178 "libseccomp is not supported for host cpu $cpu"
2179 fi
2180 fi
2181 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03002182 fi
2183fi
2184##########################################
aliguorie37630c2009-04-22 15:19:10 +00002185# xen probe
2186
Juan Quintelafc321b42009-08-12 18:29:55 +02002187if test "$xen" != "no" ; then
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002188 # Check whether Xen library path is specified via --extra-ldflags to avoid
2189 # overriding this setting with pkg-config output. If not, try pkg-config
2190 # to obtain all needed flags.
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002191
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002192 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2193 $pkg_config --exists xencontrol ; then
2194 xen_ctrl_version="$(printf '%d%02d%02d' \
2195 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2196 xen=yes
2197 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2198 xen_pc="$xen_pc xenevtchn xendevicemodel"
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002199 if $pkg_config --exists xentoolcore; then
2200 xen_pc="$xen_pc xentoolcore"
2201 fi
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002202 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2203 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2204 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2205 else
Stefan Weil50ced5b2011-12-17 09:27:39 +01002206
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002207 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd9506ca2017-05-11 12:35:42 +01002208 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002209
2210 # First we test whether Xen headers and libraries are available.
2211 # If no, we are done and there is no Xen support.
2212 # If yes, more tests are run to detect the Xen version.
2213
2214 # Xen (any)
2215 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002216#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002217int main(void) {
2218 return 0;
2219}
2220EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002221 if ! compile_prog "" "$xen_libs" ; then
2222 # Xen not found
2223 if test "$xen" = "yes" ; then
2224 feature_not_found "xen" "Install xen devel"
2225 fi
2226 xen=no
Stefan Weil50ced5b2011-12-17 09:27:39 +01002227
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002228 # Xen unstable
2229 elif
2230 cat > $TMPC <<EOF &&
Ross Lagerwall2cbf8902017-10-23 10:27:27 +01002231#undef XC_WANT_COMPAT_DEVICEMODEL_API
2232#define __XEN_TOOLS__
2233#include <xendevicemodel.h>
2234int main(void) {
2235 xendevicemodel_handle *xd;
2236
2237 xd = xendevicemodel_open(0, 0);
2238 xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0);
2239
2240 return 0;
2241}
2242EOF
2243 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
2244 then
2245 xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore"
2246 xen_ctrl_version=41100
2247 xen=yes
2248 elif
2249 cat > $TMPC <<EOF &&
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002250#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2251#include <xenforeignmemory.h>
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002252#include <xentoolcore.h>
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002253int main(void) {
2254 xenforeignmemory_handle *xfmem;
2255
2256 xfmem = xenforeignmemory_open(0, 0);
2257 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002258 xentoolcore_restrict_all(0);
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002259
2260 return 0;
2261}
2262EOF
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002263 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore"
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002264 then
Anthony PERARD58ea9a72017-09-25 16:01:48 +01002265 xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore"
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002266 xen_ctrl_version=41000
2267 xen=yes
2268 elif
2269 cat > $TMPC <<EOF &&
Paul Durrantda8090c2017-03-07 10:55:33 +00002270#undef XC_WANT_COMPAT_DEVICEMODEL_API
2271#define __XEN_TOOLS__
2272#include <xendevicemodel.h>
2273int main(void) {
2274 xendevicemodel_handle *xd;
2275
2276 xd = xendevicemodel_open(0, 0);
2277 xendevicemodel_close(xd);
2278
2279 return 0;
2280}
2281EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002282 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2283 then
2284 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2285 xen_ctrl_version=40900
2286 xen=yes
2287 elif
2288 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002289/*
2290 * If we have stable libs the we don't want the libxc compat
2291 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002292 *
2293 * Also, check if xengnttab_grant_copy_segment_t is defined and
2294 * grant copy operation is implemented.
2295 */
2296#undef XC_WANT_COMPAT_EVTCHN_API
2297#undef XC_WANT_COMPAT_GNTTAB_API
2298#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2299#include <xenctrl.h>
2300#include <xenstore.h>
2301#include <xenevtchn.h>
2302#include <xengnttab.h>
2303#include <xenforeignmemory.h>
2304#include <stdint.h>
2305#include <xen/hvm/hvm_info_table.h>
2306#if !defined(HVM_MAX_VCPUS)
2307# error HVM_MAX_VCPUS not defined
2308#endif
2309int main(void) {
2310 xc_interface *xc = NULL;
2311 xenforeignmemory_handle *xfmem;
2312 xenevtchn_handle *xe;
2313 xengnttab_handle *xg;
2314 xen_domain_handle_t handle;
2315 xengnttab_grant_copy_segment_t* seg = NULL;
2316
2317 xs_daemon_open();
2318
2319 xc = xc_interface_open(0, 0, 0);
2320 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2321 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2322 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2323 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2324 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2325
2326 xfmem = xenforeignmemory_open(0, 0);
2327 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2328
2329 xe = xenevtchn_open(0, 0);
2330 xenevtchn_fd(xe);
2331
2332 xg = xengnttab_open(0, 0);
2333 xengnttab_grant_copy(xg, 0, seg);
2334
2335 return 0;
2336}
2337EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002338 compile_prog "" "$xen_libs $xen_stable_libs"
2339 then
2340 xen_ctrl_version=40800
2341 xen=yes
2342 elif
2343 cat > $TMPC <<EOF &&
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002344/*
2345 * If we have stable libs the we don't want the libxc compat
2346 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002347 */
2348#undef XC_WANT_COMPAT_EVTCHN_API
2349#undef XC_WANT_COMPAT_GNTTAB_API
2350#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2351#include <xenctrl.h>
2352#include <xenstore.h>
2353#include <xenevtchn.h>
2354#include <xengnttab.h>
2355#include <xenforeignmemory.h>
2356#include <stdint.h>
2357#include <xen/hvm/hvm_info_table.h>
2358#if !defined(HVM_MAX_VCPUS)
2359# error HVM_MAX_VCPUS not defined
2360#endif
2361int main(void) {
2362 xc_interface *xc = NULL;
2363 xenforeignmemory_handle *xfmem;
2364 xenevtchn_handle *xe;
2365 xengnttab_handle *xg;
2366 xen_domain_handle_t handle;
2367
2368 xs_daemon_open();
2369
2370 xc = xc_interface_open(0, 0, 0);
2371 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2372 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2373 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2374 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2375 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2376
2377 xfmem = xenforeignmemory_open(0, 0);
2378 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2379
2380 xe = xenevtchn_open(0, 0);
2381 xenevtchn_fd(xe);
2382
2383 xg = xengnttab_open(0, 0);
2384 xengnttab_map_grant_ref(xg, 0, 0, 0);
2385
2386 return 0;
2387}
2388EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002389 compile_prog "" "$xen_libs $xen_stable_libs"
2390 then
2391 xen_ctrl_version=40701
2392 xen=yes
2393 elif
2394 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002395#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002396#include <stdint.h>
2397int main(void) {
2398 xc_interface *xc = NULL;
2399 xen_domain_handle_t handle;
2400 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2401 return 0;
2402}
2403EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002404 compile_prog "" "$xen_libs"
2405 then
2406 xen_ctrl_version=40700
2407 xen=yes
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002408
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002409 # Xen 4.6
2410 elif
2411 cat > $TMPC <<EOF &&
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002412#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002413#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002414#include <stdint.h>
2415#include <xen/hvm/hvm_info_table.h>
2416#if !defined(HVM_MAX_VCPUS)
2417# error HVM_MAX_VCPUS not defined
2418#endif
2419int main(void) {
2420 xc_interface *xc;
2421 xs_daemon_open();
2422 xc = xc_interface_open(0, 0, 0);
2423 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2424 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002425 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002426 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002427 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002428 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002429 return 0;
2430}
2431EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002432 compile_prog "" "$xen_libs"
2433 then
2434 xen_ctrl_version=40600
2435 xen=yes
Jan Beulichd8b441a2015-07-24 03:38:28 -06002436
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002437 # Xen 4.5
2438 elif
2439 cat > $TMPC <<EOF &&
Jan Beulichd8b441a2015-07-24 03:38:28 -06002440#include <xenctrl.h>
2441#include <xenstore.h>
2442#include <stdint.h>
2443#include <xen/hvm/hvm_info_table.h>
2444#if !defined(HVM_MAX_VCPUS)
2445# error HVM_MAX_VCPUS not defined
2446#endif
2447int main(void) {
2448 xc_interface *xc;
2449 xs_daemon_open();
2450 xc = xc_interface_open(0, 0, 0);
2451 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2452 xc_gnttab_open(NULL, 0);
2453 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2454 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002455 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2456 return 0;
2457}
2458EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002459 compile_prog "" "$xen_libs"
2460 then
2461 xen_ctrl_version=40500
2462 xen=yes
Paul Durrant3996e852015-01-20 11:06:19 +00002463
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002464 elif
2465 cat > $TMPC <<EOF &&
Paul Durrant3996e852015-01-20 11:06:19 +00002466#include <xenctrl.h>
2467#include <xenstore.h>
2468#include <stdint.h>
2469#include <xen/hvm/hvm_info_table.h>
2470#if !defined(HVM_MAX_VCPUS)
2471# error HVM_MAX_VCPUS not defined
2472#endif
2473int main(void) {
2474 xc_interface *xc;
2475 xs_daemon_open();
2476 xc = xc_interface_open(0, 0, 0);
2477 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2478 xc_gnttab_open(NULL, 0);
2479 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2480 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002481 return 0;
2482}
2483EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002484 compile_prog "" "$xen_libs"
2485 then
2486 xen_ctrl_version=40200
2487 xen=yes
Stefano Stabellini8688e062012-04-17 17:04:18 +00002488
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002489 else
2490 if test "$xen" = "yes" ; then
2491 feature_not_found "xen (unsupported version)" \
2492 "Install a supported xen (xen 4.2 or newer)"
2493 fi
2494 xen=no
Juan Quintelafc321b42009-08-12 18:29:55 +02002495 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002496
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002497 if test "$xen" = yes; then
2498 if test $xen_ctrl_version -ge 40701 ; then
2499 libs_softmmu="$xen_stable_libs $libs_softmmu"
2500 fi
2501 libs_softmmu="$xen_libs $libs_softmmu"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002502 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002503 fi
aliguorie37630c2009-04-22 15:19:10 +00002504fi
2505
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002506if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002507 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002508 xen_pci_passthrough=yes
2509 else
2510 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002511 error_exit "User requested feature Xen PCI Passthrough" \
2512 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002513 fi
2514 xen_pci_passthrough=no
2515 fi
2516fi
2517
Ian Campbell64a7ad62016-01-15 13:23:44 +00002518if test "$xen_pv_domain_build" = "yes" &&
2519 test "$xen" != "yes"; then
2520 error_exit "User requested Xen PV domain builder support" \
2521 "which requires Xen support."
2522fi
2523
aliguorie37630c2009-04-22 15:19:10 +00002524##########################################
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002525# Windows Hypervisor Platform accelerator (WHPX) check
2526if test "$whpx" != "no" ; then
Lucian Petrut327fccb2018-05-15 20:35:21 +03002527 if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002528 whpx="yes"
2529 else
2530 if test "$whpx" = "yes"; then
Justin Terry (VM) via Qemu-devel53537bb2018-02-26 09:13:29 -08002531 feature_not_found "WinHvPlatform" "WinHvEmulation is not installed"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08002532 fi
2533 whpx="no"
2534 fi
2535fi
2536
2537##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002538# Sparse probe
2539if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002540 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002541 sparse=yes
2542 else
2543 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002544 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002545 fi
2546 sparse=no
2547 fi
2548fi
2549
2550##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002551# X11 probe
Jeremy Whitef676c672015-01-09 13:08:49 -06002552if $pkg_config --exists "x11"; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002553 have_x11=yes
Stefan Weil89138852016-05-16 15:10:20 +02002554 x11_cflags=$($pkg_config --cflags x11)
2555 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002556fi
2557
2558##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002559# GTK probe
2560
2561if test "$gtk" != "no"; then
Peter Xu5a464e62018-04-09 16:23:23 +08002562 if test "$gtkabi" = ""; then
2563 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2564 # Use 2.0 as a fallback if that is available.
2565 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2566 gtkabi=3.0
2567 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2568 gtkabi=2.0
2569 else
2570 gtkabi=3.0
2571 fi
2572 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002573 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002574 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002575 if test "$gtkabi" = "3.0" ; then
2576 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002577 else
2578 gtkversion="2.18.0"
2579 fi
2580 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002581 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2582 gtk_libs=$($pkg_config --libs $gtkpackage)
2583 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002584 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002585 need_x11=yes
Jeremy Whitef676c672015-01-09 13:08:49 -06002586 gtk_cflags="$gtk_cflags $x11_cflags"
2587 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002588 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002589 gtk="yes"
2590 elif test "$gtk" = "yes"; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002591 feature_not_found "gtk" "Install gtk3-devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002592 else
2593 gtk="no"
2594 fi
2595fi
2596
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002597
2598##########################################
2599# GNUTLS probe
2600
Peter Maydell37371292015-07-24 18:28:08 +01002601gnutls_works() {
2602 # Unfortunately some distros have bad pkg-config information for gnutls
2603 # such that it claims to exist but you get a compiler error if you try
2604 # to use the options returned by --libs. Specifically, Ubuntu for --static
2605 # builds doesn't work:
2606 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2607 #
2608 # So sanity check the cflags/libs before assuming gnutls can be used.
2609 if ! $pkg_config --exists "gnutls"; then
2610 return 1
2611 fi
2612
2613 write_c_skeleton
2614 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2615}
2616
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002617gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002618gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002619if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002620 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002621 gnutls_cflags=$($pkg_config --cflags gnutls)
2622 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002623 libs_softmmu="$gnutls_libs $libs_softmmu"
2624 libs_tools="$gnutls_libs $libs_tools"
2625 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2626 gnutls="yes"
2627
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002628 # gnutls_rnd requires >= 2.11.0
2629 if $pkg_config --exists "gnutls >= 2.11.0"; then
2630 gnutls_rnd="yes"
2631 else
2632 gnutls_rnd="no"
2633 fi
2634
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002635 if $pkg_config --exists 'gnutls >= 3.0'; then
2636 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002637 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002638 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002639 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002640 *gcrypt*)
2641 gnutls_gcrypt=yes
2642 gnutls_nettle=no
2643 ;;
2644 *nettle*)
2645 gnutls_gcrypt=no
2646 gnutls_nettle=yes
2647 ;;
2648 *)
2649 gnutls_gcrypt=yes
2650 gnutls_nettle=no
2651 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002652 esac
2653 else
2654 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002655 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002656 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002657 elif test "$gnutls" = "yes"; then
2658 feature_not_found "gnutls" "Install gnutls devel"
2659 else
2660 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002661 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002662 fi
2663else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002664 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002665fi
2666
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002667
2668# If user didn't give a --disable/enable-gcrypt flag,
2669# then mark as disabled if user requested nettle
2670# explicitly, or if gnutls links to nettle
2671if test -z "$gcrypt"
2672then
2673 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2674 then
2675 gcrypt="no"
2676 fi
2677fi
2678
2679# If user didn't give a --disable/enable-nettle flag,
2680# then mark as disabled if user requested gcrypt
2681# explicitly, or if gnutls links to gcrypt
2682if test -z "$nettle"
2683then
2684 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2685 then
2686 nettle="no"
2687 fi
2688fi
2689
2690has_libgcrypt_config() {
2691 if ! has "libgcrypt-config"
2692 then
2693 return 1
2694 fi
2695
2696 if test -n "$cross_prefix"
2697 then
Stefan Weil89138852016-05-16 15:10:20 +02002698 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002699 if test "$host-" != $cross_prefix
2700 then
2701 return 1
2702 fi
2703 fi
2704
2705 return 0
2706}
2707
2708if test "$gcrypt" != "no"; then
2709 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002710 gcrypt_cflags=$(libgcrypt-config --cflags)
2711 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002712 # Debian has remove -lgpg-error from libgcrypt-config
2713 # as it "spreads unnecessary dependencies" which in
2714 # turn breaks static builds...
2715 if test "$static" = "yes"
2716 then
2717 gcrypt_libs="$gcrypt_libs -lgpg-error"
2718 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002719 libs_softmmu="$gcrypt_libs $libs_softmmu"
2720 libs_tools="$gcrypt_libs $libs_tools"
2721 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002722 gcrypt="yes"
2723 if test -z "$nettle"; then
2724 nettle="no"
2725 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002726
2727 cat > $TMPC << EOF
2728#include <gcrypt.h>
2729int main(void) {
2730 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2731 GCRY_MD_SHA256,
2732 NULL, 0, 0, 0, NULL);
2733 return 0;
2734}
2735EOF
2736 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2737 gcrypt_kdf=yes
2738 fi
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002739
2740 cat > $TMPC << EOF
2741#include <gcrypt.h>
2742int main(void) {
2743 gcry_mac_hd_t handle;
2744 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2745 GCRY_MAC_FLAG_SECURE, NULL);
2746 return 0;
2747}
2748EOF
2749 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2750 gcrypt_hmac=yes
2751 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002752 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002753 if test "$gcrypt" = "yes"; then
2754 feature_not_found "gcrypt" "Install gcrypt devel"
2755 else
2756 gcrypt="no"
2757 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002758 fi
2759fi
2760
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002761
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002762if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002763 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002764 nettle_cflags=$($pkg_config --cflags nettle)
2765 nettle_libs=$($pkg_config --libs nettle)
2766 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002767 libs_softmmu="$nettle_libs $libs_softmmu"
2768 libs_tools="$nettle_libs $libs_tools"
2769 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002770 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002771
2772 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002773#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002774#include <nettle/pbkdf2.h>
2775int main(void) {
2776 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2777 return 0;
2778}
2779EOF
2780 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2781 nettle_kdf=yes
2782 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002783 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002784 if test "$nettle" = "yes"; then
2785 feature_not_found "nettle" "Install nettle devel"
2786 else
2787 nettle="no"
2788 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002789 fi
2790fi
2791
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002792if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2793then
2794 error_exit "Only one of gcrypt & nettle can be enabled"
2795fi
2796
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002797##########################################
2798# libtasn1 - only for the TLS creds/session test suite
2799
2800tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002801tasn1_cflags=""
2802tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002803if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002804 tasn1_cflags=$($pkg_config --cflags libtasn1)
2805 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002806else
2807 tasn1=no
2808fi
2809
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002810
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002811##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002812# getifaddrs (for tests/test-io-channel-socket )
2813
2814have_ifaddrs_h=yes
2815if ! check_include "ifaddrs.h" ; then
2816 have_ifaddrs_h=no
2817fi
2818
2819##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002820# VTE probe
2821
2822if test "$vte" != "no"; then
2823 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002824 vteminversion="0.32.0"
2825 if $pkg_config --exists "vte-2.91"; then
2826 vtepackage="vte-2.91"
2827 else
2828 vtepackage="vte-2.90"
2829 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002830 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002831 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002832 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002833 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002834 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002835 vte_cflags=$($pkg_config --cflags $vtepackage)
2836 vte_libs=$($pkg_config --libs $vtepackage)
2837 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002838 vte="yes"
2839 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002840 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002841 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002842 else
2843 feature_not_found "vte" "Install libvte devel"
2844 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002845 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002846 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002847 fi
2848fi
2849
2850##########################################
bellard11d9f692004-04-02 20:55:59 +00002851# SDL probe
2852
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002853# Look for sdl configuration program (pkg-config or sdl-config). Try
2854# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002855
Peter Xuc6093a02018-04-10 13:40:34 +08002856sdl_probe ()
2857{
2858 sdl_too_old=no
2859 if test "$sdlabi" = ""; then
2860 if $pkg_config --exists "sdl2"; then
2861 sdlabi=2.0
2862 elif $pkg_config --exists "sdl"; then
2863 sdlabi=1.2
2864 else
2865 sdlabi=2.0
2866 fi
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002867 fi
bellard11d9f692004-04-02 20:55:59 +00002868
Peter Xuc6093a02018-04-10 13:40:34 +08002869 if test $sdlabi = "2.0"; then
2870 sdl_config=$sdl2_config
2871 sdlname=sdl2
2872 sdlconfigname=sdl2_config
2873 elif test $sdlabi = "1.2"; then
2874 sdlname=sdl
2875 sdlconfigname=sdl_config
2876 else
2877 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2878 fi
2879
2880 if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
2881 sdl_config=$sdlconfigname
2882 fi
2883
2884 if $pkg_config $sdlname --exists; then
2885 sdlconfig="$pkg_config $sdlname"
2886 sdlversion=$($sdlconfig --modversion 2>/dev/null)
2887 elif has ${sdl_config}; then
2888 sdlconfig="$sdl_config"
2889 sdlversion=$($sdlconfig --version)
2890 else
2891 if test "$sdl" = "yes" ; then
2892 feature_not_found "sdl" "Install SDL2-devel"
2893 fi
2894 sdl=no
2895 # no need to do the rest
2896 return
2897 fi
2898 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2899 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2900 fi
2901
Juan Quintelaac119f92009-07-27 16:13:15 +02002902 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002903#include <SDL.h>
2904#undef main /* We don't want SDL to override our main() */
2905int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2906EOF
Stefan Weil89138852016-05-16 15:10:20 +02002907 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
Gerd Hoffmann2ca5c432018-03-07 16:42:57 +01002908 sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
TeLeMan74f42e12010-02-08 13:56:44 +08002909 if test "$static" = "yes" ; then
Thomas Huth5f37e6d2017-06-13 20:00:44 +02002910 if $pkg_config $sdlname --exists; then
2911 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2912 else
2913 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2914 fi
TeLeMan74f42e12010-02-08 13:56:44 +08002915 else
Stefan Weil89138852016-05-16 15:10:20 +02002916 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002917 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002918 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002919 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002920 sdl_too_old=yes
2921 else
Peter Maydella30878e2015-08-14 16:10:52 +01002922 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002923 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002924
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002925 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002926 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002927 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002928 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2929 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002930 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002931 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002932 :
2933 else
2934 sdl=no
2935 fi
2936 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002937 else # sdl not found
2938 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002939 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002940 fi
2941 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002942 fi # sdl compile test
Peter Xuc6093a02018-04-10 13:40:34 +08002943}
2944
2945if test "$sdl" != "no" ; then
2946 sdl_probe
Juan Quintelaa68551b2009-07-27 16:13:09 +02002947fi
bellard11d9f692004-04-02 20:55:59 +00002948
aliguori5368a422009-03-03 17:37:21 +00002949if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002950 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002951#include <SDL.h>
2952#if defined(SDL_VIDEO_DRIVER_X11)
2953#include <X11/XKBlib.h>
2954#else
2955#error No x11 support
2956#endif
2957int main(void) { return 0; }
2958EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002959 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
Gerd Hoffmann87815952018-03-01 11:05:42 +01002960 need_x11=yes
Jeremy Whitef676c672015-01-09 13:08:49 -06002961 sdl_cflags="$sdl_cflags $x11_cflags"
2962 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002963 fi
aliguori5368a422009-03-03 17:37:21 +00002964fi
2965
ths8f28f3f2007-01-05 21:25:54 +00002966##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002967# RDMA needs OpenFabrics libraries
2968if test "$rdma" != "no" ; then
2969 cat > $TMPC <<EOF
2970#include <rdma/rdma_cma.h>
2971int main(void) { return 0; }
2972EOF
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02002973 rdma_libs="-lrdmacm -libverbs -libumad"
Michael R. Hines2da776d2013-07-22 10:01:54 -04002974 if compile_prog "" "$rdma_libs" ; then
2975 rdma="yes"
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02002976 libs_softmmu="$libs_softmmu $rdma_libs"
Michael R. Hines2da776d2013-07-22 10:01:54 -04002977 else
2978 if test "$rdma" = "yes" ; then
2979 error_exit \
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02002980 " OpenFabrics librdmacm/libibverbs/libibumad not present." \
Michael R. Hines2da776d2013-07-22 10:01:54 -04002981 " Your options:" \
Yuval Shaiaef6d4cc2018-02-09 15:23:18 +02002982 " (1) Fast: Install infiniband packages (devel) from your distro." \
Michael R. Hines2da776d2013-07-22 10:01:54 -04002983 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2984 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2985 fi
2986 rdma="no"
2987 fi
2988fi
2989
ths8d5d2d42007-08-25 01:37:51 +00002990
2991##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002992# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002993if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002994 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002995#include <sasl/sasl.h>
2996#include <stdio.h>
2997int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2998EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002999 # Assuming Cyrus-SASL installed in /usr prefix
3000 vnc_sasl_cflags=""
3001 vnc_sasl_libs="-lsasl2"
3002 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
3003 vnc_sasl=yes
3004 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01003005 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02003006 else
3007 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003008 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00003009 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02003010 vnc_sasl=no
3011 fi
aliguori2f9606b2009-03-06 20:27:28 +00003012fi
3013
3014##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003015# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003016if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003017cat > $TMPC <<EOF
3018#include <stdio.h>
3019#include <jpeglib.h>
3020int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
3021EOF
3022 vnc_jpeg_cflags=""
3023 vnc_jpeg_libs="-ljpeg"
3024 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
3025 vnc_jpeg=yes
3026 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01003027 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003028 else
3029 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003030 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02003031 fi
3032 vnc_jpeg=no
3033 fi
3034fi
3035
3036##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02003037# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01003038if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02003039cat > $TMPC <<EOF
3040//#include <stdio.h>
3041#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003042#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02003043int main(void) {
3044 png_structp png_ptr;
3045 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01003046 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02003047}
3048EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003049 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02003050 vnc_png_cflags=$($pkg_config libpng --cflags)
3051 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04003052 else
Corentin Charyefe556a2010-07-07 20:57:56 +02003053 vnc_png_cflags=""
3054 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04003055 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02003056 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
3057 vnc_png=yes
3058 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04003059 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02003060 else
3061 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003062 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02003063 fi
3064 vnc_png=no
3065 fi
3066fi
3067
3068##########################################
Gerd Hoffmann6a021532017-10-05 17:33:28 +02003069# xkbcommon probe
3070if test "$xkbcommon" != "no" ; then
3071 if $pkg_config xkbcommon --exists; then
3072 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
3073 xkbcommon_libs=$($pkg_config xkbcommon --libs)
3074 xkbcommon=yes
3075 else
3076 if test "$xkbcommon" = "yes" ; then
3077 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
3078 fi
3079 xkbcommon=no
3080 fi
3081fi
3082
3083##########################################
aliguori76655d62009-03-06 20:27:37 +00003084# fnmatch() probe, used for ACL routines
3085fnmatch="no"
3086cat > $TMPC << EOF
3087#include <fnmatch.h>
3088int main(void)
3089{
3090 fnmatch("foo", "foo", 0);
3091 return 0;
3092}
3093EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003094if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00003095 fnmatch="yes"
3096fi
3097
3098##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06003099# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003100if test "$xfs" != "no" ; then
3101 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01003102#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003103#include <xfs/xfs.h>
3104int main(void)
3105{
3106 xfsctl(NULL, 0, 0, NULL);
3107 return 0;
3108}
3109EOF
3110 if compile_prog "" "" ; then
3111 xfs="yes"
3112 else
3113 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003114 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003115 fi
3116 xfs=no
3117 fi
3118fi
3119
3120##########################################
ths8a16d272008-07-19 09:56:24 +00003121# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02003122if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003123 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00003124 cat > $TMPC << EOF
3125#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00003126int main(void)
3127{
3128 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01003129 char s[] = "";
3130 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00003131 return 0;
3132}
ths8a16d272008-07-19 09:56:24 +00003133EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003134 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003135 vde=yes
Juan Quinteladfb278b2009-08-12 18:20:27 +02003136 else
3137 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003138 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02003139 fi
3140 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02003141 fi
ths8a16d272008-07-19 09:56:24 +00003142fi
3143
3144##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003145# netmap support probe
3146# Apart from looking for netmap headers, we make sure that the host API version
3147# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3148# a minor/major version number. Minor new features will be marked with values up
3149# to 15, and if something happens that requires a change to the backend we will
3150# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01003151if test "$netmap" != "no" ; then
3152 cat > $TMPC << EOF
3153#include <inttypes.h>
3154#include <net/if.h>
3155#include <net/netmap.h>
3156#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003157#if (NETMAP_API < 11) || (NETMAP_API > 15)
3158#error
3159#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01003160int main(void) { return 0; }
3161EOF
3162 if compile_prog "" "" ; then
3163 netmap=yes
3164 else
3165 if test "$netmap" = "yes" ; then
3166 feature_not_found "netmap"
3167 fi
3168 netmap=no
3169 fi
3170fi
3171
3172##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05003173# libcap-ng library probe
3174if test "$cap_ng" != "no" ; then
3175 cap_libs="-lcap-ng"
3176 cat > $TMPC << EOF
3177#include <cap-ng.h>
3178int main(void)
3179{
3180 capng_capability_to_name(CAPNG_EFFECTIVE);
3181 return 0;
3182}
3183EOF
3184 if compile_prog "" "$cap_libs" ; then
3185 cap_ng=yes
3186 libs_tools="$cap_libs $libs_tools"
3187 else
3188 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003189 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05003190 fi
3191 cap_ng=no
3192 fi
3193fi
3194
3195##########################################
malcc2de5c92008-06-28 19:13:06 +00003196# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00003197
malcc2de5c92008-06-28 19:13:06 +00003198audio_drv_probe()
3199{
3200 drv=$1
3201 hdr=$2
3202 lib=$3
3203 exp=$4
3204 cfl=$5
3205 cat > $TMPC << EOF
3206#include <$hdr>
3207int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00003208EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003209 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00003210 :
3211 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003212 error_exit "$drv check failed" \
3213 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00003214 fi
3215}
3216
Stefan Weil89138852016-05-16 15:10:20 +02003217audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00003218for drv in $audio_drv_list; do
3219 case $drv in
3220 alsa)
3221 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01003222 "return snd_pcm_close((snd_pcm_t *)0);"
Fam Zhengb1149912017-09-07 16:29:13 +08003223 alsa_libs="-lasound"
malcc2de5c92008-06-28 19:13:06 +00003224 ;;
3225
malcb8e59f12008-07-02 21:03:08 +00003226 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02003227 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3228 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Fam Zhengb1149912017-09-07 16:29:13 +08003229 pulse_libs="-lpulse"
Juan Quintela67f86e82009-08-03 14:46:59 +02003230 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00003231 ;;
3232
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003233 sdl)
3234 if test "$sdl" = "no"; then
3235 error_exit "sdl not found or disabled, can not use sdl audio driver"
3236 fi
3237 ;;
3238
Juan Quintela997e6902009-08-03 14:46:29 +02003239 coreaudio)
Fam Zhengb1149912017-09-07 16:29:13 +08003240 coreaudio_libs="-framework CoreAudio"
Juan Quintela997e6902009-08-03 14:46:29 +02003241 ;;
3242
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003243 dsound)
Fam Zhengb1149912017-09-07 16:29:13 +08003244 dsound_libs="-lole32 -ldxguid"
malcd5631632009-10-10 01:13:41 +04003245 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003246 ;;
3247
3248 oss)
Fam Zhengb1149912017-09-07 16:29:13 +08003249 oss_libs="$oss_lib"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003250 ;;
3251
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003252 wav)
3253 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00003254 ;;
3255
malce4c63a62008-07-19 16:15:16 +00003256 *)
malc1c9b2a52008-07-19 16:57:30 +00003257 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01003258 error_exit "Unknown driver '$drv' selected" \
3259 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00003260 }
3261 ;;
malcc2de5c92008-06-28 19:13:06 +00003262 esac
3263done
ths8f28f3f2007-01-05 21:25:54 +00003264
balrog4d3b6f62008-02-10 16:33:14 +00003265##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00003266# BrlAPI probe
3267
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003268if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003269 brlapi_libs="-lbrlapi"
3270 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00003271#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003272#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00003273int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3274EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003275 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003276 brlapi=yes
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003277 else
3278 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003279 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003280 fi
3281 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02003282 fi
3283fi
aurel322e4d9fb2008-04-08 06:01:02 +00003284
3285##########################################
balrog4d3b6f62008-02-10 16:33:14 +00003286# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02003287if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003288 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003289 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3290 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003291 else
Samuel Thibault7c703002016-11-09 11:27:52 +01003292 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003293 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003294 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02003295 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00003296 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003297#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00003298#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003299#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01003300int main(void) {
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003301 wchar_t wch = L'w';
3302 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01003303 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003304 addwstr(L"wide chars\n");
3305 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003306 add_wch(WACS_DEGREE);
Kamil Rytarowski271f37a2017-04-26 12:50:27 +02003307 return 0;
Stefan Weilef9a2522011-12-17 17:46:02 +01003308}
balrog4d3b6f62008-02-10 16:33:14 +00003309EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003310 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003311 for curses_inc in $curses_inc_list; do
Peter Maydellb01a4fd2017-06-02 15:35:38 +01003312 # Make sure we get the wide character prototypes
3313 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
Samuel Thibault7c703002016-11-09 11:27:52 +01003314 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003315 for curses_lib in $curses_lib_list; do
3316 unset IFS
3317 if compile_prog "$curses_inc" "$curses_lib" ; then
3318 curses_found=yes
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003319 break
3320 fi
3321 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003322 if test "$curses_found" = yes ; then
3323 break
3324 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003325 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003326 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003327 if test "$curses_found" = "yes" ; then
3328 curses=yes
3329 else
3330 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003331 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003332 fi
3333 curses=no
3334 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003335fi
balrog4d3b6f62008-02-10 16:33:14 +00003336
blueswir1414f0da2008-08-15 18:20:52 +00003337##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003338# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003339if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003340 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003341 curlconfig="$pkg_config libcurl"
3342 else
3343 curlconfig=curl-config
3344 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003345 cat > $TMPC << EOF
3346#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003347int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003348EOF
Stefan Weil89138852016-05-16 15:10:20 +02003349 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3350 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003351 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003352 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003353 else
3354 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003355 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003356 fi
3357 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003358 fi
3359fi # test "$curl"
3360
3361##########################################
balrogfb599c92008-09-28 23:49:55 +00003362# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003363if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003364 cat > $TMPC << EOF
3365#include <bluetooth/bluetooth.h>
3366int main(void) { return bt_error(0); }
3367EOF
Stefan Weil89138852016-05-16 15:10:20 +02003368 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3369 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003370 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003371 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003372 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003373 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003374 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003375 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003376 fi
balroge820e3f2008-09-30 02:27:44 +00003377 bluez="no"
3378 fi
balrogfb599c92008-09-28 23:49:55 +00003379fi
3380
3381##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003382# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003383
Peter Maydellad04d8c2017-04-03 14:04:15 +01003384if test "$mingw32" = yes; then
3385 glib_req_ver=2.30
3386else
3387 glib_req_ver=2.22
3388fi
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003389glib_modules=gthread-2.0
3390if test "$modules" = yes; then
Gerd Hoffmanna88afc62018-03-08 09:53:00 +01003391 glib_modules="$glib_modules gmodule-export-2.0"
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003392fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003393
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003394# This workaround is required due to a bug in pkg-config file for glib as it
3395# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3396
3397if test "$static" = yes -a "$mingw32" = yes; then
3398 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3399fi
3400
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003401for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003402 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003403 glib_cflags=$($pkg_config --cflags $i)
3404 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003405 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003406 LIBS="$glib_libs $LIBS"
3407 libs_qga="$glib_libs $libs_qga"
3408 else
3409 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3410 fi
3411done
3412
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003413# Sanity check that the current size_t matches the
3414# size that glib thinks it should be. This catches
3415# problems on multi-arch where people try to build
3416# 32-bit QEMU while pointing at 64-bit glib headers
3417cat > $TMPC <<EOF
3418#include <glib.h>
3419#include <unistd.h>
3420
3421#define QEMU_BUILD_BUG_ON(x) \
3422 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3423
3424int main(void) {
3425 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3426 return 0;
3427}
3428EOF
3429
Stefan Weil5919e032016-04-28 23:33:41 +02003430if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003431 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3432 "You probably need to set PKG_CONFIG_LIBDIR"\
3433 "to point to the right pkg-config files for your"\
3434 "build target"
3435fi
3436
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003437# g_test_trap_subprocess added in 2.38. Used by some tests.
3438glib_subprocess=yes
Marc-André Lureaua0492232017-01-04 21:57:22 +01003439if ! $pkg_config --atleast-version=2.38 glib-2.0; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003440 glib_subprocess=no
3441fi
3442
John Snowbbbf2e02015-03-25 18:57:38 -04003443# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3444cat > $TMPC << EOF
3445#include <glib.h>
3446int main(void) { return 0; }
3447EOF
3448if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3449 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3450 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3451 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3452 fi
3453fi
3454
Fam Zhenge26110c2014-02-10 14:48:57 +08003455##########################################
3456# SHA command probe for modules
3457if test "$modules" = yes; then
3458 shacmd_probe="sha1sum sha1 shasum"
3459 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003460 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003461 shacmd="$c"
3462 break
3463 fi
3464 done
3465 if test "$shacmd" = ""; then
3466 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3467 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003468fi
3469
3470##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003471# pixman support probe
3472
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003473if test "$want_tools" = "no" -a "$softmmu" = "no"; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003474 pixman_cflags=
3475 pixman_libs=
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003476elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Stefan Weil89138852016-05-16 15:10:20 +02003477 pixman_cflags=$($pkg_config --cflags pixman-1)
3478 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003479else
Gerd Hoffmannc12b6d72017-09-05 16:01:15 +02003480 error_exit "pixman >= 0.21.8 not present." \
3481 "Please install the pixman devel package."
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003482fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003483
3484##########################################
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003485# libmpathpersist probe
3486
3487if test "$mpath" != "no" ; then
3488 cat > $TMPC <<EOF
3489#include <libudev.h>
3490#include <mpath_persist.h>
3491unsigned mpath_mx_alloc_len = 1024;
3492int logsink;
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003493static struct config *multipath_conf;
3494extern struct udev *udev;
3495extern struct config *get_multipath_config(void);
3496extern void put_multipath_config(struct config *conf);
3497struct udev *udev;
3498struct config *get_multipath_config(void) { return multipath_conf; }
3499void put_multipath_config(struct config *conf) { }
3500
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003501int main(void) {
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003502 udev = udev_new();
3503 multipath_conf = mpath_lib_init();
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003504 return 0;
3505}
3506EOF
3507 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3508 mpathpersist=yes
3509 else
3510 mpathpersist=no
3511 fi
3512else
3513 mpathpersist=no
3514fi
3515
3516##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303517# libcap probe
3518
3519if test "$cap" != "no" ; then
3520 cat > $TMPC <<EOF
3521#include <stdio.h>
3522#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003523int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303524EOF
3525 if compile_prog "" "-lcap" ; then
3526 cap=yes
3527 else
3528 cap=no
3529 fi
3530fi
3531
3532##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003533# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003534PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003535
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003536pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003537cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003538#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003539static void *f(void *p) { return NULL; }
3540int main(void) {
3541 pthread_t thread;
3542 pthread_create(&thread, 0, f, 0);
3543 return 0;
3544}
blueswir1414f0da2008-08-15 18:20:52 +00003545EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003546if compile_prog "" "" ; then
3547 pthread=yes
3548else
3549 for pthread_lib in $PTHREADLIBS_LIST; do
3550 if compile_prog "" "$pthread_lib" ; then
3551 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003552 found=no
3553 for lib_entry in $LIBS; do
3554 if test "$lib_entry" = "$pthread_lib"; then
3555 found=yes
3556 break
3557 fi
3558 done
3559 if test "$found" = "no"; then
3560 LIBS="$pthread_lib $LIBS"
Marc-André Lureau14ab3aa2018-01-04 17:05:06 +01003561 libs_qga="$pthread_lib $libs_qga"
Peter Portantee3c56762012-04-20 10:36:12 -04003562 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003563 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003564 break
3565 fi
3566 done
3567fi
blueswir1414f0da2008-08-15 18:20:52 +00003568
Anthony Liguori4617e592009-08-25 17:21:56 -05003569if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003570 error_exit "pthread check failed" \
3571 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003572fi
3573
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003574# check for pthread_setname_np
3575pthread_setname_np=no
3576cat > $TMPC << EOF
3577#include <pthread.h>
3578
3579static void *f(void *p) { return NULL; }
3580int main(void)
3581{
3582 pthread_t thread;
3583 pthread_create(&thread, 0, f, 0);
3584 pthread_setname_np(thread, "QEMU");
3585 return 0;
3586}
3587EOF
3588if compile_prog "" "$pthread_lib" ; then
3589 pthread_setname_np=yes
3590fi
3591
aliguoribf9298b2008-12-05 20:05:26 +00003592##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003593# rbd probe
3594if test "$rbd" != "no" ; then
3595 cat > $TMPC <<EOF
3596#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003597#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003598int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003599 rados_t cluster;
3600 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003601 return 0;
3602}
3603EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003604 rbd_libs="-lrbd -lrados"
3605 if compile_prog "" "$rbd_libs" ; then
3606 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003607 else
3608 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003609 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003610 fi
3611 rbd=no
3612 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003613fi
3614
3615##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003616# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003617min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003618if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003619 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003620 libssh2_cflags=$($pkg_config libssh2 --cflags)
3621 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003622 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003623 else
3624 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003625 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003626 fi
3627 libssh2=no
3628 fi
3629fi
3630
3631##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003632# libssh2_sftp_fsync probe
3633
3634if test "$libssh2" = "yes"; then
3635 cat > $TMPC <<EOF
3636#include <stdio.h>
3637#include <libssh2.h>
3638#include <libssh2_sftp.h>
3639int main(void) {
3640 LIBSSH2_SESSION *session;
3641 LIBSSH2_SFTP *sftp;
3642 LIBSSH2_SFTP_HANDLE *sftp_handle;
3643 session = libssh2_session_init ();
3644 sftp = libssh2_sftp_init (session);
3645 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3646 libssh2_sftp_fsync (sftp_handle);
3647 return 0;
3648}
3649EOF
3650 # libssh2_cflags/libssh2_libs defined in previous test.
3651 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3652 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3653 fi
3654fi
3655
3656##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003657# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003658
3659if test "$linux_aio" != "no" ; then
3660 cat > $TMPC <<EOF
3661#include <libaio.h>
3662#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003663#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003664int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3665EOF
3666 if compile_prog "" "-laio" ; then
3667 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003668 else
3669 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003670 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003671 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003672 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003673 fi
3674fi
3675
3676##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003677# TPM passthrough is only on x86 Linux
3678
3679if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3680 tpm_passthrough=$tpm
3681else
3682 tpm_passthrough=no
3683fi
3684
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003685# TPM emulator is for all posix systems
3686if test "$mingw32" != "yes"; then
3687 tpm_emulator=$tpm
3688else
3689 tpm_emulator=no
3690fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003691##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003692# attr probe
3693
3694if test "$attr" != "no" ; then
3695 cat > $TMPC <<EOF
3696#include <stdio.h>
3697#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003698#ifdef CONFIG_LIBATTR
3699#include <attr/xattr.h>
3700#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003701#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003702#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003703int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3704EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003705 if compile_prog "" "" ; then
3706 attr=yes
3707 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003708 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003709 attr=yes
3710 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003711 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003712 else
3713 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003714 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003715 fi
3716 attr=no
3717 fi
3718fi
3719
3720##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003721# iovec probe
3722cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003723#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003724#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003725#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003726int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003727EOF
3728iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003729if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003730 iovec=yes
3731fi
3732
aurel32f652e6a2008-12-16 10:43:48 +00003733##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003734# preadv probe
3735cat > $TMPC <<EOF
3736#include <sys/types.h>
3737#include <sys/uio.h>
3738#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003739int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003740EOF
3741preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003742if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003743 preadv=yes
3744fi
3745
3746##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003747# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003748# fdt support is mandatory for at least some target architectures,
3749# so insist on it if we're building those system emulators.
3750fdt_required=no
3751for target in $target_list; do
3752 case $target in
KONRAD Frederica6664092018-05-03 17:17:16 +02003753 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003754 fdt_required=yes
3755 ;;
3756 esac
3757done
3758
3759if test "$fdt_required" = "yes"; then
3760 if test "$fdt" = "no"; then
3761 error_exit "fdt disabled but some requested targets require it." \
3762 "You can turn off fdt only if you also disable all the system emulation" \
3763 "targets which need it (by specifying a cut down --target-list)."
3764 fi
3765 fdt=yes
3766fi
3767
Juan Quintela2df87df2009-08-12 18:29:54 +02003768if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003769 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003770 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003771 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003772 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003773#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003774#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003775int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003776EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003777 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003778 # system DTC is good - use it
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03003779 fdt=system
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003780 else
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003781 # have GIT checkout, so activate dtc submodule
3782 if test -e "${source_path}/.git" ; then
3783 git_submodules="${git_submodules} dtc"
3784 fi
3785 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03003786 fdt=git
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003787 mkdir -p dtc
3788 if [ "$pwd_is_source_path" != "y" ] ; then
3789 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3790 symlink "$source_path/dtc/scripts" "dtc/scripts"
3791 fi
3792 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03003793 fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt"
3794 fdt_libs="$fdt_libs"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003795 elif test "$fdt" = "yes" ; then
3796 # Not a git build & no libfdt found, prompt for system install
3797 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3798 "Please install the DTC (libfdt) devel package"
3799 else
3800 # don't have and don't want
3801 fdt_libs=
3802 fdt=no
3803 fi
aurel32f652e6a2008-12-16 10:43:48 +00003804 fi
3805fi
3806
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003807libs_softmmu="$libs_softmmu $fdt_libs"
3808
Michael Walle20ff0752011-03-07 23:32:39 +01003809##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003810# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003811
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003812if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003813 opengl_pkgs="epoxy libdrm gbm"
Gerd Hoffmann5f9b1e32018-03-01 11:05:43 +01003814 if $pkg_config $opengl_pkgs; then
3815 opengl_cflags="$($pkg_config --cflags $opengl_pkgs)"
3816 opengl_libs="$($pkg_config --libs $opengl_pkgs)"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003817 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003818 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3819 gtk_gl="yes"
3820 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003821 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003822 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003823 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003824 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003825 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003826 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003827 opengl_libs=""
3828 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003829 fi
3830fi
3831
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003832if test "$opengl" = "yes"; then
3833 cat > $TMPC << EOF
3834#include <epoxy/egl.h>
3835#ifndef EGL_MESA_image_dma_buf_export
3836# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3837#endif
3838int main(void) { return 0; }
3839EOF
3840 if compile_prog "" "" ; then
3841 opengl_dmabuf=yes
3842 fi
3843fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003844
Klim Kireeved279a02018-01-12 12:01:19 +03003845##########################################
3846# libxml2 probe
3847if test "$libxml2" != "no" ; then
3848 if $pkg_config --exists libxml-2.0; then
3849 libxml2="yes"
3850 libxml2_cflags=$($pkg_config --cflags libxml-2.0)
3851 libxml2_libs=$($pkg_config --libs libxml-2.0)
3852 else
3853 if test "$libxml2" = "yes"; then
3854 feature_not_found "libxml2" "Install libxml2 devel"
3855 fi
3856 libxml2="no"
3857 fi
3858fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003859
Bharata B Raoeb100392012-09-24 14:42:45 +05303860##########################################
3861# glusterfs probe
3862if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003863 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303864 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003865 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3866 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003867 if $pkg_config --atleast-version=4 glusterfs-api; then
3868 glusterfs_xlator_opt="yes"
3869 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003870 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303871 glusterfs_discard="yes"
3872 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303873 if $pkg_config --atleast-version=6 glusterfs-api; then
Niels de Vosdf3a4292017-05-28 12:01:14 +05303874 glusterfs_fallocate="yes"
Bharata B Rao7c815372013-12-21 14:51:25 +05303875 glusterfs_zerofill="yes"
3876 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303877 else
3878 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003879 feature_not_found "GlusterFS backend support" \
3880 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303881 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303882 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303883 fi
3884fi
3885
aurel3239386ac2009-04-15 19:48:17 +00003886# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003887# emulator. This is done because older glibc versions don't
3888# have syscall stubs for these implemented. In that case we
3889# don't provide them even if kernel supports them.
3890#
3891inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003892cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003893#include <sys/inotify.h>
3894
3895int
3896main(void)
3897{
3898 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003899 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003900}
3901EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003902if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003903 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003904fi
3905
Riku Voipioc05c7a72010-03-26 15:25:11 +00003906inotify1=no
3907cat > $TMPC << EOF
3908#include <sys/inotify.h>
3909
3910int
3911main(void)
3912{
3913 /* try to start inotify */
3914 return inotify_init1(0);
3915}
3916EOF
3917if compile_prog "" "" ; then
3918 inotify1=yes
3919fi
3920
Riku Voipio099d6b02009-05-05 12:10:04 +03003921# check if pipe2 is there
3922pipe2=no
3923cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003924#include <unistd.h>
3925#include <fcntl.h>
3926
3927int main(void)
3928{
3929 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003930 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003931}
3932EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003933if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003934 pipe2=yes
3935fi
3936
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003937# check if accept4 is there
3938accept4=no
3939cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003940#include <sys/socket.h>
3941#include <stddef.h>
3942
3943int main(void)
3944{
3945 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3946 return 0;
3947}
3948EOF
3949if compile_prog "" "" ; then
3950 accept4=yes
3951fi
3952
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303953# check if tee/splice is there. vmsplice was added same time.
3954splice=no
3955cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303956#include <unistd.h>
3957#include <fcntl.h>
3958#include <limits.h>
3959
3960int main(void)
3961{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003962 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303963 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3964 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3965 return 0;
3966}
3967EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003968if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303969 splice=yes
3970fi
3971
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003972##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003973# libnuma probe
3974
3975if test "$numa" != "no" ; then
3976 cat > $TMPC << EOF
3977#include <numa.h>
3978int main(void) { return numa_available(); }
3979EOF
3980
3981 if compile_prog "" "-lnuma" ; then
3982 numa=yes
3983 libs_softmmu="-lnuma $libs_softmmu"
3984 else
3985 if test "$numa" = "yes" ; then
3986 feature_not_found "numa" "install numactl devel"
3987 fi
3988 numa=no
3989 fi
3990fi
3991
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003992if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3993 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3994 exit 1
3995fi
3996
Yang Zhong5a22ab72017-12-20 21:16:46 +08003997# Even if malloc_trim() is available, these non-libc memory allocators
3998# do not support it.
3999if test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then
4000 if test "$malloc_trim" = "yes" ; then
4001 echo "Disabling malloc_trim with non-libc memory allocator"
4002 fi
4003 malloc_trim="no"
4004fi
4005
4006#######################################
4007# malloc_trim
4008
4009if test "$malloc_trim" != "no" ; then
4010 cat > $TMPC << EOF
4011#include <malloc.h>
4012int main(void) { malloc_trim(0); return 0; }
4013EOF
4014 if compile_prog "" "" ; then
4015 malloc_trim="yes"
4016 else
4017 malloc_trim="no"
4018 fi
4019fi
4020
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004021##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08004022# tcmalloc probe
4023
4024if test "$tcmalloc" = "yes" ; then
4025 cat > $TMPC << EOF
4026#include <stdlib.h>
4027int main(void) { malloc(1); return 0; }
4028EOF
4029
4030 if compile_prog "" "-ltcmalloc" ; then
4031 LIBS="-ltcmalloc $LIBS"
4032 else
4033 feature_not_found "tcmalloc" "install gperftools devel"
4034 fi
4035fi
4036
4037##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004038# jemalloc probe
4039
4040if test "$jemalloc" = "yes" ; then
4041 cat > $TMPC << EOF
4042#include <stdlib.h>
4043int main(void) { malloc(1); return 0; }
4044EOF
4045
4046 if compile_prog "" "-ljemalloc" ; then
4047 LIBS="-ljemalloc $LIBS"
4048 else
4049 feature_not_found "jemalloc" "install jemalloc devel"
4050 fi
4051fi
4052
4053##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004054# signalfd probe
4055signalfd="no"
4056cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004057#include <unistd.h>
4058#include <sys/syscall.h>
4059#include <signal.h>
4060int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
4061EOF
4062
4063if compile_prog "" "" ; then
4064 signalfd=yes
4065fi
4066
Riku Voipioc2882b92009-08-12 15:08:24 +03004067# check if eventfd is supported
4068eventfd=no
4069cat > $TMPC << EOF
4070#include <sys/eventfd.h>
4071
4072int main(void)
4073{
Stefan Weil55cc7f32011-12-17 09:27:37 +01004074 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03004075}
4076EOF
4077if compile_prog "" "" ; then
4078 eventfd=yes
4079fi
4080
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004081# check if memfd is supported
4082memfd=no
4083cat > $TMPC << EOF
Paolo Bonzini75e5b702017-11-28 11:51:27 +01004084#include <sys/mman.h>
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004085
4086int main(void)
4087{
4088 return memfd_create("foo", MFD_ALLOW_SEALING);
4089}
4090EOF
4091if compile_prog "" "" ; then
4092 memfd=yes
4093fi
4094
4095
4096
Ulrich Hechtd0927932009-09-17 20:22:14 +03004097# check for fallocate
4098fallocate=no
4099cat > $TMPC << EOF
4100#include <fcntl.h>
4101
4102int main(void)
4103{
4104 fallocate(0, 0, 0, 0);
4105 return 0;
4106}
4107EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004108if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004109 fallocate=yes
4110fi
4111
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004112# check for fallocate hole punching
4113fallocate_punch_hole=no
4114cat > $TMPC << EOF
4115#include <fcntl.h>
4116#include <linux/falloc.h>
4117
4118int main(void)
4119{
4120 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4121 return 0;
4122}
4123EOF
4124if compile_prog "" "" ; then
4125 fallocate_punch_hole=yes
4126fi
4127
Denis V. Lunevb953f072015-01-30 11:42:14 +03004128# check that fallocate supports range zeroing inside the file
4129fallocate_zero_range=no
4130cat > $TMPC << EOF
4131#include <fcntl.h>
4132#include <linux/falloc.h>
4133
4134int main(void)
4135{
4136 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4137 return 0;
4138}
4139EOF
4140if compile_prog "" "" ; then
4141 fallocate_zero_range=yes
4142fi
4143
Kevin Wolfed911432014-09-29 17:12:59 +02004144# check for posix_fallocate
4145posix_fallocate=no
4146cat > $TMPC << EOF
4147#include <fcntl.h>
4148
4149int main(void)
4150{
4151 posix_fallocate(0, 0, 0);
4152 return 0;
4153}
4154EOF
4155if compile_prog "" "" ; then
4156 posix_fallocate=yes
4157fi
4158
Peter Maydellc727f472011-01-06 11:05:10 +00004159# check for sync_file_range
4160sync_file_range=no
4161cat > $TMPC << EOF
4162#include <fcntl.h>
4163
4164int main(void)
4165{
4166 sync_file_range(0, 0, 0, 0);
4167 return 0;
4168}
4169EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004170if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00004171 sync_file_range=yes
4172fi
4173
Peter Maydelldace20d2011-01-10 13:11:24 +00004174# check for linux/fiemap.h and FS_IOC_FIEMAP
4175fiemap=no
4176cat > $TMPC << EOF
4177#include <sys/ioctl.h>
4178#include <linux/fs.h>
4179#include <linux/fiemap.h>
4180
4181int main(void)
4182{
4183 ioctl(0, FS_IOC_FIEMAP, 0);
4184 return 0;
4185}
4186EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004187if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00004188 fiemap=yes
4189fi
4190
Ulrich Hechtd0927932009-09-17 20:22:14 +03004191# check for dup3
4192dup3=no
4193cat > $TMPC << EOF
4194#include <unistd.h>
4195
4196int main(void)
4197{
4198 dup3(0, 0, 0);
4199 return 0;
4200}
4201EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01004202if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004203 dup3=yes
4204fi
4205
Alex Bligh4e0c6522013-08-21 16:02:43 +01004206# check for ppoll support
4207ppoll=no
4208cat > $TMPC << EOF
4209#include <poll.h>
4210
4211int main(void)
4212{
4213 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4214 ppoll(&pfd, 1, 0, 0);
4215 return 0;
4216}
4217EOF
4218if compile_prog "" "" ; then
4219 ppoll=yes
4220fi
4221
Alex Blighcd758dd2013-08-21 16:02:44 +01004222# check for prctl(PR_SET_TIMERSLACK , ... ) support
4223prctl_pr_set_timerslack=no
4224cat > $TMPC << EOF
4225#include <sys/prctl.h>
4226
4227int main(void)
4228{
4229 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4230 return 0;
4231}
4232EOF
4233if compile_prog "" "" ; then
4234 prctl_pr_set_timerslack=yes
4235fi
4236
Peter Maydell3b6edd12011-02-15 18:35:05 +00004237# check for epoll support
4238epoll=no
4239cat > $TMPC << EOF
4240#include <sys/epoll.h>
4241
4242int main(void)
4243{
4244 epoll_create(0);
4245 return 0;
4246}
4247EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004248if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004249 epoll=yes
4250fi
4251
Peter Maydell227f0212016-06-06 19:58:11 +01004252# epoll_create1 is a later addition
4253# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00004254epoll_create1=no
4255cat > $TMPC << EOF
4256#include <sys/epoll.h>
4257
4258int main(void)
4259{
Peter Maydell19e83f62011-04-26 16:56:40 +01004260 /* Note that we use epoll_create1 as a value, not as
4261 * a function being called. This is necessary so that on
4262 * old SPARC glibc versions where the function was present in
4263 * the library but not declared in the header file we will
4264 * fail the configure check. (Otherwise we will get a compiler
4265 * warning but not an error, and will proceed to fail the
4266 * qemu compile where we compile with -Werror.)
4267 */
Blue Swirlc075a722012-08-09 20:21:25 +00004268 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00004269}
4270EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004271if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004272 epoll_create1=yes
4273fi
4274
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004275# check for sendfile support
4276sendfile=no
4277cat > $TMPC << EOF
4278#include <sys/sendfile.h>
4279
4280int main(void)
4281{
4282 return sendfile(0, 0, 0, 0);
4283}
4284EOF
4285if compile_prog "" "" ; then
4286 sendfile=yes
4287fi
4288
Riku Voipio51834342014-06-22 11:25:42 +01004289# check for timerfd support (glibc 2.8 and newer)
4290timerfd=no
4291cat > $TMPC << EOF
4292#include <sys/timerfd.h>
4293
4294int main(void)
4295{
4296 return(timerfd_create(CLOCK_REALTIME, 0));
4297}
4298EOF
4299if compile_prog "" "" ; then
4300 timerfd=yes
4301fi
4302
Riku Voipio9af5c902014-08-12 15:58:57 +03004303# check for setns and unshare support
4304setns=no
4305cat > $TMPC << EOF
4306#include <sched.h>
4307
4308int main(void)
4309{
4310 int ret;
4311 ret = setns(0, 0);
4312 ret = unshare(0);
4313 return ret;
4314}
4315EOF
4316if compile_prog "" "" ; then
4317 setns=yes
4318fi
4319
Aleksandar Markovic38860a02016-10-10 13:23:29 +02004320# clock_adjtime probe
4321clock_adjtime=no
4322cat > $TMPC <<EOF
4323#include <time.h>
4324
4325int main(void)
4326{
4327 return clock_adjtime(0, 0);
4328}
4329EOF
4330clock_adjtime=no
4331if compile_prog "" "" ; then
4332 clock_adjtime=yes
4333fi
4334
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02004335# syncfs probe
4336syncfs=no
4337cat > $TMPC <<EOF
4338#include <unistd.h>
4339
4340int main(void)
4341{
4342 return syncfs(0);
4343}
4344EOF
4345syncfs=no
4346if compile_prog "" "" ; then
4347 syncfs=yes
4348fi
4349
pbrookcc8ae6d2006-04-23 17:57:59 +00004350# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004351if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004352 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004353 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004354 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004355 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004356 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004357 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004358 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004359 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004360fi
4361
Stefan Weilf514f412009-10-11 12:44:07 +02004362# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004363byteswap_h=no
4364cat > $TMPC << EOF
4365#include <byteswap.h>
4366int main(void) { return bswap_32(0); }
4367EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004368if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004369 byteswap_h=yes
4370fi
4371
Stefan Weil75f13592013-01-05 12:17:38 +01004372# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004373bswap_h=no
4374cat > $TMPC << EOF
4375#include <sys/endian.h>
4376#include <sys/types.h>
4377#include <machine/bswap.h>
4378int main(void) { return bswap32(0); }
4379EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004380if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004381 bswap_h=yes
4382fi
4383
aliguorida93a1f2008-12-12 20:02:52 +00004384##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004385# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004386if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004387 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004388 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004389 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4390 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004391 else
4392 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004393 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004394 fi
4395 libiscsi="no"
4396 fi
4397fi
4398
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004399##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004400# Do we need libm
4401cat > $TMPC << EOF
4402#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004403int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004404EOF
4405if compile_prog "" "" ; then
4406 :
4407elif compile_prog "" "-lm" ; then
4408 LIBS="-lm $LIBS"
4409 libs_qga="-lm $libs_qga"
4410else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004411 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004412fi
4413
4414##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004415# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004416# uClibc provides 2 versions of clock_gettime(), one with realtime
4417# support and one without. This means that the clock_gettime() don't
4418# need -lrt. We still need it for timer_create() so we check for this
4419# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004420cat > $TMPC <<EOF
4421#include <signal.h>
4422#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004423int main(void) {
4424 timer_create(CLOCK_REALTIME, NULL, NULL);
4425 return clock_gettime(CLOCK_REALTIME, NULL);
4426}
aliguorida93a1f2008-12-12 20:02:52 +00004427EOF
4428
Juan Quintela52166aa2009-08-03 14:46:03 +02004429if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004430 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004431# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004432elif compile_prog "" "$pthread_lib -lrt" ; then
4433 LIBS="$LIBS -lrt"
4434 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004435fi
4436
Blue Swirl31ff5042009-09-12 12:33:07 +00004437if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Peter Maydell78723752017-09-04 18:19:00 +01004438 "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004439 libs_softmmu="-lutil $libs_softmmu"
4440fi
4441
Blue Swirlde5071c2009-09-12 09:58:46 +00004442##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004443# spice probe
4444if test "$spice" != "no" ; then
4445 cat > $TMPC << EOF
4446#include <spice.h>
4447int main(void) { spice_server_new(); return 0; }
4448EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004449 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4450 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004451 if $pkg_config --atleast-version=0.12.0 spice-server && \
4452 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004453 compile_prog "$spice_cflags" "$spice_libs" ; then
4454 spice="yes"
4455 libs_softmmu="$libs_softmmu $spice_libs"
4456 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004457 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4458 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004459 else
4460 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004461 feature_not_found "spice" \
4462 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004463 fi
4464 spice="no"
4465 fi
4466fi
4467
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004468# check for smartcard support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004469if test "$smartcard" != "no"; then
Michal Privoznik0f5c6422018-04-03 12:34:37 +02004470 if $pkg_config --atleast-version=2.5.1 libcacard; then
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004471 libcacard_cflags=$($pkg_config --cflags libcacard)
4472 libcacard_libs=$($pkg_config --libs libcacard)
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004473 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004474 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004475 if test "$smartcard" = "yes"; then
4476 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004477 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004478 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004479 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004480fi
4481
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004482# check for libusb
4483if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004484 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004485 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004486 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4487 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004488 else
4489 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004490 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004491 fi
4492 libusb="no"
4493 fi
4494fi
4495
Hans de Goede69354a82011-07-19 11:04:10 +02004496# check for usbredirparser for usb network redirection support
4497if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004498 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004499 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004500 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4501 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004502 else
4503 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004504 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004505 fi
4506 usb_redir="no"
4507 fi
4508fi
4509
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004510##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004511# check if we have VSS SDK headers for win
4512
4513if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4514 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004515 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004516 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4517 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004518 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004519 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4520 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004521 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004522 esac
4523 cat > $TMPC << EOF
4524#define __MIDL_user_allocate_free_DEFINED__
4525#include <inc/win2003/vss.h>
4526int main(void) { return VSS_CTX_BACKUP; }
4527EOF
4528 if compile_prog "$vss_win32_include" "" ; then
4529 guest_agent_with_vss="yes"
4530 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004531 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004532 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004533 else
4534 if test "$vss_win32_sdk" != "" ; then
4535 echo "ERROR: Please download and install Microsoft VSS SDK:"
4536 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4537 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4538 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4539 echo "ERROR: The headers are extracted in the directory \`inc'."
4540 feature_not_found "VSS support"
4541 fi
4542 guest_agent_with_vss="no"
4543 fi
4544fi
4545
4546##########################################
4547# lookup Windows platform SDK (if not specified)
4548# The SDK is needed only to build .tlb (type library) file of guest agent
4549# VSS provider from the source. It is usually unnecessary because the
4550# pre-compiled .tlb file is included.
4551
4552if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4553 if test -z "$win_sdk"; then
4554 programfiles="$PROGRAMFILES"
4555 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4556 if test -n "$programfiles"; then
4557 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4558 else
4559 feature_not_found "Windows SDK"
4560 fi
4561 elif test "$win_sdk" = "no"; then
4562 win_sdk=""
4563 fi
4564fi
4565
4566##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004567# check if mingw environment provides a recent ntddscsi.h
4568if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4569 cat > $TMPC << EOF
4570#include <windows.h>
4571#include <ntddscsi.h>
4572int main(void) {
4573#if !defined(IOCTL_SCSI_GET_ADDRESS)
4574#error Missing required ioctl definitions
4575#endif
4576 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4577 return addr.Lun;
4578}
4579EOF
4580 if compile_prog "" "" ; then
4581 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004582 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004583 fi
4584fi
4585
4586##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004587# virgl renderer probe
4588
4589if test "$virglrenderer" != "no" ; then
4590 cat > $TMPC << EOF
4591#include <virglrenderer.h>
4592int main(void) { virgl_renderer_poll(); return 0; }
4593EOF
4594 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4595 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4596 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4597 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4598 virglrenderer="yes"
4599 else
4600 if test "$virglrenderer" = "yes" ; then
4601 feature_not_found "virglrenderer"
4602 fi
4603 virglrenderer="no"
4604 fi
4605fi
4606
4607##########################################
Richard Henderson8ca80762017-09-14 09:41:12 -07004608# capstone
4609
Richard Hendersone219c492017-09-28 09:01:23 -07004610case "$capstone" in
4611 "" | yes)
4612 if $pkg_config capstone; then
4613 capstone=system
Alexey Kardashevskiy123ac0b2018-01-15 13:35:01 +11004614 elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then
Richard Hendersone219c492017-09-28 09:01:23 -07004615 capstone=git
4616 elif test -e "${source_path}/capstone/Makefile" ; then
4617 capstone=internal
4618 elif test -z "$capstone" ; then
4619 capstone=no
4620 else
4621 feature_not_found "capstone" "Install capstone devel or git submodule"
4622 fi
4623 ;;
4624
4625 system)
4626 if ! $pkg_config capstone; then
4627 feature_not_found "capstone" "Install capstone devel"
4628 fi
4629 ;;
4630esac
4631
4632case "$capstone" in
4633 git | internal)
4634 if test "$capstone" = git; then
4635 git_submodules="${git_submodules} capstone"
4636 fi
4637 mkdir -p capstone
4638 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4639 if test "$mingw32" = "yes"; then
4640 LIBCAPSTONE=capstone.lib
4641 else
4642 LIBCAPSTONE=libcapstone.a
4643 fi
4644 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4645 ;;
4646
4647 system)
Richard Henderson8ca80762017-09-14 09:41:12 -07004648 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4649 LIBS="$($pkg_config --libs capstone) $LIBS"
Richard Hendersone219c492017-09-28 09:01:23 -07004650 ;;
4651
4652 no)
4653 ;;
4654 *)
4655 error_exit "Unknown state for capstone: $capstone"
4656 ;;
4657esac
Richard Henderson8ca80762017-09-14 09:41:12 -07004658
4659##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004660# check if we have fdatasync
4661
4662fdatasync=no
4663cat > $TMPC << EOF
4664#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004665int main(void) {
4666#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4667return fdatasync(0);
4668#else
Stefan Weile172fe12012-04-06 21:33:20 +02004669#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004670#endif
4671}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004672EOF
4673if compile_prog "" "" ; then
4674 fdatasync=yes
4675fi
4676
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004677##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004678# check if we have madvise
4679
4680madvise=no
4681cat > $TMPC << EOF
4682#include <sys/types.h>
4683#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004684#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004685int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4686EOF
4687if compile_prog "" "" ; then
4688 madvise=yes
4689fi
4690
4691##########################################
4692# check if we have posix_madvise
4693
4694posix_madvise=no
4695cat > $TMPC << EOF
4696#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004697#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004698int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4699EOF
4700if compile_prog "" "" ; then
4701 posix_madvise=yes
4702fi
4703
4704##########################################
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02004705# check if we have posix_memalign()
4706
4707posix_memalign=no
4708cat > $TMPC << EOF
4709#include <stdlib.h>
4710int main(void) {
4711 void *p;
4712 return posix_memalign(&p, 8, 8);
4713}
4714EOF
4715if compile_prog "" "" ; then
4716 posix_memalign=yes
4717fi
4718
4719##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004720# check if we have posix_syslog
4721
4722posix_syslog=no
4723cat > $TMPC << EOF
4724#include <syslog.h>
4725int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4726EOF
4727if compile_prog "" "" ; then
4728 posix_syslog=yes
4729fi
4730
4731##########################################
Peter Maydell401bc052017-09-05 13:19:32 +01004732# check if we have sem_timedwait
4733
4734sem_timedwait=no
4735cat > $TMPC << EOF
4736#include <semaphore.h>
4737int main(void) { return sem_timedwait(0, 0); }
4738EOF
4739if compile_prog "" "" ; then
4740 sem_timedwait=yes
4741fi
4742
4743##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004744# check if trace backend exists
4745
Lluís Vilanova5b808272014-05-27 15:02:14 +02004746$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004747if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004748 error_exit "invalid trace backends" \
4749 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004750fi
4751
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004752##########################################
4753# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004754if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004755 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004756#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004757int main(void) { return 0; }
4758EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004759 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004760 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004761 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004762 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004763 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004764 fi
4765 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004766 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004767 else
4768 urcu_bp_libs="-lurcu-bp"
4769 fi
4770
4771 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4772 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004773 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004774 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004775 fi
4776fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004777
4778##########################################
4779# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004780if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004781 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004782 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004783 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004784 trace_backend_stap="no"
4785 if has 'stap' ; then
4786 trace_backend_stap="yes"
4787 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004788fi
4789
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004790##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004791# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304792
Peter Maydell7c2acc72013-04-08 12:11:27 +01004793# We prefer ucontext, but it's not always possible. The fallback
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004794# is sigcontext. On Windows the only valid backend is the Windows
4795# specific one.
Peter Maydell7c2acc72013-04-08 12:11:27 +01004796
4797ucontext_works=no
4798if test "$darwin" != "yes"; then
4799 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304800#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004801#ifdef __stub_makecontext
4802#error Ignoring glibc stub makecontext which will always fail
4803#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004804int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304805EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004806 if compile_prog "" "" ; then
4807 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304808 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004809fi
4810
4811if test "$coroutine" = ""; then
4812 if test "$mingw32" = "yes"; then
4813 coroutine=win32
4814 elif test "$ucontext_works" = "yes"; then
4815 coroutine=ucontext
4816 else
4817 coroutine=sigaltstack
4818 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004819else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004820 case $coroutine in
4821 windows)
4822 if test "$mingw32" != "yes"; then
4823 error_exit "'windows' coroutine backend only valid for Windows"
4824 fi
4825 # Unfortunately the user visible backend name doesn't match the
4826 # coroutine-*.c filename for this case, so we have to adjust it here.
4827 coroutine=win32
4828 ;;
4829 ucontext)
4830 if test "$ucontext_works" != "yes"; then
4831 feature_not_found "ucontext"
4832 fi
4833 ;;
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004834 sigaltstack)
Peter Maydell7c2acc72013-04-08 12:11:27 +01004835 if test "$mingw32" = "yes"; then
4836 error_exit "only the 'windows' coroutine backend is valid for Windows"
4837 fi
4838 ;;
4839 *)
4840 error_exit "unknown coroutine backend $coroutine"
4841 ;;
4842 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304843fi
4844
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004845if test "$coroutine_pool" = ""; then
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004846 coroutine_pool=yes
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004847fi
4848
Peter Lieven7d992e42016-09-27 11:58:45 +02004849if test "$debug_stack_usage" = "yes"; then
Peter Lieven7d992e42016-09-27 11:58:45 +02004850 if test "$coroutine_pool" = "yes"; then
4851 echo "WARN: disabling coroutine pool for stack usage debugging"
4852 coroutine_pool=no
4853 fi
4854fi
4855
4856
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304857##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304858# check if we have open_by_handle_at
4859
Stefan Weil4e1797f2012-06-18 22:11:06 +02004860open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304861cat > $TMPC << EOF
4862#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004863#if !defined(AT_EMPTY_PATH)
4864# error missing definition
4865#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004866int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004867#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304868EOF
4869if compile_prog "" "" ; then
4870 open_by_handle_at=yes
4871fi
4872
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304873########################################
4874# check if we have linux/magic.h
4875
4876linux_magic_h=no
4877cat > $TMPC << EOF
4878#include <linux/magic.h>
4879int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004880 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304881}
4882EOF
4883if compile_prog "" "" ; then
4884 linux_magic_h=yes
4885fi
4886
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004887########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004888# check whether we can disable warning option with a pragma (this is needed
4889# to silence warnings in the headers of some versions of external libraries).
4890# This test has to be compiled with -Werror as otherwise an unknown pragma is
4891# only a warning.
4892#
4893# If we can't selectively disable warning in the code, disable -Werror so that
4894# the build doesn't fail anyway.
4895
Peter Maydell06d71fa2012-07-30 16:13:07 +01004896pragma_disable_unused_but_set=no
4897cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004898#pragma GCC diagnostic push
Kevin Wolfc95e3082013-02-22 21:08:51 +01004899#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004900#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004901
Peter Maydell06d71fa2012-07-30 16:13:07 +01004902int main(void) {
4903 return 0;
4904}
4905EOF
4906if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004907 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004908else
4909 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004910fi
4911
4912########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004913# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004914
4915valgrind_h=no
4916cat > $TMPC << EOF
4917#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004918int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004919 return 0;
4920}
4921EOF
4922if compile_prog "" "" ; then
4923 valgrind_h=yes
4924fi
4925
4926########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004927# check if environ is declared
4928
4929has_environ=no
4930cat > $TMPC << EOF
4931#include <unistd.h>
4932int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004933 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004934 return 0;
4935}
4936EOF
4937if compile_prog "" "" ; then
4938 has_environ=yes
4939fi
4940
Richard Henderson76a347e2012-12-28 14:17:02 -08004941########################################
4942# check if cpuid.h is usable.
4943
Richard Henderson76a347e2012-12-28 14:17:02 -08004944cat > $TMPC << EOF
4945#include <cpuid.h>
4946int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004947 unsigned a, b, c, d;
4948 int max = __get_cpuid_max(0, 0);
4949
4950 if (max >= 1) {
4951 __cpuid(1, a, b, c, d);
4952 }
4953
4954 if (max >= 7) {
4955 __cpuid_count(7, 0, a, b, c, d);
4956 }
4957
4958 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004959}
4960EOF
4961if compile_prog "" "" ; then
4962 cpuid_h=yes
4963fi
4964
Richard Henderson5dd89902017-07-18 18:40:18 -10004965##########################################
4966# avx2 optimization requirement check
4967#
4968# There is no point enabling this if cpuid.h is not usable,
4969# since we won't be able to select the new routines.
4970
4971if test $cpuid_h = yes; then
4972 cat > $TMPC << EOF
4973#pragma GCC push_options
4974#pragma GCC target("avx2")
4975#include <cpuid.h>
4976#include <immintrin.h>
4977static int bar(void *a) {
4978 __m256i x = *(__m256i *)a;
4979 return _mm256_testz_si256(x, x);
4980}
4981int main(int argc, char *argv[]) { return bar(argv[0]); }
4982EOF
4983 if compile_object "" ; then
4984 avx2_opt="yes"
4985 fi
4986fi
4987
Richard Hendersonf5401662013-02-16 12:46:59 -08004988########################################
4989# check if __[u]int128_t is usable.
4990
4991int128=no
4992cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004993#if defined(__clang_major__) && defined(__clang_minor__)
4994# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4995# error __int128_t does not work in CLANG before 3.2
4996# endif
4997#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004998__int128_t a;
4999__uint128_t b;
5000int main (void) {
5001 a = a + b;
5002 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01005003 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08005004 return 0;
5005}
5006EOF
5007if compile_prog "" "" ; then
5008 int128=yes
5009fi
Richard Henderson76a347e2012-12-28 14:17:02 -08005010
Richard Henderson7ebee432016-06-29 21:10:59 -07005011#########################################
5012# See if 128-bit atomic operations are supported.
5013
5014atomic128=no
5015if test "$int128" = "yes"; then
5016 cat > $TMPC << EOF
5017int main(void)
5018{
5019 unsigned __int128 x = 0, y = 0;
5020 y = __atomic_load_16(&x, 0);
5021 __atomic_store_16(&x, y, 0);
5022 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
5023 return 0;
5024}
5025EOF
5026 if compile_prog "" "" ; then
5027 atomic128=yes
5028 fi
5029fi
5030
Richard Hendersondf79b992016-09-02 12:23:57 -07005031#########################################
5032# See if 64-bit atomic operations are supported.
5033# Note that without __atomic builtins, we can only
5034# assume atomic loads/stores max at pointer size.
5035
5036cat > $TMPC << EOF
5037#include <stdint.h>
5038int main(void)
5039{
5040 uint64_t x = 0, y = 0;
5041#ifdef __ATOMIC_RELAXED
5042 y = __atomic_load_8(&x, 0);
5043 __atomic_store_8(&x, y, 0);
5044 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
5045 __atomic_exchange_8(&x, y, 0);
5046 __atomic_fetch_add_8(&x, y, 0);
5047#else
5048 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
5049 __sync_lock_test_and_set(&x, y);
5050 __sync_val_compare_and_swap(&x, y, 0);
5051 __sync_fetch_and_add(&x, y);
5052#endif
5053 return 0;
5054}
5055EOF
5056if compile_prog "" "" ; then
5057 atomic64=yes
5058fi
5059
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005060########################################
Richard Hendersondb432672017-09-15 14:11:45 -07005061# See if 16-byte vector operations are supported.
5062# Even without a vector unit the compiler may expand these.
5063# There is a bug in old GCC for PPC that crashes here.
5064# Unfortunately it's the system compiler for Centos 7.
5065
5066cat > $TMPC << EOF
5067typedef unsigned char U1 __attribute__((vector_size(16)));
5068typedef unsigned short U2 __attribute__((vector_size(16)));
5069typedef unsigned int U4 __attribute__((vector_size(16)));
5070typedef unsigned long long U8 __attribute__((vector_size(16)));
5071typedef signed char S1 __attribute__((vector_size(16)));
5072typedef signed short S2 __attribute__((vector_size(16)));
5073typedef signed int S4 __attribute__((vector_size(16)));
5074typedef signed long long S8 __attribute__((vector_size(16)));
5075static U1 a1, b1;
5076static U2 a2, b2;
5077static U4 a4, b4;
5078static U8 a8, b8;
5079static S1 c1;
5080static S2 c2;
5081static S4 c4;
5082static S8 c8;
5083static int i;
Laurent Vivier74912f62018-03-28 15:31:52 +02005084void helper(void *d, void *a, int shift, int i);
5085void helper(void *d, void *a, int shift, int i)
5086{
5087 *(U1 *)(d + i) = *(U1 *)(a + i) << shift;
5088 *(U2 *)(d + i) = *(U2 *)(a + i) << shift;
5089 *(U4 *)(d + i) = *(U4 *)(a + i) << shift;
5090 *(U8 *)(d + i) = *(U8 *)(a + i) << shift;
5091}
Richard Hendersondb432672017-09-15 14:11:45 -07005092int main(void)
5093{
5094 a1 += b1; a2 += b2; a4 += b4; a8 += b8;
5095 a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8;
5096 a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8;
5097 a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8;
5098 a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8;
5099 a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8;
5100 a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i;
5101 a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i;
5102 c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i;
5103 return 0;
5104}
5105EOF
5106
5107vector16=no
5108if compile_prog "" "" ; then
5109 vector16=yes
5110fi
5111
5112########################################
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005113# check if getauxval is available.
5114
5115getauxval=no
5116cat > $TMPC << EOF
5117#include <sys/auxv.h>
5118int main(void) {
5119 return getauxval(AT_HWCAP) == 0;
5120}
5121EOF
5122if compile_prog "" "" ; then
5123 getauxval=yes
5124fi
5125
John Snowfd0e6052015-03-25 18:57:39 -04005126########################################
5127# check if ccache is interfering with
5128# semantic analysis of macros
5129
John Snow5e4dfd32015-10-28 13:56:40 -04005130unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04005131ccache_cpp2=no
5132cat > $TMPC << EOF
5133static const int Z = 1;
5134#define fn() ({ Z; })
5135#define TAUT(X) ((X) == Z)
5136#define PAREN(X, Y) (X == Y)
5137#define ID(X) (X)
5138int main(int argc, char *argv[])
5139{
5140 int x = 0, y = 0;
5141 x = ID(x);
5142 x = fn();
5143 fn();
5144 if (PAREN(x, y)) return 0;
5145 if (TAUT(Z)) return 0;
5146 return 0;
5147}
5148EOF
5149
5150if ! compile_object "-Werror"; then
5151 ccache_cpp2=yes
5152fi
5153
John Snowb553a042015-11-03 15:43:42 -05005154#################################################
5155# clang does not support glibc + FORTIFY_SOURCE.
5156
5157if test "$fortify_source" != "no"; then
5158 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
5159 fortify_source="no";
Peter Maydelle1890912017-06-26 16:25:24 +01005160 elif test -n "$cxx" && has $cxx &&
John Snowcfcc7c12015-11-12 11:29:49 -05005161 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05005162 fortify_source="no";
5163 else
5164 fortify_source="yes"
5165 fi
5166fi
5167
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305168##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04005169# check if struct fsxattr is available via linux/fs.h
5170
5171have_fsxattr=no
5172cat > $TMPC << EOF
5173#include <linux/fs.h>
5174struct fsxattr foo;
5175int main(void) {
5176 return 0;
5177}
5178EOF
5179if compile_prog "" "" ; then
5180 have_fsxattr=yes
5181fi
5182
Peter Maydellb66e10e2016-06-08 18:34:32 +01005183##########################################
Paolo Bonzinia40161c2018-02-16 10:05:23 +01005184# check for usable membarrier system call
5185if test "$membarrier" = "yes"; then
5186 have_membarrier=no
5187 if test "$mingw32" = "yes" ; then
5188 have_membarrier=yes
5189 elif test "$linux" = "yes" ; then
5190 cat > $TMPC << EOF
5191 #include <linux/membarrier.h>
5192 #include <sys/syscall.h>
5193 #include <unistd.h>
5194 #include <stdlib.h>
5195 int main(void) {
5196 syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0);
5197 syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0);
5198 exit(0);
5199 }
5200EOF
5201 if compile_prog "" "" ; then
5202 have_membarrier=yes
5203 fi
5204 fi
5205 if test "$have_membarrier" = "no"; then
5206 feature_not_found "membarrier" "membarrier system call not available"
5207 fi
5208else
5209 # Do not enable it by default even for Mingw32, because it doesn't
5210 # work on Wine.
5211 membarrier=no
5212fi
5213
5214##########################################
Peter Maydellb66e10e2016-06-08 18:34:32 +01005215# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02005216have_rtnetlink=no
5217cat > $TMPC << EOF
5218#include <linux/rtnetlink.h>
5219int main(void) {
5220 return IFLA_PROTO_DOWN;
5221}
5222EOF
5223if compile_prog "" "" ; then
5224 have_rtnetlink=yes
5225fi
5226
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01005227##########################################
5228# check for usable AF_VSOCK environment
5229have_af_vsock=no
5230cat > $TMPC << EOF
5231#include <errno.h>
5232#include <sys/types.h>
5233#include <sys/socket.h>
5234#if !defined(AF_VSOCK)
5235# error missing AF_VSOCK flag
5236#endif
5237#include <linux/vm_sockets.h>
5238int main(void) {
5239 int sock, ret;
5240 struct sockaddr_vm svm;
5241 socklen_t len = sizeof(svm);
5242 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5243 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5244 if ((ret == -1) && (errno == ENOTCONN)) {
5245 return 0;
5246 }
5247 return -1;
5248}
5249EOF
5250if compile_prog "" "" ; then
5251 have_af_vsock=yes
5252fi
5253
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005254##########################################
5255# check for usable AF_ALG environment
5256hava_afalg=no
5257cat > $TMPC << EOF
5258#include <errno.h>
5259#include <sys/types.h>
5260#include <sys/socket.h>
5261#include <linux/if_alg.h>
5262int main(void) {
5263 int sock;
5264 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5265 return sock;
5266}
5267EOF
5268if compile_prog "" "" ; then
5269 have_afalg=yes
5270fi
5271if test "$crypto_afalg" = "yes"
5272then
5273 if test "$have_afalg" != "yes"
5274 then
5275 error_exit "AF_ALG requested but could not be detected"
5276 fi
5277fi
5278
5279
James Clarke6969ec62016-06-06 12:02:50 +01005280#################################################
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005281# Check to see if we have the Hypervisor framework
Peter Maydelld2d08522018-01-08 17:10:42 +00005282if [ "$darwin" = "yes" ] ; then
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005283 cat > $TMPC << EOF
5284#include <Hypervisor/hv.h>
5285int main() { return 0;}
5286EOF
5287 if ! compile_object ""; then
5288 hvf='no'
5289 else
5290 hvf='yes'
5291 LDFLAGS="-framework Hypervisor $LDFLAGS"
5292 fi
5293fi
5294
5295#################################################
James Clarke6969ec62016-06-06 12:02:50 +01005296# Sparc implicitly links with --relax, which is
5297# incompatible with -r, so --no-relax should be
5298# given. It does no harm to give it on other
5299# platforms too.
5300
5301# Note: the prototype is needed since QEMU_CFLAGS
5302# contains -Wmissing-prototypes
5303cat > $TMPC << EOF
5304extern int foo(void);
5305int foo(void) { return 0; }
5306EOF
5307if ! compile_object ""; then
5308 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5309fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01005310for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5311 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5312 LD_REL_FLAGS=$i
5313 break
5314 fi
5315done
5316if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5317 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01005318fi
5319
Jan Vesely277abf12016-04-29 13:15:23 -04005320##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05005321# check for sysmacros.h
5322
5323have_sysmacros=no
5324cat > $TMPC << EOF
5325#include <sys/sysmacros.h>
5326int main(void) {
5327 return makedev(0, 0);
5328}
5329EOF
5330if compile_prog "" "" ; then
5331 have_sysmacros=yes
5332fi
5333
5334##########################################
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005335# Veritas HyperScale block driver VxHS
5336# Check if libvxhs is installed
5337
5338if test "$vxhs" != "no" ; then
5339 cat > $TMPC <<EOF
5340#include <stdint.h>
5341#include <qnio/qnio_api.h>
5342
5343void *vxhs_callback;
5344
5345int main(void) {
5346 iio_init(QNIO_VERSION, vxhs_callback);
5347 return 0;
5348}
5349EOF
5350 vxhs_libs="-lvxhs -lssl"
5351 if compile_prog "" "$vxhs_libs" ; then
5352 vxhs=yes
5353 else
5354 if test "$vxhs" = "yes" ; then
5355 feature_not_found "vxhs block device" "Install libvxhs See github"
5356 fi
5357 vxhs=no
5358 fi
5359fi
5360
5361##########################################
Andreas Grapentin49e00a12017-03-14 17:59:53 +01005362# check for _Static_assert()
5363
5364have_static_assert=no
5365cat > $TMPC << EOF
5366_Static_assert(1, "success");
5367int main(void) {
5368 return 0;
5369}
5370EOF
5371if compile_prog "" "" ; then
5372 have_static_assert=yes
5373fi
5374
5375##########################################
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02005376# check for utmpx.h, it is missing e.g. on OpenBSD
5377
5378have_utmpx=no
5379cat > $TMPC << EOF
5380#include <utmpx.h>
5381struct utmpx user_info;
5382int main(void) {
5383 return 0;
5384}
5385EOF
5386if compile_prog "" "" ; then
5387 have_utmpx=yes
5388fi
5389
5390##########################################
Marc-André Lureau247724c2018-01-16 16:11:51 +01005391# checks for sanitizers
5392
Marc-André Lureau247724c2018-01-16 16:11:51 +01005393have_asan=no
5394have_ubsan=no
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005395have_asan_iface_h=no
5396have_asan_iface_fiber=no
Marc-André Lureau247724c2018-01-16 16:11:51 +01005397
5398if test "$sanitizers" = "yes" ; then
Marc-André Lureaub9f44da2018-02-15 22:25:47 +01005399 write_c_skeleton
Marc-André Lureau247724c2018-01-16 16:11:51 +01005400 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then
5401 have_asan=yes
5402 fi
Marc-André Lureaub9f44da2018-02-15 22:25:47 +01005403
5404 # we could use a simple skeleton for flags checks, but this also
5405 # detect the static linking issue of ubsan, see also:
5406 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285
5407 cat > $TMPC << EOF
5408#include <stdlib.h>
5409int main(void) {
5410 void *tmp = malloc(10);
5411 return *(int *)(tmp + 2);
5412}
5413EOF
Marc-André Lureau247724c2018-01-16 16:11:51 +01005414 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then
5415 have_ubsan=yes
5416 fi
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005417
5418 if check_include "sanitizer/asan_interface.h" ; then
5419 have_asan_iface_h=yes
5420 fi
5421
5422 cat > $TMPC << EOF
5423#include <sanitizer/asan_interface.h>
5424int main(void) {
5425 __sanitizer_start_switch_fiber(0, 0, 0);
5426 return 0;
5427}
5428EOF
5429 if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then
5430 have_asan_iface_fiber=yes
5431 fi
Marc-André Lureau247724c2018-01-16 16:11:51 +01005432fi
5433
5434##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02005435# End of CC checks
5436# After here, no more $cc or $ld runs
5437
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005438write_c_skeleton
5439
Blue Swirl1d728c32012-05-01 18:45:39 +00005440if test "$gcov" = "yes" ; then
5441 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5442 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05005443elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02005444 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Paolo Bonzini48e56d52018-03-06 11:32:44 +01005445elif test "$debug" = "no"; then
5446 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005447fi
Juan Quintelaa316e372009-09-30 01:10:55 +02005448
Marc-André Lureau247724c2018-01-16 16:11:51 +01005449if test "$have_asan" = "yes"; then
5450 CFLAGS="-fsanitize=address $CFLAGS"
Marc-André Lureaud83414e2018-01-16 16:11:52 +01005451 if test "$have_asan_iface_h" = "no" ; then
5452 echo "ASAN build enabled, but ASAN header missing." \
5453 "Without code annotation, the report may be inferior."
5454 elif test "$have_asan_iface_fiber" = "no" ; then
5455 echo "ASAN build enabled, but ASAN header is too old." \
5456 "Without code annotation, the report may be inferior."
5457 fi
Marc-André Lureau247724c2018-01-16 16:11:51 +01005458fi
5459if test "$have_ubsan" = "yes"; then
5460 CFLAGS="-fsanitize=undefined $CFLAGS"
5461fi
5462
Peter Lieven6542aa92014-02-03 10:26:13 +01005463##########################################
5464# Do we have libnfs
5465if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01005466 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01005467 libnfs="yes"
5468 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01005469 else
5470 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08005471 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01005472 fi
5473 libnfs="no"
5474 fi
5475fi
Blue Swirl1d728c32012-05-01 18:45:39 +00005476
Peter Maydell6ca026c2012-07-18 15:10:18 +01005477# Now we've finished running tests it's OK to add -Werror to the compiler flags
5478if test "$werror" = "yes"; then
5479 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5480fi
5481
Juan Quintelae86ecd42009-08-03 14:45:59 +02005482if test "$solaris" = "no" ; then
5483 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02005484 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005485 fi
5486fi
5487
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005488# test if pod2man has --utf8 option
5489if pod2man --help | grep -q utf8; then
5490 POD2MAN="pod2man --utf8"
5491else
5492 POD2MAN="pod2man"
5493fi
5494
Blue Swirl952afb72010-09-19 08:36:34 +00005495# Use ASLR, no-SEH and DEP if available
5496if test "$mingw32" = "yes" ; then
5497 for flag in --dynamicbase --no-seh --nxcompat; do
Christian Borntraegere9a35912017-08-23 12:16:23 +02005498 if ld_has $flag ; then
Blue Swirl952afb72010-09-19 08:36:34 +00005499 LDFLAGS="-Wl,$flag $LDFLAGS"
5500 fi
5501 done
5502fi
5503
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03005504qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08005505qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03005506qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06005507qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02005508
Kamil Rytarowskie0580342017-07-14 09:33:44 +01005509# We can only support ivshmem if we have eventfd
5510if [ "$eventfd" = "yes" ]; then
5511 ivshmem=yes
5512fi
5513
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005514tools=""
5515if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02005516 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005517 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5518 tools="qemu-nbd\$(EXESUF) $tools"
Kamil Rytarowskib1449ed2017-07-14 09:33:45 +01005519 fi
5520 if [ "$ivshmem" = "yes" ]; then
David Marchanda75eb032014-09-08 11:17:48 +02005521 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005522 fi
5523fi
5524if test "$softmmu" = yes ; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005525 if test "$linux" = yes; then
5526 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02005527 virtfs=yes
5528 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5529 else
5530 if test "$virtfs" = yes; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005531 error_exit "VirtFS requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05305532 fi
Andreas Färber17500372012-05-01 01:12:03 +02005533 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02005534 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005535 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5536 mpath=yes
5537 else
5538 if test "$mpath" = yes; then
5539 error_exit "Multipath requires libmpathpersist devel"
5540 fi
5541 mpath=no
5542 fi
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005543 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5544 else
5545 if test "$virtfs" = yes; then
5546 error_exit "VirtFS is supported only on Linux"
5547 fi
5548 virtfs=no
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005549 if test "$mpath" = yes; then
5550 error_exit "Multipath is supported only on Linux"
5551 fi
5552 mpath=no
M. Mohan Kumar17bff522011-12-14 13:58:42 +05305553 fi
Laurent Vivierff69fd82017-10-19 21:16:06 +02005554 if test "$xkbcommon" = "yes"; then
5555 tools="qemu-keymap\$(EXESUF) $tools"
5556 fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005557fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005558
5559# Probe for guest agent support/options
5560
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005561if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04005562 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05005563 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005564 guest_agent=yes
5565 elif [ "$guest_agent" != yes ]; then
5566 guest_agent=no
5567 else
5568 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02005569 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02005570fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005571
Michael Roth9d6bc272015-08-26 10:49:13 -05005572# Guest agent Window MSI package
5573
5574if test "$guest_agent" != yes; then
5575 if test "$guest_agent_msi" = yes; then
5576 error_exit "MSI guest agent package requires guest agent enabled"
5577 fi
5578 guest_agent_msi=no
5579elif test "$mingw32" != "yes"; then
5580 if test "$guest_agent_msi" = "yes"; then
5581 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5582 fi
5583 guest_agent_msi=no
5584elif ! has wixl; then
5585 if test "$guest_agent_msi" = "yes"; then
5586 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5587 fi
5588 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05005589else
5590 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5591 # disabled explicitly
5592 if test "$guest_agent_msi" != "no"; then
5593 guest_agent_msi=yes
5594 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005595fi
5596
Michael Roth1a349042015-08-26 11:14:31 -05005597if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05005598 if test "$guest_agent_with_vss" = "yes"; then
5599 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5600 fi
5601
5602 if test "$QEMU_GA_MANUFACTURER" = ""; then
5603 QEMU_GA_MANUFACTURER=QEMU
5604 fi
5605
5606 if test "$QEMU_GA_DISTRO" = ""; then
5607 QEMU_GA_DISTRO=Linux
5608 fi
5609
5610 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02005611 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05005612 fi
5613
Stefan Weil89138852016-05-16 15:10:20 +02005614 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05005615
5616 case "$cpu" in
5617 x86_64)
5618 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5619 ;;
5620 i386)
5621 QEMU_GA_MSI_ARCH="-D Arch=32"
5622 ;;
5623 *)
5624 error_exit "CPU $cpu not supported for building installation package"
5625 ;;
5626 esac
5627fi
5628
Paolo Bonzinica35f782010-05-26 16:08:29 +02005629# Mac OS X ships with a broken assembler
5630roms=
5631if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5632 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5633 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01005634 # Different host OS linkers have different ideas about the name of the ELF
Brad Smithc65d5e42017-11-07 18:46:11 -05005635 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5636 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5637 for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
Peter Maydelle57218b2016-08-08 17:11:28 +01005638 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5639 ld_i386_emulation="$emu"
5640 roms="optionrom"
5641 break
5642 fi
5643 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02005644fi
Andreas Färberd0384d12011-05-01 18:23:56 +02005645if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11005646 roms="$roms spapr-rtas"
5647fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005648
Christian Borntraeger9933c302013-04-23 01:23:03 +00005649if test "$cpu" = "s390x" ; then
5650 roms="$roms s390-ccw"
5651fi
5652
Richard Henderson964c6fa2013-06-21 19:10:16 -07005653# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005654if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005655 textseg_addr=
5656 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07005657 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5658 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07005659 textseg_addr=0x60000000
5660 ;;
5661 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07005662 # A 256M aligned address, high in the address space, with enough
5663 # room for the code_gen_buffer above it before the stack.
5664 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07005665 ;;
5666 esac
5667 if [ -n "$textseg_addr" ]; then
5668 cat > $TMPC <<EOF
5669 int main(void) { return 0; }
5670EOF
5671 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5672 if ! compile_prog "" "$textseg_ldflags"; then
5673 # In case ld does not support -Ttext-segment, edit the default linker
5674 # script via sed to set the .text start addr. This is needed on FreeBSD
5675 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005676 if ! $ld --verbose >/dev/null 2>&1; then
5677 error_exit \
5678 "We need to link the QEMU user mode binaries at a" \
5679 "specific text address. Unfortunately your linker" \
5680 "doesn't support either the -Ttext-segment option or" \
5681 "printing the default linker script with --verbose." \
5682 "If you don't want the user mode binaries, pass the" \
5683 "--disable-user option to configure."
5684 fi
5685
Richard Henderson964c6fa2013-06-21 19:10:16 -07005686 $ld --verbose | sed \
5687 -e '1,/==================================================/d' \
5688 -e '/==================================================/,$d' \
5689 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5690 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5691 textseg_ldflags="-Wl,-T../config-host.ld"
5692 fi
5693 fi
5694fi
5695
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005696# Check that the C++ compiler exists and works with the C compiler.
5697# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5698if has $cxx; then
5699 cat > $TMPC <<EOF
5700int c_function(void);
5701int main(void) { return c_function(); }
5702EOF
5703
5704 compile_object
5705
5706 cat > $TMPCXX <<EOF
5707extern "C" {
5708 int c_function(void);
5709}
5710int c_function(void) { return 42; }
5711EOF
5712
5713 update_cxxflags
5714
5715 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5716 # C++ compiler $cxx works ok with C compiler $cc
5717 :
5718 else
5719 echo "C++ compiler $cxx does not work with C compiler $cc"
5720 echo "Disabling C++ specific optional code"
5721 cxx=
5722 fi
5723else
5724 echo "No C++ compiler available; disabling C++ specific optional code"
5725 cxx=
5726fi
5727
Cole Robinson02d34f62016-05-06 14:03:09 -04005728echo_version() {
5729 if test "$1" = "yes" ; then
5730 echo "($2)"
5731 fi
5732}
5733
Jan Kiszka50e12062014-10-02 10:03:55 +02005734# prepend pixman and ftd flags after all config tests are done
5735QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03005736QEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS"
Jan Kiszka50e12062014-10-02 10:03:55 +02005737libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005738
bellard43ce4df2003-06-09 19:53:12 +00005739echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005740echo "BIOS directory $(eval echo $qemu_datadir)"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005741echo "firmware path $(eval echo $firmwarepath)"
Stefan Weil89138852016-05-16 15:10:20 +02005742echo "binary directory $(eval echo $bindir)"
5743echo "library directory $(eval echo $libdir)"
5744echo "module directory $(eval echo $qemu_moddir)"
5745echo "libexec directory $(eval echo $libexecdir)"
5746echo "include directory $(eval echo $includedir)"
5747echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005748if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005749echo "local state directory $(eval echo $local_statedir)"
5750echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005751echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005752else
5753echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005754echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005755fi
bellard5a671352003-10-01 00:13:48 +00005756echo "Source path $source_path"
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005757echo "GIT binary $git"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005758echo "GIT submodules $git_submodules"
bellard43ce4df2003-06-09 19:53:12 +00005759echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005760echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005761echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005762echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005763echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005764echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005765echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005766echo "LDFLAGS $LDFLAGS"
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03005767echo "QEMU_LDFLAGS $QEMU_LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005768echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005769echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005770echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005771if test "$slirp" = "yes" ; then
5772 echo "smbd $smbd"
5773fi
Fam Zheng17969262014-02-10 14:48:56 +08005774echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00005775echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00005776echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00005777echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +00005778echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00005779echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00005780echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00005781echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00005782echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00005783if test "$darwin" = "yes" ; then
5784 echo "Cocoa support $cocoa"
5785fi
Stefan Weil89138852016-05-16 15:10:20 +02005786echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5787echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005788echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02005789echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005790echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005791echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005792echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005793echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005794echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02005795echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005796echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005797echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00005798echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005799echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02005800echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00005801echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00005802echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005803echo "Block whitelist (rw) $block_drv_rw_whitelist"
5804echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05305805echo "VirtFS support $virtfs"
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005806echo "Multipath support $mpath"
Jes Sorensen821601e2011-03-16 13:33:36 +01005807echo "VNC support $vnc"
5808if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01005809 echo "VNC SASL support $vnc_sasl"
5810 echo "VNC JPEG support $vnc_jpeg"
5811 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01005812fi
blueswir131422552007-04-16 18:27:06 +00005813if test -n "$sparc_cpu"; then
5814 echo "Target Sparc Arch $sparc_cpu"
5815fi
aliguorie37630c2009-04-22 15:19:10 +00005816echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00005817if test "$xen" = "yes" ; then
5818 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00005819 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00005820fi
aurel322e4d9fb2008-04-08 06:01:02 +00005821echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02005822echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02005823echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02005824echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00005825echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01005826echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005827echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005828echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00005829echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02005830echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01005831echo "HAX support $hax"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005832echo "HVF support $hvf"
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08005833echo "WHPX support $whpx"
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02005834echo "TCG support $tcg"
5835if test "$tcg" = "yes" ; then
5836 echo "TCG debug enabled $debug_tcg"
5837 echo "TCG interpreter $tcg_interpreter"
5838fi
Yang Zhong5a22ab72017-12-20 21:16:46 +08005839echo "malloc trim support $malloc_trim"
Michael R. Hines2da776d2013-07-22 10:01:54 -04005840echo "RDMA support $rdma"
aurel32f652e6a2008-12-16 10:43:48 +00005841echo "fdt support $fdt"
Paolo Bonzinia40161c2018-02-16 10:05:23 +01005842echo "membarrier $membarrier"
aliguoriceb42de2009-04-07 18:43:28 +00005843echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005844echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00005845echo "madvise $madvise"
5846echo "posix_madvise $posix_madvise"
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02005847echo "posix_memalign $posix_memalign"
Corey Bryant47e98652012-01-26 09:42:26 -05005848echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005849echo "vhost-net support $vhost_net"
Gonglei042cea22018-03-01 21:46:28 +08005850echo "vhost-crypto support $vhost_crypto"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005851echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005852echo "vhost-vsock support $vhost_vsock"
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005853echo "vhost-user support $vhost_user"
Lluís Vilanova5b808272014-05-27 15:02:14 +02005854echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01005855if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01005856echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01005857fi
Stefan Weil89138852016-05-16 15:10:20 +02005858echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005859echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005860echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005861echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005862echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02005863echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005864echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005865echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005866echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01005867echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05005868echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005869echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05005870echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05005871echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03005872echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01005873echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005874echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02005875echo "debug stack usage $debug_stack_usage"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005876echo "crypto afalg $crypto_afalg"
Bharata B Raoeb100392012-09-24 14:42:45 +05305877echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00005878echo "gcov $gcov_tool"
5879echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05005880echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005881echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005882echo "TPM passthrough $tpm_passthrough"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03005883echo "TPM emulator $tpm_emulator"
Paolo Bonzini3556c232013-05-10 14:16:40 +02005884echo "QOM debugging $qom_cast_debug"
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01005885echo "Live block migration $live_block_migration"
qiaonuohan607dacd2014-02-18 14:11:30 +08005886echo "lzo support $lzo"
5887echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01005888echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005889echo "NUMA host support $numa"
Klim Kireeved279a02018-01-12 12:01:19 +03005890echo "libxml2 $libxml2"
Fam Zheng2847b462015-03-26 11:03:12 +08005891echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02005892echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08005893echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005894echo "replication support $replication"
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005895echo "VxHS block device $vxhs"
Richard Henderson8ca80762017-09-14 09:41:12 -07005896echo "capstone $capstone"
bellard67b915a2004-03-31 23:37:16 +00005897
Stefan Weil1ba16962011-07-29 22:40:45 +02005898if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00005899echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00005900fi
bellard97a847b2003-08-10 21:36:04 +00005901
Daniel P. Berrangeb7715af2017-12-12 11:34:40 +00005902if test "$gtkabi" = "2.0"; then
5903 echo
5904 echo "WARNING: Use of GTK 2.0 is deprecated and will be removed in"
5905 echo "WARNING: future releases. Please switch to using GTK 3.0"
5906fi
5907
Daniel P. Berrangee52c6ba2018-01-15 14:25:33 +00005908if test "$sdlabi" = "1.2"; then
5909 echo
5910 echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
5911 echo "WARNING: future releases. Please switch to using SDL 2.0"
5912fi
5913
Peter Maydell898be3e2017-03-21 14:31:57 +00005914if test "$supported_cpu" = "no"; then
5915 echo
5916 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5917 echo
5918 echo "CPU host architecture $cpu support is not currently maintained."
5919 echo "The QEMU project intends to remove support for this host CPU in"
5920 echo "a future release if nobody volunteers to maintain it and to"
5921 echo "provide a build host for our continuous integration setup."
5922 echo "configure has succeeded and you can continue to build, but"
5923 echo "if you care about QEMU on this platform you should contact"
5924 echo "us upstream at qemu-devel@nongnu.org."
5925fi
5926
5927if test "$supported_os" = "no"; then
5928 echo
5929 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5930 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00005931 echo "Host OS $targetos support is not currently maintained."
5932 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00005933 echo "a future release if nobody volunteers to maintain it and to"
5934 echo "provide a build host for our continuous integration setup."
5935 echo "configure has succeeded and you can continue to build, but"
5936 echo "if you care about QEMU on this platform you should contact"
5937 echo "us upstream at qemu-devel@nongnu.org."
5938fi
5939
Juan Quintela98ec69a2009-07-16 18:34:18 +02005940config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00005941
Stefan Weildbd99ae2013-01-01 18:33:44 +01005942echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5943
Juan Quintela98ec69a2009-07-16 18:34:18 +02005944echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005945echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005946
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02005947echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005948echo "prefix=$prefix" >> $config_host_mak
5949echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03005950echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04005951echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02005952echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005953echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005954echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03005955echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005956echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005957echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005958echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08005959echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005960if test "$mingw32" = "no" ; then
5961 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5962fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04005963echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06005964echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02005965echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005966echo "GIT=$git" >> $config_host_mak
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005967echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01005968echo "GIT_UPDATE=$git_update" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005969
Juan Quintela98ec69a2009-07-16 18:34:18 +02005970echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02005971
aurel32f8393942009-04-13 18:45:38 +00005972if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005973 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00005974fi
aliguori1625af82009-04-05 17:41:02 +00005975if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07005976 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00005977fi
bellard7d132992003-03-06 23:23:54 +00005978if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02005979 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005980fi
bellard67b915a2004-03-31 23:37:16 +00005981if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005982 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02005983 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00005984 version_major=${rc_version%%.*}
5985 rc_version=${rc_version#*.}
5986 version_minor=${rc_version%%.*}
5987 rc_version=${rc_version#*.}
5988 version_subminor=${rc_version%%.*}
5989 version_micro=0
5990 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5991 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005992 if test "$guest_agent_with_vss" = "yes" ; then
5993 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05005994 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005995 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5996 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05005997 if test "$guest_agent_ntddscsi" = "yes" ; then
5998 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5999 fi
Michael Roth1a349042015-08-26 11:14:31 -05006000 if test "$guest_agent_msi" = "yes"; then
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08006001 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
Yossi Hindin9dacf322015-05-06 14:57:40 +03006002 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
6003 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
6004 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
6005 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
6006 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
6007 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
6008 fi
pbrook210fa552007-02-27 21:04:49 +00006009else
Juan Quintela35f4df22009-07-27 16:13:07 +02006010 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00006011fi
blueswir1128ab2f2008-08-15 18:33:42 +00006012
Mark McLoughlindffcb712009-10-22 17:49:11 +01006013if test "$linux" = "yes" ; then
6014 echo "CONFIG_LINUX=y" >> $config_host_mak
6015fi
6016
bellard83fb7ad2004-07-05 21:25:26 +00006017if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006018 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00006019fi
malcb29fe3e2008-11-18 01:42:22 +00006020
bellardec530c82006-04-25 22:36:06 +00006021if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006022 echo "CONFIG_SOLARIS=y" >> $config_host_mak
bellardec530c82006-04-25 22:36:06 +00006023fi
Andreas Färber179cf402010-09-20 00:50:43 +02006024if test "$haiku" = "yes" ; then
6025 echo "CONFIG_HAIKU=y" >> $config_host_mak
6026fi
bellard97a847b2003-08-10 21:36:04 +00006027if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006028 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00006029fi
Stefan Weil1ba16962011-07-29 22:40:45 +02006030if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006031 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00006032fi
bellardc20709a2004-04-21 23:27:19 +00006033if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006034 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04006035 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00006036fi
ths8a16d272008-07-19 09:56:24 +00006037if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006038 echo "CONFIG_VDE=y" >> $config_host_mak
Fam Zhenge2ad6f12017-09-07 16:35:52 +08006039 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00006040fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01006041if test "$netmap" = "yes" ; then
6042 echo "CONFIG_NETMAP=y" >> $config_host_mak
6043fi
Gonglei015a33b2014-07-01 20:58:08 +08006044if test "$l2tpv3" = "yes" ; then
6045 echo "CONFIG_L2TPV3=y" >> $config_host_mak
6046fi
Corey Bryant47e98652012-01-26 09:42:26 -05006047if test "$cap_ng" = "yes" ; then
6048 echo "CONFIG_LIBCAP=y" >> $config_host_mak
6049fi
Juan Quintela2358a492009-07-27 16:13:25 +02006050echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00006051for drv in $audio_drv_list; do
Gerd Hoffmann1ef1ec22018-03-01 11:05:46 +01006052 def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Gerd Hoffmannce3dc032018-03-06 08:40:50 +01006053 case "$drv" in
Gerd Hoffmann051c7d52018-03-06 08:40:53 +01006054 alsa | oss | pa | sdl)
Gerd Hoffmannce3dc032018-03-06 08:40:50 +01006055 echo "$def=m" >> $config_host_mak ;;
6056 *)
6057 echo "$def=y" >> $config_host_mak ;;
6058 esac
malc0c58ac12008-06-25 21:04:05 +00006059done
Fam Zhengb1149912017-09-07 16:29:13 +08006060echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
6061echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
6062echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
6063echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
6064echo "OSS_LIBS=$oss_libs" >> $config_host_mak
Juan Quintela67f86e82009-08-03 14:46:59 +02006065if test "$audio_pt_int" = "yes" ; then
6066 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
6067fi
malcd5631632009-10-10 01:13:41 +04006068if test "$audio_win_int" = "yes" ; then
6069 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
6070fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08006071echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
6072echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01006073if test "$vnc" = "yes" ; then
6074 echo "CONFIG_VNC=y" >> $config_host_mak
6075fi
aliguori2f9606b2009-03-06 20:27:28 +00006076if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006077 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00006078fi
Jes Sorensen821601e2011-03-16 13:33:36 +01006079if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02006080 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02006081fi
Jes Sorensen821601e2011-03-16 13:33:36 +01006082if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02006083 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02006084fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02006085if test "$xkbcommon" = "yes" ; then
6086 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
6087 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
6088fi
aliguori76655d62009-03-06 20:27:37 +00006089if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006090 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00006091fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01006092if test "$xfs" = "yes" ; then
6093 echo "CONFIG_XFS=y" >> $config_host_mak
6094fi
Stefan Weil89138852016-05-16 15:10:20 +02006095qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02006096echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02006097echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006098echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006099echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02006100if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006101 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00006102fi
Fam Zheng17969262014-02-10 14:48:56 +08006103if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08006104 # $shacmd can generate a hash started with digit, which the compiler doesn't
6105 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02006106 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006107 echo "CONFIG_MODULES=y" >> $config_host_mak
6108fi
Gerd Hoffmann87815952018-03-01 11:05:42 +01006109if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
6110 echo "CONFIG_X11=y" >> $config_host_mak
6111 echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak
6112 echo "X11_LIBS=$x11_libs" >> $config_host_mak
6113fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02006114if test "$sdl" = "yes" ; then
Gerd Hoffmann96400a12018-03-01 11:05:47 +01006115 echo "CONFIG_SDL=m" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04006116 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02006117 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
Fam Zheng8ecc89f2017-09-07 16:29:11 +08006118 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00006119fi
6120if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006121 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00006122fi
6123if test "$curses" = "yes" ; then
Gerd Hoffmann2373f7d2018-03-01 11:05:45 +01006124 echo "CONFIG_CURSES=m" >> $config_host_mak
6125 echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak
6126 echo "CURSES_LIBS=$curses_lib" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00006127fi
Riku Voipio099d6b02009-05-05 12:10:04 +03006128if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006129 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03006130fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01006131if test "$accept4" = "yes" ; then
6132 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
6133fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05306134if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006135 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05306136fi
Riku Voipioc2882b92009-08-12 15:08:24 +03006137if test "$eventfd" = "yes" ; then
6138 echo "CONFIG_EVENTFD=y" >> $config_host_mak
6139fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02006140if test "$memfd" = "yes" ; then
6141 echo "CONFIG_MEMFD=y" >> $config_host_mak
6142fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03006143if test "$fallocate" = "yes" ; then
6144 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
6145fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01006146if test "$fallocate_punch_hole" = "yes" ; then
6147 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
6148fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03006149if test "$fallocate_zero_range" = "yes" ; then
6150 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
6151fi
Kevin Wolfed911432014-09-29 17:12:59 +02006152if test "$posix_fallocate" = "yes" ; then
6153 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
6154fi
Peter Maydellc727f472011-01-06 11:05:10 +00006155if test "$sync_file_range" = "yes" ; then
6156 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
6157fi
Peter Maydelldace20d2011-01-10 13:11:24 +00006158if test "$fiemap" = "yes" ; then
6159 echo "CONFIG_FIEMAP=y" >> $config_host_mak
6160fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03006161if test "$dup3" = "yes" ; then
6162 echo "CONFIG_DUP3=y" >> $config_host_mak
6163fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01006164if test "$ppoll" = "yes" ; then
6165 echo "CONFIG_PPOLL=y" >> $config_host_mak
6166fi
Alex Blighcd758dd2013-08-21 16:02:44 +01006167if test "$prctl_pr_set_timerslack" = "yes" ; then
6168 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
6169fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00006170if test "$epoll" = "yes" ; then
6171 echo "CONFIG_EPOLL=y" >> $config_host_mak
6172fi
6173if test "$epoll_create1" = "yes" ; then
6174 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
6175fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00006176if test "$sendfile" = "yes" ; then
6177 echo "CONFIG_SENDFILE=y" >> $config_host_mak
6178fi
Riku Voipio51834342014-06-22 11:25:42 +01006179if test "$timerfd" = "yes" ; then
6180 echo "CONFIG_TIMERFD=y" >> $config_host_mak
6181fi
Riku Voipio9af5c902014-08-12 15:58:57 +03006182if test "$setns" = "yes" ; then
6183 echo "CONFIG_SETNS=y" >> $config_host_mak
6184fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02006185if test "$clock_adjtime" = "yes" ; then
6186 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
6187fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02006188if test "$syncfs" = "yes" ; then
6189 echo "CONFIG_SYNCFS=y" >> $config_host_mak
6190fi
aurel323b3f24a2009-04-15 16:12:13 +00006191if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006192 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00006193fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00006194if test "$inotify1" = "yes" ; then
6195 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
6196fi
Peter Maydell401bc052017-09-05 13:19:32 +01006197if test "$sem_timedwait" = "yes" ; then
6198 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
6199fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02006200if test "$byteswap_h" = "yes" ; then
6201 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
6202fi
6203if test "$bswap_h" = "yes" ; then
6204 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
6205fi
Alexander Graf769ce762009-05-11 17:41:42 +02006206if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006207 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02006208 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006209 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02006210fi
aurel322e4d9fb2008-04-08 06:01:02 +00006211if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006212 echo "CONFIG_BRLAPI=y" >> $config_host_mak
Fam Zheng8eca2882017-09-07 16:47:00 +08006213 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00006214fi
balrogfb599c92008-09-28 23:49:55 +00006215if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006216 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02006217 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00006218fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01006219if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03006220 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
6221fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006222if test "$gtk" = "yes" ; then
Gerd Hoffmanne0fb1292018-03-01 11:05:44 +01006223 echo "CONFIG_GTK=m" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04006224 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006225 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006226 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02006227 if test "$gtk_gl" = "yes" ; then
6228 echo "CONFIG_GTK_GL=y" >> $config_host_mak
6229 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006230fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01006231echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01006232if test "$gnutls" = "yes" ; then
6233 echo "CONFIG_GNUTLS=y" >> $config_host_mak
6234fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09006235if test "$gnutls_rnd" = "yes" ; then
6236 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
6237fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006238if test "$gcrypt" = "yes" ; then
6239 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08006240 if test "$gcrypt_hmac" = "yes" ; then
6241 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
6242 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01006243 if test "$gcrypt_kdf" = "yes" ; then
6244 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
6245 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01006246fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01006247if test "$nettle" = "yes" ; then
6248 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02006249 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01006250 if test "$nettle_kdf" = "yes" ; then
6251 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
6252 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01006253fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01006254if test "$tasn1" = "yes" ; then
6255 echo "CONFIG_TASN1=y" >> $config_host_mak
6256fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00006257if test "$have_ifaddrs_h" = "yes" ; then
6258 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6259fi
Eric Blake6b39b062016-10-11 10:46:23 -05006260if test "$have_broken_size_max" = "yes" ; then
6261 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6262fi
Jan Vesely277abf12016-04-29 13:15:23 -04006263
6264# Work around a system header bug with some kernel/XFS header
6265# versions where they both try to define 'struct fsxattr':
6266# xfs headers will not try to redefine structs from linux headers
6267# if this macro is set.
6268if test "$have_fsxattr" = "yes" ; then
6269 echo "HAVE_FSXATTR=y" >> $config_host_mak
6270fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006271if test "$vte" = "yes" ; then
6272 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006273 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
Gerd Hoffmanne0fb1292018-03-01 11:05:44 +01006274 echo "VTE_LIBS=$vte_libs" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006275fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02006276if test "$virglrenderer" = "yes" ; then
6277 echo "CONFIG_VIRGL=y" >> $config_host_mak
6278 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6279 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6280fi
aliguorie37630c2009-04-22 15:19:10 +00006281if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02006282 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00006283 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00006284 if test "$xen_pv_domain_build" = "yes" ; then
6285 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6286 fi
aliguorie37630c2009-04-22 15:19:10 +00006287fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02006288if test "$linux_aio" = "yes" ; then
6289 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6290fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006291if test "$attr" = "yes" ; then
6292 echo "CONFIG_ATTR=y" >> $config_host_mak
6293fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02006294if test "$libattr" = "yes" ; then
6295 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6296fi
Meador Inge983eef52012-02-24 14:00:42 +05306297if test "$virtfs" = "yes" ; then
6298 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006299fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006300if test "$mpath" = "yes" ; then
6301 echo "CONFIG_MPATH=y" >> $config_host_mak
6302fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00006303if test "$vhost_scsi" = "yes" ; then
6304 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6305fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006306if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03006307 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6308fi
Gonglei042cea22018-03-01 21:46:28 +08006309if test "$vhost_crypto" = "yes" ; then
6310 echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak
6311fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01006312if test "$vhost_vsock" = "yes" ; then
6313 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6314fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006315if test "$vhost_user" = "yes" ; then
6316 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6317fi
ths77755342008-11-27 15:45:16 +00006318if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006319 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00006320fi
aliguoribf9298b2008-12-05 20:05:26 +00006321if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006322 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00006323fi
aliguoriceb42de2009-04-07 18:43:28 +00006324if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006325 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00006326fi
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03006327if test "$fdt" != "no" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02006328 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00006329fi
Paolo Bonzinia40161c2018-02-16 10:05:23 +01006330if test "$membarrier" = "yes" ; then
6331 echo "CONFIG_MEMBARRIER=y" >> $config_host_mak
6332fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03006333if test "$signalfd" = "yes" ; then
6334 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6335fi
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006336if test "$tcg" = "yes"; then
6337 echo "CONFIG_TCG=y" >> $config_host_mak
6338 if test "$tcg_interpreter" = "yes" ; then
6339 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6340 fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02006341fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006342if test "$fdatasync" = "yes" ; then
6343 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6344fi
Andreas Färbere78815a2010-09-25 11:26:05 +00006345if test "$madvise" = "yes" ; then
6346 echo "CONFIG_MADVISE=y" >> $config_host_mak
6347fi
6348if test "$posix_madvise" = "yes" ; then
6349 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6350fi
Andreas Gustafsson9bc5a712018-01-04 19:39:36 +02006351if test "$posix_memalign" = "yes" ; then
6352 echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak
6353fi
bellard97a847b2003-08-10 21:36:04 +00006354
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01006355if test "$spice" = "yes" ; then
6356 echo "CONFIG_SPICE=y" >> $config_host_mak
6357fi
6358
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006359if test "$smartcard" = "yes" ; then
6360 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Fam Zheng7b62bf52017-09-07 16:29:16 +08006361 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6362 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02006363fi
6364
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006365if test "$libusb" = "yes" ; then
6366 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
Fam Zhengb878b652017-09-07 16:29:17 +08006367 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6368 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006369fi
6370
Hans de Goede69354a82011-07-19 11:04:10 +02006371if test "$usb_redir" = "yes" ; then
6372 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
Fam Zhengcc7923f2017-09-07 16:29:18 +08006373 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6374 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
Hans de Goede69354a82011-07-19 11:04:10 +02006375fi
6376
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006377if test "$opengl" = "yes" ; then
6378 echo "CONFIG_OPENGL=y" >> $config_host_mak
6379 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006380 if test "$opengl_dmabuf" = "yes" ; then
6381 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6382 fi
Michael Walle20ff0752011-03-07 23:32:39 +01006383fi
6384
Yang Zhong5a22ab72017-12-20 21:16:46 +08006385if test "$malloc_trim" = "yes" ; then
6386 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6387fi
6388
Liang Li99f2dbd2016-03-08 13:53:16 +08006389if test "$avx2_opt" = "yes" ; then
6390 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6391fi
6392
qiaonuohan607dacd2014-02-18 14:11:30 +08006393if test "$lzo" = "yes" ; then
6394 echo "CONFIG_LZO=y" >> $config_host_mak
6395fi
6396
6397if test "$snappy" = "yes" ; then
6398 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6399fi
6400
Peter Wu6b383c02015-01-06 18:48:14 +01006401if test "$bzip2" = "yes" ; then
6402 echo "CONFIG_BZIP2=y" >> $config_host_mak
6403 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6404fi
6405
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006406if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006407 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006408 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6409 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006410fi
6411
Peter Lieven6542aa92014-02-03 10:26:13 +01006412if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04006413 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6414 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01006415fi
6416
Eduardo Otubof7945732012-08-14 18:44:05 -03006417if test "$seccomp" = "yes"; then
6418 echo "CONFIG_SECCOMP=y" >> $config_host_mak
Fam Zhengc3883e12017-09-07 16:53:16 +08006419 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6420 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
Eduardo Otubof7945732012-08-14 18:44:05 -03006421fi
6422
bellard83fb7ad2004-07-05 21:25:26 +00006423# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00006424if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006425 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00006426fi
6427
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01006428if test "$localtime_r" = "yes" ; then
6429 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6430fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02006431if test "$qom_cast_debug" = "yes" ; then
6432 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6433fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006434if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006435 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006436 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6437 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006438fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06006439
Peter Maydell7c2acc72013-04-08 12:11:27 +01006440echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006441if test "$coroutine_pool" = "yes" ; then
6442 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6443else
6444 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6445fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05306446
Peter Lieven7d992e42016-09-27 11:58:45 +02006447if test "$debug_stack_usage" = "yes" ; then
6448 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6449fi
6450
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006451if test "$crypto_afalg" = "yes" ; then
6452 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6453fi
6454
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05306455if test "$open_by_handle_at" = "yes" ; then
6456 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6457fi
6458
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05306459if test "$linux_magic_h" = "yes" ; then
6460 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6461fi
6462
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01006463if test "$pragma_diagnostic_available" = "yes" ; then
6464 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01006465fi
6466
Kevin Wolf3f4349d2012-06-29 13:40:27 +02006467if test "$valgrind_h" = "yes" ; then
6468 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6469fi
6470
Marc-André Lureaud83414e2018-01-16 16:11:52 +01006471if test "$have_asan_iface_fiber" = "yes" ; then
6472 echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak
6473fi
6474
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03006475if test "$has_environ" = "yes" ; then
6476 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6477fi
6478
Richard Henderson76a347e2012-12-28 14:17:02 -08006479if test "$cpuid_h" = "yes" ; then
6480 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6481fi
6482
Richard Hendersonf5401662013-02-16 12:46:59 -08006483if test "$int128" = "yes" ; then
6484 echo "CONFIG_INT128=y" >> $config_host_mak
6485fi
6486
Richard Henderson7ebee432016-06-29 21:10:59 -07006487if test "$atomic128" = "yes" ; then
6488 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6489fi
6490
Richard Hendersondf79b992016-09-02 12:23:57 -07006491if test "$atomic64" = "yes" ; then
6492 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6493fi
6494
Richard Hendersondb432672017-09-15 14:11:45 -07006495if test "$vector16" = "yes" ; then
6496 echo "CONFIG_VECTOR16=y" >> $config_host_mak
6497fi
6498
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08006499if test "$getauxval" = "yes" ; then
6500 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6501fi
6502
Bharata B Raoeb100392012-09-24 14:42:45 +05306503if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006504 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006505 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6506 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05306507fi
6508
Jeff Codyd85fa9e2016-04-05 10:40:09 -04006509if test "$glusterfs_xlator_opt" = "yes" ; then
6510 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6511fi
6512
Bharata B Rao0c14fb42013-07-16 21:47:42 +05306513if test "$glusterfs_discard" = "yes" ; then
6514 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6515fi
6516
Niels de Vosdf3a4292017-05-28 12:01:14 +05306517if test "$glusterfs_fallocate" = "yes" ; then
6518 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6519fi
6520
Bharata B Rao7c815372013-12-21 14:51:25 +05306521if test "$glusterfs_zerofill" = "yes" ; then
6522 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6523fi
6524
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006525if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006526 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006527 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6528 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006529fi
6530
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006531if test "$live_block_migration" = "yes" ; then
6532 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6533fi
6534
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006535if test "$tpm" = "yes"; then
6536 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006537 # TPM passthrough support?
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006538 if test "$tpm_passthrough" = "yes"; then
6539 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6540 fi
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006541 # TPM emulator support?
6542 if test "$tpm_emulator" = "yes"; then
6543 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6544 fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006545fi
6546
Lluís Vilanova5b808272014-05-27 15:02:14 +02006547echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6548if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02006549 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05306550fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006551if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02006552 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6553 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02006554 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01006555fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03006556if have_backend "log"; then
6557 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02006558fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006559if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02006560 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6561fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006562if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02006563 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6564 if test "$trace_backend_stap" = "yes" ; then
6565 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6566 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00006567fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006568if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006569 if test "$linux" = "yes" ; then
6570 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006571 else
Stewart Smith21684af2014-01-24 12:39:10 +11006572 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006573 fi
6574fi
Paul Durrant0a852412016-08-04 14:44:14 +01006575if have_backend "syslog"; then
6576 if test "$posix_syslog" = "yes" ; then
6577 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6578 else
6579 feature_not_found "syslog(trace backend)" "syslog not available"
6580 fi
6581fi
Prerna Saxena9410b562010-07-13 09:26:32 +01006582echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6583
Michael R. Hines2da776d2013-07-22 10:01:54 -04006584if test "$rdma" = "yes" ; then
6585 echo "CONFIG_RDMA=y" >> $config_host_mak
Fam Zheng392fb642017-09-07 16:42:30 +08006586 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
Michael R. Hines2da776d2013-07-22 10:01:54 -04006587fi
6588
Laurent Vivier575b22b2016-06-02 22:14:15 +02006589if test "$have_rtnetlink" = "yes" ; then
6590 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6591fi
6592
Klim Kireeved279a02018-01-12 12:01:19 +03006593if test "$libxml2" = "yes" ; then
6594 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6595 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6596 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6597fi
6598
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006599if test "$replication" = "yes" ; then
6600 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6601fi
6602
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01006603if test "$have_af_vsock" = "yes" ; then
6604 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6605fi
6606
Christopher Covington4d043512016-12-28 15:04:33 -05006607if test "$have_sysmacros" = "yes" ; then
6608 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6609fi
6610
Andreas Grapentin49e00a12017-03-14 17:59:53 +01006611if test "$have_static_assert" = "yes" ; then
6612 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6613fi
6614
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02006615if test "$have_utmpx" = "yes" ; then
6616 echo "HAVE_UTMPX=y" >> $config_host_mak
6617fi
6618
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006619if test "$ivshmem" = "yes" ; then
6620 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6621fi
Richard Hendersone219c492017-09-28 09:01:23 -07006622if test "$capstone" != "no" ; then
Richard Henderson8ca80762017-09-14 09:41:12 -07006623 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6624fi
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006625
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00006626# Hold two types of flag:
6627# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6628# a thread we have a handle to
6629# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6630# platform
6631if test "$pthread_setname_np" = "yes" ; then
6632 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6633 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6634fi
6635
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006636if test "$vxhs" = "yes" ; then
6637 echo "CONFIG_VXHS=y" >> $config_host_mak
6638 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6639fi
6640
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006641if test "$tcg_interpreter" = "yes"; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006642 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006643elif test "$ARCH" = "sparc64" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006644 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006645elif test "$ARCH" = "s390x" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006646 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006647elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006648 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07006649elif test "$ARCH" = "ppc64" ; then
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006650 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006651else
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006652 QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006653fi
Michael S. Tsirkin9edc19c2018-03-21 17:22:07 +02006654QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006655
Juan Quintela98ec69a2009-07-16 18:34:18 +02006656echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006657echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006658echo "MAKE=$make" >> $config_host_mak
6659echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04006660echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6661echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03006662echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6663echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00006664echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006665echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006666if $iasl -h > /dev/null 2>&1; then
6667 echo "IASL=$iasl" >> $config_host_mak
6668fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02006669echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006670echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04006671echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01006672echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006673echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01006674echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006675echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006676echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006677echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006678echo "OBJCOPY=$objcopy" >> $config_host_mak
6679echo "LD=$ld" >> $config_host_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006680echo "RANLIB=$ranlib" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02006681echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00006682echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006683echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006684echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02006685echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01006686echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01006687echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006688if test "$sparse" = "yes" ; then
6689 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01006690 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02006691 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006692 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6693 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6694fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01006695if test "$cross_prefix" != ""; then
6696 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6697else
6698 echo "AUTOCONF_HOST := " >> $config_host_mak
6699fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006700echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006701echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Philippe Mathieu-Daudé8a99e9a2018-04-15 20:05:19 -03006702echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01006703echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01006704echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02006705echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02006706echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01006707echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006708echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006709echo "DSOSUF=$DSOSUF" >> $config_host_mak
6710echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05006711echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01006712echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6713echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02006714echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01006715echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00006716if test "$gcov" = "yes" ; then
6717 echo "CONFIG_GCOV=y" >> $config_host_mak
6718 echo "GCOV=$gcov_tool" >> $config_host_mak
6719fi
Juan Quintela804edf22009-07-27 16:12:49 +02006720
Peter Maydell6efd7512011-11-30 11:59:04 +00006721# use included Linux headers
6722if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00006723 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00006724 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006725 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01006726 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00006727 ;;
6728 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01006729 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00006730 ;;
6731 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01006732 linux_arch=s390
6733 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01006734 aarch64)
6735 linux_arch=arm64
6736 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01006737 mips64)
6738 linux_arch=mips
6739 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01006740 *)
6741 # For most CPUs the kernel architecture name and QEMU CPU name match.
6742 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00006743 ;;
6744 esac
Peter Maydell08312a62012-08-03 13:51:25 +01006745 # For non-KVM architectures we will not have asm headers
6746 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6747 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
6748 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00006749fi
6750
bellard1d14ffa2005-10-30 18:58:22 +00006751for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00006752target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02006753config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02006754target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00006755target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02006756
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006757case "$target_name" in
Michael Weiser722dd7b2018-01-11 13:25:32 +00006758 armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
Juan Quintelaea2d6a32009-07-16 18:34:10 +02006759 target_bigendian=yes
6760 ;;
6761esac
bellard97a847b2003-08-10 21:36:04 +00006762target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00006763target_user_only="no"
ths831b7822007-01-18 20:06:33 +00006764target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00006765target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00006766case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006767 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00006768 target_softmmu="yes"
6769 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006770 ${target_name}-linux-user)
pbrook9e407a82007-05-26 16:38:53 +00006771 target_user_only="yes"
6772 target_linux_user="yes"
6773 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006774 ${target_name}-bsd-user)
blueswir184778502008-10-26 20:33:16 +00006775 target_user_only="yes"
6776 target_bsd_user="yes"
6777 ;;
pbrook9e407a82007-05-26 16:38:53 +00006778 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006779 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00006780 exit 1
6781 ;;
6782esac
ths831b7822007-01-18 20:06:33 +00006783
bellard97a847b2003-08-10 21:36:04 +00006784mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02006785echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006786
pbrooke5fe0c52006-06-11 13:32:59 +00006787bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00006788mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02006789interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00006790gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00006791
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006792TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02006793TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02006794TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02006795
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006796case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00006797 i386)
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006798 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006799 ;;
6800 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006801 TARGET_BASE_ARCH=i386
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006802 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006803 ;;
6804 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11006805 mttcg="yes"
aurel322408a522008-04-20 20:19:44 +00006806 ;;
6807 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006808 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00006809 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006810 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00006811 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00006812 ;;
Michael Weiser722dd7b2018-01-11 13:25:32 +00006813 aarch64|aarch64_be)
6814 TARGET_ARCH=aarch64
Alexander Graf6a49fa92013-09-03 20:12:22 +01006815 TARGET_BASE_ARCH=arm
6816 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006817 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01006818 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
Alexander Graf6a49fa92013-09-03 20:12:22 +01006819 ;;
aurel322408a522008-04-20 20:19:44 +00006820 cris)
aurel322408a522008-04-20 20:19:44 +00006821 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08006822 hppa)
Richard Henderson7b93dab2018-01-06 16:02:27 -08006823 mttcg="yes"
Richard Henderson61766fe2016-12-15 11:26:14 -08006824 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01006825 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01006826 ;;
aurel322408a522008-04-20 20:19:44 +00006827 m68k)
aurel322408a522008-04-20 20:19:44 +00006828 bflt="yes"
Laurent Vivier5a4526b2017-06-20 22:51:19 +02006829 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
aurel322408a522008-04-20 20:19:44 +00006830 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006831 microblaze|microblazeel)
6832 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006833 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006834 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02006835 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006836 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006837 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006838 ;;
6839 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08006840 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006841 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006842 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08006843 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006844 ;;
6845 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006846 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006847 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006848 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006849 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006850 moxie)
6851 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006852 nios2)
6853 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006854 or1k)
Jia Liue67db062012-07-20 15:50:39 +08006855 TARGET_ARCH=openrisc
6856 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08006857 ;;
aurel322408a522008-04-20 20:19:44 +00006858 ppc)
aurel32c8b35322009-01-24 15:07:34 +00006859 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006860 ;;
6861 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006862 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006863 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00006864 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006865 ;;
6866 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006867 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006868 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306869 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006870 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006871 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05006872 ppc64le)
6873 TARGET_ARCH=ppc64
6874 TARGET_BASE_ARCH=ppc
6875 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306876 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006877 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
Doug Kwan9c351262014-05-29 09:12:21 -05006878 ;;
aurel322408a522008-04-20 20:19:44 +00006879 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006880 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006881 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006882 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02006883 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01006884 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006885 ;;
Michael Clark25fa1942018-03-03 01:32:59 +13006886 riscv32)
6887 TARGET_BASE_ARCH=riscv
6888 TARGET_ABI_DIR=riscv
6889 mttcg=yes
6890 ;;
6891 riscv64)
6892 TARGET_BASE_ARCH=riscv
6893 TARGET_ABI_DIR=riscv
6894 mttcg=yes
6895 ;;
aurel322408a522008-04-20 20:19:44 +00006896 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006897 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00006898 bflt="yes"
6899 ;;
6900 sparc)
aurel322408a522008-04-20 20:19:44 +00006901 ;;
6902 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006903 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00006904 ;;
6905 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006906 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006907 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006908 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02006909 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006910 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006911 s390x)
David Hildenbrand63685bc2018-01-29 13:56:20 +01006912 mttcg=yes
Christian Borntraeger86158a22017-03-08 12:41:14 +01006913 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01006914 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08006915 tilegx)
6916 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07006917 tricore)
6918 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006919 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006920 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006921 xtensa|xtensaeb)
6922 TARGET_ARCH=xtensa
Max Filippov9fb40342017-03-06 17:17:43 -08006923 mttcg="yes"
Max Filippovcfa550c2011-09-06 03:55:26 +04006924 ;;
aurel322408a522008-04-20 20:19:44 +00006925 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006926 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00006927 ;;
6928esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006929# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6930if [ "$TARGET_BASE_ARCH" = "" ]; then
6931 TARGET_BASE_ARCH=$TARGET_ARCH
6932fi
6933
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006934symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6935
Daniel P. Berrange99afc912012-08-20 15:31:38 +01006936upper() {
6937 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6938}
6939
Stefan Weil89138852016-05-16 15:10:20 +02006940target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02006941echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006942echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02006943echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02006944if [ "$TARGET_ABI_DIR" = "" ]; then
6945 TARGET_ABI_DIR=$TARGET_ARCH
6946fi
Juan Quintela25be2102009-10-07 02:41:00 +02006947echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07006948if [ "$HOST_VARIANT_DIR" != "" ]; then
6949 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6950fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006951
6952if supported_xen_target $target; then
6953 echo "CONFIG_XEN=y" >> $config_target_mak
6954 if test "$xen_pci_passthrough" = yes; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00006955 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006956 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006957fi
6958if supported_kvm_target $target; then
6959 echo "CONFIG_KVM=y" >> $config_target_mak
6960 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006961 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006962 if test "$vhost_user" = "yes" ; then
6963 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6964 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02006965 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006966fi
6967if supported_hax_target $target; then
6968 echo "CONFIG_HAX=y" >> $config_target_mak
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006969fi
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05006970if supported_hvf_target $target; then
6971 echo "CONFIG_HVF=y" >> $config_target_mak
6972fi
Justin Terry (VM)d661d9a2018-01-22 13:07:46 -08006973if supported_whpx_target $target; then
6974 echo "CONFIG_WHPX=y" >> $config_target_mak
6975fi
bellardde83cd02003-06-15 20:25:43 +00006976if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006977 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006978fi
6979if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006980 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00006981 if test "$mttcg" = "yes" ; then
6982 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6983 fi
bellardde83cd02003-06-15 20:25:43 +00006984fi
bellard997344f2003-10-27 21:10:39 +00006985if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006986 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01006987 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00006988fi
ths831b7822007-01-18 20:06:33 +00006989if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006990 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00006991fi
pbrook56aebc82008-10-11 17:55:29 +00006992list=""
6993if test ! -z "$gdb_xml_files" ; then
6994 for x in $gdb_xml_files; do
6995 list="$list $source_path/gdb-xml/$x"
6996 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02006997 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00006998fi
bellardde83cd02003-06-15 20:25:43 +00006999
pbrooke5fe0c52006-06-11 13:32:59 +00007000if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02007001 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00007002fi
blueswir184778502008-10-26 20:33:16 +00007003if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007004 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00007005fi
bellard5b0753e2005-03-01 21:37:28 +00007006
Juan Quintela4afddb52009-08-03 14:46:45 +02007007# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02007008
Juan Quintela4afddb52009-08-03 14:46:45 +02007009cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02007010ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02007011
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007012disas_config() {
7013 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
7014 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
7015}
7016
Juan Quintela64656022009-08-03 14:46:53 +02007017for i in $ARCH $TARGET_BASE_ARCH ; do
7018 case "$i" in
7019 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007020 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02007021 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05007022 aarch64)
7023 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007024 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05007025 fi
7026 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007027 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007028 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00007029 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007030 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00007031 fi
Juan Quintela64656022009-08-03 14:46:53 +02007032 ;;
7033 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007034 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02007035 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07007036 hppa)
7037 disas_config "HPPA"
7038 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07007039 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007040 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02007041 ;;
Michael Walle79368f42012-03-31 19:54:20 +02007042 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007043 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02007044 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007045 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007046 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02007047 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01007048 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007049 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02007050 ;;
7051 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007052 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02007053 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04007054 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007055 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04007056 ;;
Marek Vasute6717112017-01-18 23:01:46 +01007057 nios2)
7058 disas_config "NIOS2"
7059 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08007060 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007061 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08007062 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007063 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007064 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02007065 ;;
Michael Clark25fa1942018-03-03 01:32:59 +13007066 riscv)
7067 disas_config "RISCV"
7068 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01007069 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007070 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02007071 ;;
7072 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007073 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02007074 ;;
7075 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007076 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02007077 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04007078 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007079 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04007080 ;;
Juan Quintela64656022009-08-03 14:46:53 +02007081 esac
7082done
Stefan Weil9195b2c2011-10-19 07:07:18 +02007083if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07007084 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02007085fi
Juan Quintela64656022009-08-03 14:46:53 +02007086
Juan Quintela6ee71262009-08-03 14:46:47 +02007087case "$ARCH" in
7088alpha)
7089 # Ensure there's only a single GP
7090 cflags="-msmall-data $cflags"
7091;;
7092esac
7093
Juan Quintelad02c1db2009-08-03 14:46:50 +02007094if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02007095 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02007096 if test "$target_linux_user" = "yes" ; then
7097 cflags="-p $cflags"
7098 ldflags="-p $ldflags"
7099 fi
7100 if test "$target_softmmu" = "yes" ; then
7101 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02007102 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02007103 fi
7104fi
7105
Juan Quintela9b8e1112009-08-03 14:46:46 +02007106if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07007107 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02007108fi
Juan Quintelafa282482009-07-22 22:37:39 +02007109
Christian Borntraegere9a35912017-08-23 12:16:23 +02007110# Newer kernels on s390 check for an S390_PGSTE program header and
7111# enable the pgste page table extensions in that case. This makes
7112# the vm.allocate_pgste sysctl unnecessary. We enable this program
7113# header if
7114# - we build on s390x
7115# - we build the system emulation for s390x (qemu-system-s390x)
7116# - KVM is enabled
7117# - the linker supports --s390-pgste
7118if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
7119 if ld_has --s390-pgste ; then
7120 ldflags="-Wl,--s390-pgste $ldflags"
7121 fi
7122fi
7123
Juan Quintela25be2102009-10-07 02:41:00 +02007124echo "LDFLAGS+=$ldflags" >> $config_target_mak
7125echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02007126
bellard97a847b2003-08-10 21:36:04 +00007127done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00007128
Philippe Mathieu-Daudée3971d62018-04-15 20:05:20 -03007129if [ "$fdt" = "git" ]; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10007130 echo "config-host.h: subdir-dtc" >> $config_host_mak
7131fi
Richard Hendersone219c492017-09-28 09:01:23 -07007132if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
7133 echo "config-host.h: subdir-capstone" >> $config_host_mak
7134fi
7135if test -n "$LIBCAPSTONE"; then
7136 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
7137fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10007138
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08007139if test "$numa" = "yes"; then
7140 echo "CONFIG_NUMA=y" >> $config_host_mak
7141fi
7142
John Snowfd0e6052015-03-25 18:57:39 -04007143if test "$ccache_cpp2" = "yes"; then
7144 echo "export CCACHE_CPP2=y" >> $config_host_mak
7145fi
7146
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007147# build tree in object directory in case the source is not in the current directory
Fam Zhengb1fb9a62017-09-05 10:11:58 +08007148DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm"
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02007149DIRS="$DIRS docs docs/interop fsdev scsi"
Christian Borntraeger9933c302013-04-23 01:23:03 +00007150DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007151DIRS="$DIRS roms/seabios roms/vgabios"
Anthony Liguoric09015d2012-01-10 13:10:42 -06007152FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
7153FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02007154FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007155FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02007156FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00007157FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007158FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01007159FILES="$FILES pc-bios/qemu-icon.bmp"
Stefan Hajnoczi3a586d22017-05-17 13:40:42 +01007160FILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
Richard Henderson753d11f2011-06-24 11:58:37 -07007161for bios_file in \
7162 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11007163 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01007164 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07007165 $source_path/pc-bios/*.rom \
7166 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00007167 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07007168 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01007169 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07007170 $source_path/pc-bios/palcode-*
7171do
Stefan Weil89138852016-05-16 15:10:20 +02007172 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007173done
Stefan Weil89138852016-05-16 15:10:20 +02007174for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02007175do
Stefan Weil89138852016-05-16 15:10:20 +02007176 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02007177done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007178mkdir -p $DIRS
7179for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03007180 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01007181 symlink "$source_path/$f" "$f"
7182 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01007183done
Paul Brook1ad21342009-05-19 16:17:58 +01007184
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007185# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06007186for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007187 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01007188 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007189 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07007190 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07007191 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007192 echo "CC=$cc" >> $config_mak
7193 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00007194 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007195 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03007196 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007197 echo "LD=$ld" >> $config_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08007198 echo "RANLIB=$ranlib" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05007199done
7200
Marc-André Lureaufe310172016-06-15 13:06:00 +02007201# set up tests data directory
7202if [ ! -e tests/data ]; then
7203 symlink "$source_path/tests/data" tests/data
7204fi
7205
Max Reitz76c75602014-05-24 23:24:56 +02007206# set up qemu-iotests in this build directory
7207iotests_common_env="tests/qemu-iotests/common.env"
7208iotests_check="tests/qemu-iotests/check"
7209
7210echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
7211echo >> "$iotests_common_env"
7212echo "export PYTHON='$python'" >> "$iotests_common_env"
7213
7214if [ ! -e "$iotests_check" ]; then
7215 symlink "$source_path/$iotests_check" "$iotests_check"
7216fi
7217
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007218# Save the configure command line for later reuse.
7219cat <<EOD >config.status
7220#!/bin/sh
7221# Generated by configure.
7222# Run this file to recreate the current configuration.
7223# Compiler output produced by configure, useful for debugging
7224# configure, is in config.log if it exists.
7225EOD
7226printf "exec" >>config.status
7227printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00007228echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02007229chmod +x config.status
7230
Peter Maydell8cd05ab2014-05-23 17:07:24 +01007231rm -r "$TMPDIR1"