blob: 044c6fafe2c3d3e0adf2beda571daf0b642143fb [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
John Snow5e4dfd32015-10-28 13:56:40 -040011# Don't allow CCACHE, if present, to use cached results of compile tests!
12export CCACHE_RECACHE=yes
13
Peter Maydell8cd05ab2014-05-23 17:07:24 +010014# Temporary directory used for files created while
15# configure runs. Since it is in the build directory
16# we can safely blow away any previous version of it
17# (and we need not jump through hoops to try to delete
18# it when configure exits.)
19TMPDIR1="config-temp"
20rm -rf "${TMPDIR1}"
21mkdir -p "${TMPDIR1}"
22if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
bellard7d132992003-03-06 23:23:54 +000025fi
26
Peter Maydell8cd05ab2014-05-23 17:07:24 +010027TMPB="qemu-conf"
28TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050029TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000030TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010031TMPE="${TMPDIR1}/${TMPB}.exe"
James Clarke6969ec62016-06-06 12:02:50 +010032TMPMO="${TMPDIR1}/${TMPB}.mo"
bellard7d132992003-03-06 23:23:54 +000033
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020034rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000035
Peter Maydellb48e3612011-11-23 17:26:44 +000036# Print a helpful header at the top of config.log
37echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000038printf "# Configured with:" >> config.log
39printf " '%s'" "$0" "$@" >> config.log
40echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000041echo "#" >> config.log
42
Paolo Bonzinid880a3b2017-07-03 16:58:28 +020043print_error() {
44 (echo
Peter Maydell76ad07a2013-04-08 12:11:26 +010045 echo "ERROR: $1"
46 while test -n "$2"; do
47 echo " $2"
48 shift
49 done
Paolo Bonzinid880a3b2017-07-03 16:58:28 +020050 echo) >&2
51}
52
53error_exit() {
54 print_error "$@"
Peter Maydell76ad07a2013-04-08 12:11:26 +010055 exit 1
56}
57
Peter Maydell9c83ffd2014-02-25 18:27:49 +000058do_compiler() {
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
61 local compiler="$1"
62 shift
63 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010065 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
70 return 0
71 fi
72 # Don't bother rerunning the compile if we were already using -Werror
73 case "$*" in
74 *-Werror*)
75 return 0
76 ;;
77 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000078 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010080 error_exit "configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010084}
85
Peter Maydell9c83ffd2014-02-25 18:27:49 +000086do_cc() {
87 do_compiler "$cc" "$@"
88}
89
90do_cxx() {
91 do_compiler "$cxx" "$@"
92}
93
94update_cxxflags() {
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
Bruno Dominguez11cde1c2017-06-06 14:07:47 +010098 QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
99
Peter Maydell9c83ffd2014-02-25 18:27:49 +0000100 for arg in $QEMU_CFLAGS; do
101 case $arg in
102 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
103 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
104 ;;
105 *)
106 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
107 ;;
108 esac
109 done
110}
111
Juan Quintela52166aa2009-08-03 14:46:03 +0200112compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400113 local_cflags="$1"
114 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200115}
116
117compile_prog() {
118 local_cflags="$1"
119 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100120 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200121}
122
Paolo Bonzini11568d62010-12-23 11:43:58 +0100123# symbolically link $1 to $2. Portable version of "ln -sf".
124symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100125 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800126 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100127 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100128}
129
Loïc Minier0dba6192010-01-28 21:26:51 +0000130# check whether a command is available to this shell (may be either an
131# executable or a builtin)
132has() {
133 type "$1" >/dev/null 2>&1
134}
135
136# search for an executable in PATH
137path_of() {
138 local_command="$1"
139 local_ifs="$IFS"
140 local_dir=""
141
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
146 return 0
147 fi
148 fi
149 if [ -z "$local_command" ]; then
150 return 1
151 fi
152
153 IFS=:
154 for local_dir in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS="${local_ifs:-$(printf ' \t\n')}"
158 return 0
159 fi
160 done
161 # not found
162 IFS="${local_ifs:-$(printf ' \t\n')}"
163 return 1
164}
165
Lluís Vilanova5b808272014-05-27 15:02:14 +0200166have_backend () {
167 echo "$trace_backends" | grep "$1" >/dev/null
168}
169
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200170glob() {
171 eval test -z '"${1#'"$2"'}"'
172}
173
174supported_hax_target() {
175 test "$hax" = "yes" || return 1
176 glob "$1" "*-softmmu" || return 1
177 case "${1%-softmmu}" in
178 i386|x86_64)
179 return 0
180 ;;
181 esac
182 return 1
183}
184
185supported_kvm_target() {
186 test "$kvm" = "yes" || return 1
187 glob "$1" "*-softmmu" || return 1
188 case "${1%-softmmu}:$cpu" in
189 arm:arm | aarch64:aarch64 | \
190 i386:i386 | i386:x86_64 | i386:x32 | \
191 x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \
192 mips:mips | mipsel:mips | \
193 ppc:ppc | ppcemb:ppc | ppc64:ppc | \
194 ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
195 s390x:s390x)
196 return 0
197 ;;
198 esac
199 return 1
200}
201
202supported_xen_target() {
203 test "$xen" = "yes" || return 1
204 glob "$1" "*-softmmu" || return 1
Paolo Bonzinib5ed2e12017-07-11 12:00:49 +0200205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
207 i386|x86_64)
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200208 return 0
209 ;;
210 esac
211 return 1
212}
213
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500214supported_hvf_target() {
215 test "$hvf" = "yes" || return 1
216 glob "$1" "*-softmmu" || return 1
217 case "${1%-softmmu}" in
218 x86_64)
219 return 0
220 ;;
221 esac
222 return 1
223}
224
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200225supported_target() {
226 case "$1" in
227 *-softmmu)
228 ;;
229 *-linux-user)
230 if test "$linux" != "yes"; then
231 print_error "Target '$target' is only available on a Linux host"
232 return 1
233 fi
234 ;;
235 *-bsd-user)
236 if test "$bsd" != "yes"; then
237 print_error "Target '$target' is only available on a BSD host"
238 return 1
239 fi
240 ;;
241 *)
242 print_error "Invalid target name '$target'"
243 return 1
244 ;;
245 esac
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200246 test "$tcg" = "yes" && return 0
247 supported_kvm_target "$1" && return 0
248 supported_xen_target "$1" && return 0
249 supported_hax_target "$1" && return 0
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500250 supported_hvf_target "$1" && return 0
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200251 print_error "TCG disabled, but hardware accelerator not available for '$target'"
252 return 1
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200253}
254
Christian Borntraegere9a35912017-08-23 12:16:23 +0200255
256ld_has() {
257 $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
258}
259
bellard7d132992003-03-06 23:23:54 +0000260# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200261source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200262cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300263iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000264interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000265static="no"
bellard7d132992003-03-06 23:23:54 +0000266cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000267audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800268block_drv_rw_whitelist=""
269block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000270host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200271libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200272libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200273audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400274audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200275cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500276libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100277debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100278stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000279
Daniel P. Berrange92712822017-09-29 11:11:58 +0100280if test -e "$source_path/.git"
281then
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100282 git_update=yes
Daniel P. Berrange92712822017-09-29 11:11:58 +0100283 git_submodules="ui/keycodemapdb"
284else
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100285 git_update=no
Daniel P. Berrange92712822017-09-29 11:11:58 +0100286 git_submodules=""
287fi
Daniel P. Berrangecc84d632017-10-20 15:02:43 +0100288git="git"
aliguoriac0df512008-12-29 17:14:15 +0000289
Stefan Weilafb63eb2012-09-26 22:04:38 +0200290# Don't accept a target_list environment variable.
291unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100292
293# Default value for a variable defining feature "foo".
294# * foo="no" feature will only be used if --enable-foo arg is given
295# * foo="" feature will be searched for, and if found, will be used
296# unless --disable-foo is given
297# * foo="yes" this value will only be set by --enable-foo flag.
298# feature will searched for,
299# if not found, configure exits with error
300#
301# Always add --enable-foo and --disable-foo command line args.
302# Distributions want to ensure that several features are compiled in, and it
303# is impossible without a --enable-foo that exits if a feature is not found.
304
305bluez=""
306brlapi=""
307curl=""
308curses=""
309docs=""
310fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100311netmap="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100312sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400313sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530314virtfs=""
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200315mpath=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100316vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100317sparse="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100318vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100319vnc_sasl=""
320vnc_jpeg=""
321vnc_png=""
Gerd Hoffmann6a021532017-10-05 17:33:28 +0200322xkbcommon=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100323xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000324xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000325xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000326xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100327linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500328cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100329attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200330libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100331xfs=""
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200332tcg="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100333
Bradd41a75a2011-07-26 23:11:26 -0400334vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000335vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100336vhost_vsock="no"
Marc-André Lureaue6a74862017-08-03 11:07:46 +0200337vhost_user=""
Bradd41a75a2011-07-26 23:11:26 -0400338kvm="no"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100339hax="no"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500340hvf="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400341rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100342gprof="no"
343debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100344debug="no"
John Snowb553a042015-11-03 15:43:42 -0500345fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100346strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200347tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100348bigendian="no"
349mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000350gcov="no"
351gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100352EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800353DSOSUF=".so"
354LDFLAGS_SHARED="-shared"
355modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100356prefix="/usr/local"
357mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300358datadir="\${prefix}/share"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200359firmwarepath="\${prefix}/share/qemu-firmware"
Eduardo Habkost850da182012-04-18 16:55:38 -0300360qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100361bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300362libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400363libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200364includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100365sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300366local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100367confsuffix="/qemu"
368slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100369oss_lib=""
370bsd="no"
371linux="no"
372solaris="no"
373profiler="no"
374cocoa="no"
375softmmu="yes"
376linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100377bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100378blobs="yes"
379pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200380pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200381qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300382trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100383trace_file="trace"
384spice=""
385rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200386smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100387libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200388usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100389opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100390opengl_dmabuf="no"
Richard Henderson5dd89902017-07-18 18:40:18 -1000391cpuid_h="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800392avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300393zlib="yes"
Richard Henderson8ca80762017-09-14 09:41:12 -0700394capstone=""
Stefan Weilb25c9df2014-04-29 08:21:16 +0200395lzo=""
396snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100397bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400398guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400399guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500400guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300401guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400402vss_win32_sdk=""
403win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100404want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100405libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100406libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100407coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200408coroutine_pool=""
Peter Lieven7d992e42016-09-27 11:58:45 +0200409debug_stack_usage="no"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -0400410crypto_afalg="no"
Eduardo Otubof7945732012-08-14 18:44:05 -0300411seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530412glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400413glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530414glusterfs_discard="no"
Niels de Vosdf3a4292017-05-28 12:01:14 +0530415glusterfs_fallocate="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530416glusterfs_zerofill="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600417gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200418gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200419gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100420tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100421gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900422gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100423nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100424nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100425gcrypt=""
Longpeng(Mike)1f923c72016-12-13 18:42:55 +0800426gcrypt_hmac="no"
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100427gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100428vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200429virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400430tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100431libssh2=""
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +0100432live_block_migration="yes"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800433numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800434tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200435jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800436replication="yes"
Ashish Mittalda92c3f2017-04-03 20:48:08 -0700437vxhs=""
Klim Kireeved279a02018-01-12 12:01:19 +0300438libxml2=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100439
Peter Maydell898be3e2017-03-21 14:31:57 +0000440supported_cpu="no"
441supported_os="no"
Peter Maydellfb59dab2017-03-28 14:01:52 +0100442bogus_os="no"
Yang Zhong5a22ab72017-12-20 21:16:46 +0800443malloc_trim=""
Peter Maydell898be3e2017-03-21 14:31:57 +0000444
aliguoriac0df512008-12-29 17:14:15 +0000445# parse CC options first
446for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200447 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000448 case "$opt" in
449 --cross-prefix=*) cross_prefix="$optarg"
450 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100451 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000452 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400453 --cxx=*) CXX="$optarg"
454 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100455 --source-path=*) source_path="$optarg"
456 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200457 --cpu=*) cpu="$optarg"
458 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100459 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100460 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200461 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100462 --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
463 EXTRA_CXXFLAGS="$optarg"
464 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100465 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100466 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200467 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100468 --enable-debug-info) debug_info="yes"
469 ;;
470 --disable-debug-info) debug_info="no"
471 ;;
aliguoriac0df512008-12-29 17:14:15 +0000472 esac
473done
aliguoriac0df512008-12-29 17:14:15 +0000474# OS specific
475# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100476# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000477
Peter Maydelle49d0212012-12-07 15:39:13 +0000478# Preferred compiler:
479# ${CC} (if set)
480# ${cross_prefix}gcc (if cross-prefix specified)
481# system compiler
482if test -z "${CC}${cross_prefix}"; then
483 cc="$host_cc"
484else
485 cc="${CC-${cross_prefix}gcc}"
486fi
487
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400488if test -z "${CXX}${cross_prefix}"; then
489 cxx="c++"
490else
491 cxx="${CXX-${cross_prefix}g++}"
492fi
493
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500494ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700495as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700496ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000497cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500498objcopy="${OBJCOPY-${cross_prefix}objcopy}"
499ld="${LD-${cross_prefix}ld}"
Alistair Francis9f81aeb2017-11-07 17:10:46 -0800500ranlib="${RANLIB-${cross_prefix}ranlib}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200501nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500502strip="${STRIP-${cross_prefix}strip}"
503windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300504pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
505query_pkg_config() {
506 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
507}
508pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500509sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000510sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000511
Peter Maydell45d285a2013-10-21 21:03:06 +0100512# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
513ARFLAGS="${ARFLAGS-rv}"
514
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200515# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100516# We use -fwrapv to tell the compiler that we require a C dialect where
517# left shift of signed integers is well defined and has the expected
518# 2s-complement style results. (Both clang and gcc agree that it
519# provides these semantics.)
520QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400521QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100522QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200523QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Yang Zhong244f1442017-06-02 14:06:45 +0800524QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100525if test "$debug_info" = "yes"; then
526 CFLAGS="-g $CFLAGS"
527 LDFLAGS="-g $LDFLAGS"
528fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200529
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100530# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200531source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100532
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300533# running configure in the source tree?
534# we know that's the case if configure is there.
535if test -f "./configure"; then
536 pwd_is_source_path="y"
537else
538 pwd_is_source_path="n"
539fi
540
aliguoriac0df512008-12-29 17:14:15 +0000541check_define() {
542cat > $TMPC <<EOF
543#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000544#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000545#endif
546int main(void) { return 0; }
547EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200548 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000549}
550
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200551check_include() {
552cat > $TMPC <<EOF
553#include <$1>
554int main(void) { return 0; }
555EOF
556 compile_object
557}
558
John Snow93b25862015-03-25 18:57:37 -0400559write_c_skeleton() {
560 cat > $TMPC <<EOF
561int main(void) { return 0; }
562EOF
563}
564
Peter Maydellbbea4052012-08-14 15:35:34 +0100565if check_define __linux__ ; then
566 targetos="Linux"
567elif check_define _WIN32 ; then
568 targetos='MINGW32'
569elif check_define __OpenBSD__ ; then
570 targetos='OpenBSD'
571elif check_define __sun__ ; then
572 targetos='SunOS'
573elif check_define __HAIKU__ ; then
574 targetos='Haiku'
Peter Maydell951fedf2017-07-13 16:15:32 +0100575elif check_define __FreeBSD__ ; then
576 targetos='FreeBSD'
577elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
578 targetos='GNU/kFreeBSD'
579elif check_define __DragonFly__ ; then
580 targetos='DragonFly'
581elif check_define __NetBSD__; then
582 targetos='NetBSD'
583elif check_define __APPLE__; then
584 targetos='Darwin'
Peter Maydellbbea4052012-08-14 15:35:34 +0100585else
Peter Maydell951fedf2017-07-13 16:15:32 +0100586 # This is a fatal error, but don't report it yet, because we
587 # might be going to just print the --help text, or it might
588 # be the result of a missing compiler.
589 targetos='bogus'
590 bogus_os='yes'
Peter Maydellbbea4052012-08-14 15:35:34 +0100591fi
592
593# Some host OSes need non-standard checks for which CPU to use.
594# Note that these checks are broken for cross-compilation: if you're
595# cross-compiling to one of these OSes then you'll need to specify
596# the correct CPU with the --cpu option.
597case $targetos in
598Darwin)
599 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
600 # run 64-bit userspace code.
601 # If the user didn't specify a CPU explicitly and the kernel says this is
602 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
603 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
604 cpu="x86_64"
605 fi
606 ;;
607SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200608 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100609 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
610 cpu="x86_64"
611 fi
612esac
613
Juan Quintela2ff6b912009-08-03 14:45:55 +0200614if test ! -z "$cpu" ; then
615 # command line argument
616 :
617elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000618 cpu="i386"
619elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700620 if check_define __ILP32__ ; then
621 cpu="x32"
622 else
623 cpu="x86_64"
624 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000625elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000626 if check_define __arch64__ ; then
627 cpu="sparc64"
628 else
629 cpu="sparc"
630 fi
malcfdf7ed92009-01-14 18:39:52 +0000631elif check_define _ARCH_PPC ; then
632 if check_define _ARCH_PPC64 ; then
633 cpu="ppc64"
634 else
635 cpu="ppc"
636 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200637elif check_define __mips__ ; then
638 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200639elif check_define __ia64__ ; then
640 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200641elif check_define __s390__ ; then
642 if check_define __s390x__ ; then
643 cpu="s390x"
644 else
645 cpu="s390"
646 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100647elif check_define __arm__ ; then
648 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100649elif check_define __aarch64__ ; then
650 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000651else
Stefan Weil89138852016-05-16 15:10:20 +0200652 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000653fi
654
Peter Maydell359bc952011-12-24 13:07:25 +0000655ARCH=
656# Normalise host CPU name and set ARCH.
657# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000658case "$cpu" in
Peter Maydell6499fd12017-03-28 11:58:38 +0100659 ppc|ppc64|s390|s390x|sparc64|x32)
Peter Maydell898be3e2017-03-21 14:31:57 +0000660 cpu="$cpu"
661 supported_cpu="yes"
662 ;;
bellard7d132992003-03-06 23:23:54 +0000663 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000664 cpu="i386"
Peter Maydell898be3e2017-03-21 14:31:57 +0000665 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000666 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000667 x86_64|amd64)
668 cpu="x86_64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000669 supported_cpu="yes"
aurel32aaa5fa12008-04-11 22:04:22 +0000670 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100671 armv*b|armv*l|arm)
672 cpu="arm"
Peter Maydell898be3e2017-03-21 14:31:57 +0000673 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000674 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100675 aarch64)
676 cpu="aarch64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000677 supported_cpu="yes"
Claudio Fontana1f080312013-06-12 16:20:23 +0100678 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200679 mips*)
680 cpu="mips"
Peter Maydell898be3e2017-03-21 14:31:57 +0000681 supported_cpu="yes"
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200682 ;;
blueswir131422552007-04-16 18:27:06 +0000683 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000684 cpu="sparc"
Peter Maydell6499fd12017-03-28 11:58:38 +0100685 supported_cpu="yes"
bellardae228532003-05-13 18:59:59 +0000686 ;;
bellard7d132992003-03-06 23:23:54 +0000687 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000688 # This will result in either an error or falling back to TCI later
689 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000690 ;;
691esac
Peter Maydell359bc952011-12-24 13:07:25 +0000692if test -z "$ARCH"; then
693 ARCH="$cpu"
694fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200695
bellard7d132992003-03-06 23:23:54 +0000696# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200697
Stacey Sonadfc3e92014-06-08 09:57:22 -0700698# host *BSD for user mode
699HOST_VARIANT_DIR=""
700
bellard7d132992003-03-06 23:23:54 +0000701case $targetos in
bellard67b915a2004-03-31 23:37:16 +0000702MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200703 mingw32="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100704 hax="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200705 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200706 if check_include dsound.h; then
707 audio_drv_list="dsound"
708 else
709 audio_drv_list=""
710 fi
Peter Maydell898be3e2017-03-21 14:31:57 +0000711 supported_os="yes"
bellard67b915a2004-03-31 23:37:16 +0000712;;
ths5c40d2b2007-06-23 16:03:36 +0000713GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100714 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200715 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200716 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000717;;
bellard7d3505c2004-05-12 19:32:15 +0000718FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200719 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100720 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200721 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200722 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100723 # needed for kinfo_getvmmap(3) in libutil.h
724 LIBS="-lutil $LIBS"
Ed Mastea7764f12016-11-21 20:32:45 -0500725 # needed for kinfo_getproc
726 libs_qga="-lutil $libs_qga"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100727 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700728 HOST_VARIANT_DIR="freebsd"
Peter Maydell898be3e2017-03-21 14:31:57 +0000729 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000730;;
blueswir1c5e97232009-03-07 20:06:23 +0000731DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200732 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100733 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200734 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200735 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700736 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000737;;
bellard7d3505c2004-05-12 19:32:15 +0000738NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200739 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100740 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200741 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200742 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200743 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700744 HOST_VARIANT_DIR="netbsd"
Kamil Rytarowski3c2bdbc2017-05-13 04:21:43 +0200745 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000746;;
747OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200748 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100749 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400750 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200751 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700752 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000753;;
bellard83fb7ad2004-07-05 21:25:26 +0000754Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200755 bsd="yes"
756 darwin="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100757 hax="yes"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -0500758 hvf="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800759 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200760 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200761 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200762 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200763 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200764 cocoa="yes"
765 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200766 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200767 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200768 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100769 # Disable attempts to use ObjectiveC features in os/object.h since they
770 # won't work when we're compiling with gcc as a C compiler.
771 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700772 HOST_VARIANT_DIR="darwin"
Peter Maydell898be3e2017-03-21 14:31:57 +0000773 supported_os="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000774;;
bellardec530c82006-04-25 22:36:06 +0000775SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200776 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100777 make="${MAKE-gmake}"
778 install="${INSTALL-ginstall}"
Brade2d88302011-09-02 16:53:28 -0400779 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200780 if test -f /usr/include/sys/soundcard.h ; then
781 audio_drv_list="oss"
782 fi
783 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000784# needed for CMSG_ macros in sys/socket.h
785 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
786# needed for TIOCWIN* defines in termios.h
787 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200788 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200789 solarisnetlibs="-lsocket -lnsl -lresolv"
790 LIBS="$solarisnetlibs $LIBS"
791 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000792;;
Andreas Färber179cf402010-09-20 00:50:43 +0200793Haiku)
794 haiku="yes"
795 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
796 LIBS="-lposix_error_mapper -lnetwork $LIBS"
797;;
Peter Maydell898be3e2017-03-21 14:31:57 +0000798Linux)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200799 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200800 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200801 linux="yes"
802 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200803 kvm="yes"
804 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000805 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100806 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000807 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
Peter Maydell898be3e2017-03-21 14:31:57 +0000808 supported_os="yes"
809;;
bellard7d132992003-03-06 23:23:54 +0000810esac
811
bellard7d3505c2004-05-12 19:32:15 +0000812if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000813 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200814 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000815 fi
bellard7d3505c2004-05-12 19:32:15 +0000816fi
817
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100818: ${make=${MAKE-make}}
819: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100820: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400821: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100822
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100823# Default objcc to clang if available, otherwise use CC
824if has clang; then
825 objcc=clang
826else
827 objcc="$cc"
828fi
829
Juan Quintela3457a3f2009-08-03 14:46:07 +0200830if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200831 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800832 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200833 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100834 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
835 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100836 # MinGW needs -mthreads for TLS and macro _MT.
837 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100838 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400839 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100840 if compile_prog "" "-liberty" ; then
841 LIBS="-liberty $LIBS"
842 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200843 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200844 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300845 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300846 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200847 bindir="\${prefix}"
848 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200849 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200850 confsuffix=""
Bishara AbuHattoum105fad62017-08-22 16:55:04 +0300851 libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200852fi
853
Anthony Liguori487fefd2009-06-11 13:28:25 -0500854werror=""
bellard85aa5182007-11-11 20:17:03 +0000855
bellard7d132992003-03-06 23:23:54 +0000856for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200857 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000858 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000859 --help|-h) show_help=yes
860 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400861 --version|-V) exec cat $source_path/VERSION
862 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000863 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000864 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000865 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000866 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100867 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000868 ;;
aliguoriac0df512008-12-29 17:14:15 +0000869 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000870 ;;
aliguoriac0df512008-12-29 17:14:15 +0000871 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000872 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000873 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000874 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400875 --cxx=*)
876 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200877 --iasl=*) iasl="$optarg"
878 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100879 --objcc=*) objcc="$optarg"
880 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000881 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000882 ;;
pbrook6a882642006-04-17 13:57:12 +0000883 --install=*) install="$optarg"
884 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000885 --python=*) python="$optarg"
886 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000887 --gcov=*) gcov_tool="$optarg"
888 ;;
Brade2d88302011-09-02 16:53:28 -0400889 --smbd=*) smbd="$optarg"
890 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200891 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000892 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100893 --extra-cxxflags=*)
894 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200895 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000896 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100897 --enable-debug-info)
898 ;;
899 --disable-debug-info)
900 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800901 --enable-modules)
902 modules="yes"
903 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000904 --disable-modules)
905 modules="no"
906 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200907 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000908 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000909 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000910 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200911 --enable-trace-backends=*) trace_backends="$optarg"
912 ;;
913 # XXX: backwards compatibility
914 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100915 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100916 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100917 ;;
bellard7d132992003-03-06 23:23:54 +0000918 --enable-gprof) gprof="yes"
919 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000920 --enable-gcov) gcov="yes"
921 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100922 --static)
923 static="yes"
924 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300925 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000926 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200927 --mandir=*) mandir="$optarg"
928 ;;
929 --bindir=*) bindir="$optarg"
930 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300931 --libdir=*) libdir="$optarg"
932 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400933 --libexecdir=*) libexecdir="$optarg"
934 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200935 --includedir=*) includedir="$optarg"
936 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300937 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200938 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300939 --with-confsuffix=*) confsuffix="$optarg"
940 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300941 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200942 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100943 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600944 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300945 --localstatedir=*) local_statedir="$optarg"
946 ;;
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200947 --firmwarepath=*) firmwarepath="$optarg"
948 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300949 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400950 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
951 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
952 # These switches are silently ignored, for compatibility with
953 # autoconf-generated configure scripts. This allows QEMU's
954 # configure to be used by RPM and similar macros that set
955 # lots of directory switches by default.
956 ;;
bellard97a847b2003-08-10 21:36:04 +0000957 --disable-sdl) sdl="no"
958 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200959 --enable-sdl) sdl="yes"
960 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000961 --with-sdlabi=*) sdlabi="$optarg"
962 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200963 --disable-qom-cast-debug) qom_cast_debug="no"
964 ;;
965 --enable-qom-cast-debug) qom_cast_debug="yes"
966 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530967 --disable-virtfs) virtfs="no"
968 ;;
969 --enable-virtfs) virtfs="yes"
970 ;;
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200971 --disable-mpath) mpath="no"
972 ;;
973 --enable-mpath) mpath="yes"
974 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100975 --disable-vnc) vnc="no"
976 ;;
977 --enable-vnc) vnc="yes"
978 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000979 --oss-lib=*) oss_lib="$optarg"
980 ;;
malc0c58ac12008-06-25 21:04:05 +0000981 --audio-drv-list=*) audio_drv_list="$optarg"
982 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200983 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800984 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200985 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100986 ;;
aurel32f8393942009-04-13 18:45:38 +0000987 --enable-debug-tcg) debug_tcg="yes"
988 ;;
989 --disable-debug-tcg) debug_tcg="no"
990 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100991 --enable-debug)
992 # Enable debugging options that aren't excessively noisy
993 debug_tcg="yes"
994 debug="yes"
995 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500996 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100997 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000998 --enable-sparse) sparse="yes"
999 ;;
1000 --disable-sparse) sparse="no"
1001 ;;
aliguori1625af82009-04-05 17:41:02 +00001002 --disable-strip) strip_opt="no"
1003 ;;
aliguori2f9606b2009-03-06 20:27:28 +00001004 --disable-vnc-sasl) vnc_sasl="no"
1005 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +02001006 --enable-vnc-sasl) vnc_sasl="yes"
1007 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +02001008 --disable-vnc-jpeg) vnc_jpeg="no"
1009 ;;
1010 --enable-vnc-jpeg) vnc_jpeg="yes"
1011 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +02001012 --disable-vnc-png) vnc_png="no"
1013 ;;
1014 --enable-vnc-png) vnc_png="yes"
1015 ;;
bellard443f1372004-06-04 11:13:20 +00001016 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +00001017 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +00001018 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +00001019 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +02001020 --enable-vde) vde="yes"
1021 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +01001022 --disable-netmap) netmap="no"
1023 ;;
1024 --enable-netmap) netmap="yes"
1025 ;;
aliguorie37630c2009-04-22 15:19:10 +00001026 --disable-xen) xen="no"
1027 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +02001028 --enable-xen) xen="yes"
1029 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +00001030 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
1031 ;;
1032 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
1033 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +00001034 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
1035 ;;
1036 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
1037 ;;
aurel322e4d9fb2008-04-08 06:01:02 +00001038 --disable-brlapi) brlapi="no"
1039 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +02001040 --enable-brlapi) brlapi="yes"
1041 ;;
balrogfb599c92008-09-28 23:49:55 +00001042 --disable-bluez) bluez="no"
1043 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +02001044 --enable-bluez) bluez="yes"
1045 ;;
aliguori7ba1e612008-11-05 16:04:33 +00001046 --disable-kvm) kvm="no"
1047 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +02001048 --enable-kvm) kvm="yes"
1049 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001050 --disable-hax) hax="no"
zhanghailiang180fb752016-10-27 14:43:08 +08001051 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001052 --enable-hax) hax="yes"
zhanghailiang180fb752016-10-27 14:43:08 +08001053 ;;
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05001054 --disable-hvf) hvf="no"
1055 ;;
1056 --enable-hvf) hvf="yes"
1057 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +02001058 --disable-tcg-interpreter) tcg_interpreter="no"
1059 ;;
1060 --enable-tcg-interpreter) tcg_interpreter="yes"
1061 ;;
Corey Bryant47e98652012-01-26 09:42:26 -05001062 --disable-cap-ng) cap_ng="no"
1063 ;;
1064 --enable-cap-ng) cap_ng="yes"
1065 ;;
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02001066 --disable-tcg) tcg="no"
1067 ;;
1068 --enable-tcg) tcg="yes"
1069 ;;
Yang Zhong5a22ab72017-12-20 21:16:46 +08001070 --disable-malloc-trim) malloc_trim="no"
1071 ;;
1072 --enable-malloc-trim) malloc_trim="yes"
1073 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01001074 --disable-spice) spice="no"
1075 ;;
1076 --enable-spice) spice="yes"
1077 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11001078 --disable-libiscsi) libiscsi="no"
1079 ;;
1080 --enable-libiscsi) libiscsi="yes"
1081 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +01001082 --disable-libnfs) libnfs="no"
1083 ;;
1084 --enable-libnfs) libnfs="yes"
1085 ;;
bellard05c2a3e2006-02-08 22:39:17 +00001086 --enable-profiler) profiler="yes"
1087 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +04001088 --disable-cocoa) cocoa="no"
1089 ;;
malcc2de5c92008-06-28 19:13:06 +00001090 --enable-cocoa)
1091 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +02001092 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +00001093 ;;
pbrookcad25d62006-03-19 16:31:11 +00001094 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001095 ;;
pbrookcad25d62006-03-19 16:31:11 +00001096 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +00001097 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -10001098 --disable-user)
1099 linux_user="no" ;
1100 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -10001101 ;;
1102 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +00001103 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001104 ;;
ths831b7822007-01-18 20:06:33 +00001105 --enable-linux-user) linux_user="yes"
1106 ;;
blueswir184778502008-10-26 20:33:16 +00001107 --disable-bsd-user) bsd_user="no"
1108 ;;
1109 --enable-bsd-user) bsd_user="yes"
1110 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001111 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001112 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001113 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001114 ;;
bellard85aa5182007-11-11 20:17:03 +00001115 --enable-werror) werror="yes"
1116 ;;
1117 --disable-werror) werror="no"
1118 ;;
Steven Noonan63678e12014-03-28 17:19:02 +01001119 --enable-stack-protector) stack_protector="yes"
1120 ;;
1121 --disable-stack-protector) stack_protector="no"
1122 ;;
balrog4d3b6f62008-02-10 16:33:14 +00001123 --disable-curses) curses="no"
1124 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +02001125 --enable-curses) curses="yes"
1126 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001127 --disable-curl) curl="no"
1128 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001129 --enable-curl) curl="yes"
1130 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001131 --disable-fdt) fdt="no"
1132 ;;
1133 --enable-fdt) fdt="yes"
1134 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001135 --disable-linux-aio) linux_aio="no"
1136 ;;
1137 --enable-linux-aio) linux_aio="yes"
1138 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001139 --disable-attr) attr="no"
1140 ;;
1141 --enable-attr) attr="yes"
1142 ;;
ths77755342008-11-27 15:45:16 +00001143 --disable-blobs) blobs="no"
1144 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001145 --with-pkgversion=*) pkgversion=" ($optarg)"
1146 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001147 --with-coroutine=*) coroutine="$optarg"
1148 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001149 --disable-coroutine-pool) coroutine_pool="no"
1150 ;;
1151 --enable-coroutine-pool) coroutine_pool="yes"
1152 ;;
Peter Lieven7d992e42016-09-27 11:58:45 +02001153 --enable-debug-stack-usage) debug_stack_usage="yes"
1154 ;;
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001155 --enable-crypto-afalg) crypto_afalg="yes"
1156 ;;
1157 --disable-crypto-afalg) crypto_afalg="no"
1158 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001159 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001160 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001161 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001162 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001163 --disable-vhost-net) vhost_net="no"
1164 ;;
1165 --enable-vhost-net) vhost_net="yes"
1166 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001167 --disable-vhost-scsi) vhost_scsi="no"
1168 ;;
1169 --enable-vhost-scsi) vhost_scsi="yes"
1170 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001171 --disable-vhost-vsock) vhost_vsock="no"
1172 ;;
1173 --enable-vhost-vsock) vhost_vsock="yes"
1174 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001175 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001176 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001177 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001178 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001179 --disable-rbd) rbd="no"
1180 ;;
1181 --enable-rbd) rbd="yes"
1182 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001183 --disable-xfsctl) xfs="no"
1184 ;;
1185 --enable-xfsctl) xfs="yes"
1186 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001187 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001188 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001189 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001190 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001191 --disable-libusb) libusb="no"
1192 ;;
1193 --enable-libusb) libusb="yes"
1194 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001195 --disable-usb-redir) usb_redir="no"
1196 ;;
1197 --enable-usb-redir) usb_redir="yes"
1198 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001199 --disable-zlib-test) zlib="no"
1200 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001201 --disable-lzo) lzo="no"
1202 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001203 --enable-lzo) lzo="yes"
1204 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001205 --disable-snappy) snappy="no"
1206 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001207 --enable-snappy) snappy="yes"
1208 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001209 --disable-bzip2) bzip2="no"
1210 ;;
1211 --enable-bzip2) bzip2="yes"
1212 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001213 --enable-guest-agent) guest_agent="yes"
1214 ;;
1215 --disable-guest-agent) guest_agent="no"
1216 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001217 --enable-guest-agent-msi) guest_agent_msi="yes"
1218 ;;
1219 --disable-guest-agent-msi) guest_agent_msi="no"
1220 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001221 --with-vss-sdk) vss_win32_sdk=""
1222 ;;
1223 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1224 ;;
1225 --without-vss-sdk) vss_win32_sdk="no"
1226 ;;
1227 --with-win-sdk) win_sdk=""
1228 ;;
1229 --with-win-sdk=*) win_sdk="$optarg"
1230 ;;
1231 --without-win-sdk) win_sdk="no"
1232 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001233 --enable-tools) want_tools="yes"
1234 ;;
1235 --disable-tools) want_tools="no"
1236 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001237 --enable-seccomp) seccomp="yes"
1238 ;;
1239 --disable-seccomp) seccomp="no"
1240 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301241 --disable-glusterfs) glusterfs="no"
1242 ;;
1243 --enable-glusterfs) glusterfs="yes"
1244 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001245 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1246 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001247 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001248 --enable-vhdx|--disable-vhdx)
1249 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1250 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001251 --enable-uuid|--disable-uuid)
1252 echo "$0: $opt is obsolete, UUID support is always built" >&2
1253 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001254 --disable-gtk) gtk="no"
1255 ;;
1256 --enable-gtk) gtk="yes"
1257 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001258 --tls-priority=*) tls_priority="$optarg"
1259 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001260 --disable-gnutls) gnutls="no"
1261 ;;
1262 --enable-gnutls) gnutls="yes"
1263 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001264 --disable-nettle) nettle="no"
1265 ;;
1266 --enable-nettle) nettle="yes"
1267 ;;
1268 --disable-gcrypt) gcrypt="no"
1269 ;;
1270 --enable-gcrypt) gcrypt="yes"
1271 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001272 --enable-rdma) rdma="yes"
1273 ;;
1274 --disable-rdma) rdma="no"
1275 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001276 --with-gtkabi=*) gtkabi="$optarg"
1277 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001278 --disable-vte) vte="no"
1279 ;;
1280 --enable-vte) vte="yes"
1281 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001282 --disable-virglrenderer) virglrenderer="no"
1283 ;;
1284 --enable-virglrenderer) virglrenderer="yes"
1285 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001286 --disable-tpm) tpm="no"
1287 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001288 --enable-tpm) tpm="yes"
1289 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001290 --disable-libssh2) libssh2="no"
1291 ;;
1292 --enable-libssh2) libssh2="yes"
1293 ;;
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001294 --disable-live-block-migration) live_block_migration="no"
1295 ;;
1296 --enable-live-block-migration) live_block_migration="yes"
1297 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001298 --disable-numa) numa="no"
1299 ;;
1300 --enable-numa) numa="yes"
1301 ;;
Klim Kireeved279a02018-01-12 12:01:19 +03001302 --disable-libxml2) libxml2="no"
1303 ;;
1304 --enable-libxml2) libxml2="yes"
1305 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001306 --disable-tcmalloc) tcmalloc="no"
1307 ;;
1308 --enable-tcmalloc) tcmalloc="yes"
1309 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001310 --disable-jemalloc) jemalloc="no"
1311 ;;
1312 --enable-jemalloc) jemalloc="yes"
1313 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001314 --disable-replication) replication="no"
1315 ;;
1316 --enable-replication) replication="yes"
1317 ;;
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001318 --disable-vxhs) vxhs="no"
1319 ;;
1320 --enable-vxhs) vxhs="yes"
1321 ;;
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001322 --disable-vhost-user) vhost_user="no"
1323 ;;
1324 --enable-vhost-user)
1325 vhost_user="yes"
1326 if test "$mingw32" = "yes"; then
1327 error_exit "vhost-user isn't available on win32"
1328 fi
1329 ;;
Richard Henderson8ca80762017-09-14 09:41:12 -07001330 --disable-capstone) capstone="no"
1331 ;;
1332 --enable-capstone) capstone="yes"
1333 ;;
Richard Hendersone219c492017-09-28 09:01:23 -07001334 --enable-capstone=git) capstone="git"
1335 ;;
1336 --enable-capstone=system) capstone="system"
1337 ;;
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01001338 --with-git=*) git="$optarg"
1339 ;;
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01001340 --enable-git-update) git_update=yes
1341 ;;
1342 --disable-git-update) git_update=no
1343 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001344 *)
1345 echo "ERROR: unknown option $opt"
1346 echo "Try '$0 --help' for more information"
1347 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001348 ;;
bellard7d132992003-03-06 23:23:54 +00001349 esac
1350done
1351
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001352if test "$vhost_user" = ""; then
1353 if test "$mingw32" = "yes"; then
1354 vhost_user="no"
1355 else
1356 vhost_user="yes"
1357 fi
1358fi
1359
bellard40293e52008-01-31 11:32:10 +00001360case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001361 ppc)
1362 CPU_CFLAGS="-m32"
1363 LDFLAGS="-m32 $LDFLAGS"
1364 ;;
1365 ppc64)
1366 CPU_CFLAGS="-m64"
1367 LDFLAGS="-m64 $LDFLAGS"
1368 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001369 sparc)
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001370 CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
1371 LDFLAGS="-m32 -mv8plus $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001372 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001373 sparc64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001374 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001375 LDFLAGS="-m64 $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001376 ;;
ths76d83bd2007-11-18 21:22:10 +00001377 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001378 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001379 LDFLAGS="-m31 $LDFLAGS"
1380 ;;
1381 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001382 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001383 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001384 ;;
bellard40293e52008-01-31 11:32:10 +00001385 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001386 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001387 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001388 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001389 ;;
1390 x86_64)
Richard Henderson7ebee432016-06-29 21:10:59 -07001391 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1392 # If we truly care, we should simply detect this case at
1393 # runtime and generate the fallback to serial emulation.
1394 CPU_CFLAGS="-m64 -mcx16"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001395 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001396 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001397 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001398 x32)
1399 CPU_CFLAGS="-mx32"
1400 LDFLAGS="-mx32 $LDFLAGS"
1401 cc_i386='$(CC) -m32'
1402 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001403 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001404esac
1405
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001406QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1407EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1408
Peter Maydellaffc88c2016-06-13 11:32:24 +01001409# For user-mode emulation the host arch has to be one we explicitly
1410# support, even if we're using TCI.
1411if [ "$ARCH" = "unknown" ]; then
1412 bsd_user="no"
1413 linux_user="no"
1414fi
1415
Peter Maydell60e0df22011-05-03 14:50:13 +01001416default_target_list=""
1417
Peter Maydell6e92f822013-05-20 16:16:15 +01001418mak_wilds=""
1419
1420if [ "$softmmu" = "yes" ]; then
1421 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001422fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001423if [ "$linux_user" = "yes" ]; then
1424 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001425fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001426if [ "$bsd_user" = "yes" ]; then
1427 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001428fi
1429
Peter Maydell6e92f822013-05-20 16:16:15 +01001430for config in $mak_wilds; do
1431 default_target_list="${default_target_list} $(basename "$config" .mak)"
1432done
1433
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001434# Enumerate public trace backends for --help output
Greg Kurz64a60472017-04-26 15:36:07 +02001435trace_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 +01001436
pbrookaf5db582006-04-08 14:26:41 +00001437if test x"$show_help" = x"yes" ; then
1438cat << EOF
1439
1440Usage: configure [options]
1441Options: [defaults in brackets after descriptions]
1442
Stefan Weil08fb77e2013-12-18 22:09:39 +01001443Standard options:
1444 --help print this message
1445 --prefix=PREFIX install in PREFIX [$prefix]
1446 --interp-prefix=PREFIX where to find shared libraries, etc.
1447 use %M for cpu name [$interp_prefix]
1448 --target-list=LIST set target list (default: build everything)
1449$(echo Available targets: $default_target_list | \
1450 fold -s -w 53 | sed -e 's/^/ /')
1451
1452Advanced options (experts only):
1453 --source-path=PATH path of source code [$source_path]
1454 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1455 --cc=CC use C compiler CC [$cc]
1456 --iasl=IASL use ACPI compiler IASL [$iasl]
1457 --host-cc=CC use C compiler CC [$host_cc] for code run at
1458 build time
1459 --cxx=CXX use C++ compiler CXX [$cxx]
1460 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1461 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01001462 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
Stefan Weil08fb77e2013-12-18 22:09:39 +01001463 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1464 --make=MAKE use specified make [$make]
1465 --install=INSTALL use specified install [$install]
1466 --python=PYTHON use specified python [$python]
1467 --smbd=SMBD use specified smbd [$smbd]
1468 --static enable static build [$static]
1469 --mandir=PATH install man pages in PATH
1470 --datadir=PATH install firmware in PATH$confsuffix
1471 --docdir=PATH install documentation in PATH$confsuffix
1472 --bindir=PATH install binaries in PATH
1473 --libdir=PATH install libraries in PATH
1474 --sysconfdir=PATH install config in PATH$confsuffix
1475 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02001476 --firmwarepath=PATH search PATH for firmware files
Fam Zhenge26110c2014-02-10 14:48:57 +08001477 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001478 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001479 --disable-strip disable stripping binaries
1480 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001481 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001482 --audio-drv-list=LIST set audio drivers list:
1483 Available drivers: $audio_possible_drivers
1484 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1485 --block-drv-rw-whitelist=L
1486 set block driver read-write whitelist
1487 (affects only QEMU, not qemu-img)
1488 --block-drv-ro-whitelist=L
1489 set block driver read-only whitelist
1490 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001491 --enable-trace-backends=B Set trace backend
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001492 Available backends: $trace_backend_list
Stefan Weil08fb77e2013-12-18 22:09:39 +01001493 --with-trace-file=NAME Full PATH,NAME of file to store traces
1494 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001495 --disable-slirp disable SLIRP userspace network connectivity
1496 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
Yang Zhong5a22ab72017-12-20 21:16:46 +08001497 --enable-malloc-trim enable libc malloc_trim() for memory optimization
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001498 --oss-lib path to OSS library
1499 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001500 --with-coroutine=BACKEND coroutine backend. Supported options:
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01001501 ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001502 --enable-gcov enable test coverage analysis with gcov
1503 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001504 --disable-blobs disable installing provided firmware blobs
1505 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1506 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001507 --tls-priority default TLS protocol/cipher priority string
Lin Mac12d66a2017-03-10 18:14:05 +08001508 --enable-gprof QEMU profiling with gprof
1509 --enable-profiler profiler support
1510 --enable-xen-pv-domain-build
1511 xen pv domain builder
1512 --enable-debug-stack-usage
1513 track the maximum stack usage of stacks created by qemu_alloc_stack
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001514
1515Optional features, enabled with --enable-FEATURE and
1516disabled with --disable-FEATURE, default is enabled if available:
1517
1518 system all system emulation targets
1519 user supported user emulation targets
1520 linux-user all linux usermode emulation targets
1521 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001522 docs build documentation
1523 guest-agent build the QEMU Guest Agent
1524 guest-agent-msi build guest agent Windows MSI installation package
1525 pie Position Independent Executables
1526 modules modules support
1527 debug-tcg TCG debugging (default is disabled)
1528 debug-info debugging information
1529 sparse sparse checker
1530
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001531 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001532 nettle nettle cryptography support
1533 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001534 sdl SDL UI
1535 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1536 gtk gtk UI
1537 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1538 vte vte support for the gtk UI
1539 curses curses UI
1540 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001541 vnc-sasl SASL encryption for VNC server
1542 vnc-jpeg JPEG lossy compression for VNC server
1543 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001544 cocoa Cocoa UI (Mac OS X only)
1545 virtfs VirtFS
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02001546 mpath Multipath persistent reservation passthrough
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001547 xen xen backend driver support
1548 xen-pci-passthrough
1549 brlapi BrlAPI (Braile)
1550 curl curl connectivity
1551 fdt fdt device tree
1552 bluez bluez stack connectivity
1553 kvm KVM acceleration support
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001554 hax HAX acceleration support
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05001555 hvf Hypervisor.framework acceleration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001556 rdma RDMA-based migration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001557 vde support for vde network
1558 netmap support for netmap network
1559 linux-aio Linux AIO support
1560 cap-ng libcap-ng support
1561 attr attr and xattr support
1562 vhost-net vhost-net acceleration support
1563 spice spice
1564 rbd rados block device (rbd)
1565 libiscsi iscsi support
1566 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001567 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001568 libusb libusb (for usb passthrough)
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001569 live-block-migration Block migration in the main migration stream
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001570 usb-redir usb network redirection support
1571 lzo support of lzo compression library
1572 snappy support of snappy compression library
1573 bzip2 support of bzip2 compression library
1574 (for reading bzip2-compressed dmg images)
1575 seccomp seccomp support
1576 coroutine-pool coroutine freelist (better performance)
1577 glusterfs GlusterFS backend
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001578 tpm TPM support
1579 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001580 numa libnuma support
Klim Kireeved279a02018-01-12 12:01:19 +03001581 libxml2 for Parallels image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001582 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001583 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001584 replication replication support
Lin Mac12d66a2017-03-10 18:14:05 +08001585 vhost-vsock virtio sockets device support
1586 opengl opengl support
1587 virglrenderer virgl rendering support
1588 xfsctl xfsctl support
1589 qom-cast-debug cast debugging support
1590 tools build qemu-io, qemu-nbd and qemu-image tools
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001591 vxhs Veritas HyperScale vDisk backend support
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001592 crypto-afalg Linux AF_ALG crypto backend driver
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001593 vhost-user vhost-user support
Richard Henderson8ca80762017-09-14 09:41:12 -07001594 capstone capstone disassembler support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001595
1596NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001597EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001598exit 0
pbrookaf5db582006-04-08 14:26:41 +00001599fi
1600
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001601if ! has $python; then
1602 error_exit "Python not found. Use --python=/path/to/python"
1603fi
1604
1605# Note that if the Python conditional here evaluates True we will exit
1606# with status 1 which is a shell 'false' value.
1607if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1608 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1609 "Note that Python 3 or later is not yet supported." \
1610 "Use --python=/path/to/python to specify a supported Python."
1611fi
1612
1613# Suppress writing compiled files
1614python="$python -B"
1615
Daniel Henrique Barboza9aae6e52017-11-02 07:09:06 -02001616# Check that the C compiler works. Doing this here before testing
1617# the host CPU ensures that we had a valid CC to autodetect the
1618# $cpu var (and we should bail right here if that's not the case).
1619# It also allows the help message to be printed without a CC.
1620write_c_skeleton;
1621if compile_object ; then
1622 : C compiler works ok
1623else
1624 error_exit "\"$cc\" either does not exist or does not work"
1625fi
1626if ! compile_prog ; then
1627 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1628fi
1629
Peter Maydell359bc952011-12-24 13:07:25 +00001630# Now we have handled --enable-tcg-interpreter and know we're not just
1631# printing the help message, bail out if the host CPU isn't supported.
1632if test "$ARCH" = "unknown"; then
1633 if test "$tcg_interpreter" = "yes" ; then
1634 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001635 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001636 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001637 fi
1638fi
1639
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001640# Consult white-list to determine whether to enable werror
1641# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001642if test -z "$werror" ; then
1643 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001644 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001645 werror="yes"
1646 else
1647 werror="no"
1648 fi
1649fi
1650
Peter Maydellfb59dab2017-03-28 14:01:52 +01001651if test "$bogus_os" = "yes"; then
1652 # Now that we know that we're not printing the help and that
1653 # the compiler works (so the results of the check_defines we used
1654 # to identify the OS are reliable), if we didn't recognize the
1655 # host OS we should stop now.
Peter Maydell951fedf2017-07-13 16:15:32 +01001656 error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
Peter Maydellfb59dab2017-03-28 14:01:52 +01001657fi
1658
Paolo Bonzini8d050952010-12-23 11:43:52 +01001659gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1660gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001661gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001662gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Paolo Bonzinib98fcfd2017-07-11 10:08:55 +02001663gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001664gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001665# Note that we do not add -Werror to gcc_flags here, because that would
1666# enable it for all configure tests. If a configure test failed due
1667# to -Werror this would just silently disable some features,
1668# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001669
1670cc_has_warning_flag() {
1671 write_c_skeleton;
1672
Peter Maydella1d29d62012-10-27 22:19:07 +01001673 # Use the positive sense of the flag when testing for -Wno-wombat
1674 # support (gcc will happily accept the -Wno- form of unknown
1675 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001676 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1677 compile_prog "-Werror $optflag" ""
1678}
1679
1680for flag in $gcc_flags; do
1681 if cc_has_warning_flag $flag ; then
1682 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001683 fi
1684done
1685
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001686if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001687 cat > $TMPC << EOF
1688int main(int argc, char *argv[])
1689{
1690 char arr[64], *p = arr, *c = argv[0];
1691 while (*c) {
1692 *p++ = *c++;
1693 }
1694 return 0;
1695}
1696EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001697 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001698 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001699 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001700 # We need to check both a compile and a link, since some compiler
1701 # setups fail only on a .c->.o compile and some only at link time
1702 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1703 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001704 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001705 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001706 break
1707 fi
1708 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001709 if test "$stack_protector" = yes; then
1710 if test $sp_on = 0; then
1711 error_exit "Stack protector not supported"
1712 fi
1713 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001714fi
1715
Paolo Bonzini20bc94a2017-10-20 12:11:32 +02001716# Disable -Wmissing-braces on older compilers that warn even for
1717# the "universal" C zero initializer {0}.
1718cat > $TMPC << EOF
1719struct {
1720 int a[2];
1721} x = {0};
1722EOF
1723if compile_object "-Werror" "" ; then
1724 :
1725else
1726 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
1727fi
1728
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001729# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1730# large functions that use global variables. The bug is in all releases of
1731# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1732# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1733cat > $TMPC << EOF
1734#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1735int main(void) { return 0; }
1736#else
1737#error No bug in this compiler.
1738#endif
1739EOF
1740if compile_prog "-Werror -fno-gcse" "" ; then
1741 TRANSLATE_OPT_CFLAGS=-fno-gcse
1742fi
1743
Avi Kivity40d64442011-11-15 20:12:17 +02001744if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001745 if test "$modules" = "yes" ; then
1746 error_exit "static and modules are mutually incompatible"
1747 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001748 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001749 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001750 else
1751 pie="no"
1752 fi
1753fi
1754
Emilio G. Cota768b7852015-04-29 13:09:02 +02001755# Unconditional check for compiler __thread support
1756 cat > $TMPC << EOF
1757static __thread int tls_var;
1758int main(void) { return tls_var; }
1759EOF
1760
1761if ! compile_prog "-Werror" "" ; then
1762 error_exit "Your compiler does not support the __thread specifier for " \
1763 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1764fi
1765
Avi Kivity40d64442011-11-15 20:12:17 +02001766if test "$pie" = ""; then
1767 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001768 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001769 ;;
1770 *)
1771 pie="no"
1772 ;;
1773 esac
1774fi
1775
1776if test "$pie" != "no" ; then
1777 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001778
1779#ifdef __linux__
1780# define THREAD __thread
1781#else
1782# define THREAD
1783#endif
1784
1785static THREAD int tls_var;
1786
1787int main(void) { return tls_var; }
1788
Avi Kivity40d64442011-11-15 20:12:17 +02001789EOF
1790 if compile_prog "-fPIE -DPIE" "-pie"; then
1791 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1792 LDFLAGS="-pie $LDFLAGS"
1793 pie="yes"
1794 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1795 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1796 fi
1797 else
1798 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001799 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001800 else
1801 echo "Disabling PIE due to missing toolchain support"
1802 pie="no"
1803 fi
1804 fi
Brad46eef332013-12-10 19:49:08 -05001805
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001806 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001807 CFLAGS_NOPIE="-fno-pie"
1808 LDFLAGS_NOPIE="-nopie"
1809 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001810fi
1811
Paolo Bonzini09dada42013-04-17 16:26:47 +02001812##########################################
1813# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1814# use i686 as default anyway, but for those that don't, an explicit
1815# specification is necessary
1816
1817if test "$cpu" = "i386"; then
1818 cat > $TMPC << EOF
1819static int sfaa(int *ptr)
1820{
1821 return __sync_fetch_and_and(ptr, 0);
1822}
1823
1824int main(void)
1825{
1826 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001827 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001828 sfaa(&val);
1829 return val;
1830}
1831EOF
1832 if ! compile_prog "" "" ; then
1833 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1834 fi
1835fi
1836
1837#########################################
bellardec530c82006-04-25 22:36:06 +00001838# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001839
bellardec530c82006-04-25 22:36:06 +00001840if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001841 if has $install; then
1842 :
1843 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001844 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1845 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1846 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001847 fi
Stefan Weil89138852016-05-16 15:10:20 +02001848 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001849 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1850 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1851 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001852 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001853 if has ar; then
1854 :
1855 else
bellardec530c82006-04-25 22:36:06 +00001856 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001857 error_exit "No path includes ar" \
1858 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001859 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001860 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001861 fi
ths5fafdf22007-09-16 21:08:06 +00001862fi
bellardec530c82006-04-25 22:36:06 +00001863
Stefan Weilafb63eb2012-09-26 22:04:38 +02001864if test -z "${target_list+xxx}" ; then
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001865 for target in $default_target_list; do
1866 supported_target $target 2>/dev/null && \
1867 target_list="$target_list $target"
1868 done
1869 target_list="${target_list# }"
Anthony Liguori121afa92012-09-14 08:17:03 -05001870else
Stefan Weil89138852016-05-16 15:10:20 +02001871 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001872 for target in $target_list; do
1873 # Check that we recognised the target name; this allows a more
1874 # friendly error message than if we let it fall through.
1875 case " $default_target_list " in
1876 *" $target "*)
1877 ;;
1878 *)
1879 error_exit "Unknown target name '$target'"
1880 ;;
1881 esac
1882 supported_target $target || exit 1
1883 done
bellard5327cf42005-01-10 23:18:50 +00001884fi
Peter Maydell25b48332013-05-20 16:16:16 +01001885
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001886# see if system emulation was really requested
1887case " $target_list " in
1888 *"-softmmu "*) softmmu=yes
1889 ;;
1890 *) softmmu=no
1891 ;;
1892esac
bellard5327cf42005-01-10 23:18:50 +00001893
Juan Quintela249247c2009-08-12 18:20:25 +02001894feature_not_found() {
1895 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001896 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001897
Peter Maydell76ad07a2013-04-08 12:11:26 +01001898 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001899 "configure was not able to find it." \
1900 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001901}
1902
bellard7d132992003-03-06 23:23:54 +00001903# ---
1904# big/little endian test
1905cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001906short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1907short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1908extern int foo(short *, short *);
1909int main(int argc, char *argv[]) {
1910 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001911}
1912EOF
1913
Mike Frysinger61cc9192013-06-30 23:30:18 -04001914if compile_object ; then
1915 if grep -q BiGeNdIaN $TMPO ; then
1916 bigendian="yes"
1917 elif grep -q LiTtLeEnDiAn $TMPO ; then
1918 bigendian="no"
1919 else
1920 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001921 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001922else
1923 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001924fi
1925
Juan Quintelab0a47e72009-08-12 18:29:49 +02001926##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001927# cocoa implies not SDL or GTK
1928# (the cocoa UI code currently assumes it is always the active UI
1929# and doesn't interact well with other UI frontend code)
1930if test "$cocoa" = "yes"; then
1931 if test "$sdl" = "yes"; then
1932 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1933 fi
1934 if test "$gtk" = "yes"; then
1935 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1936 fi
1937 gtk=no
1938 sdl=no
1939fi
1940
Eric Blake6b39b062016-10-11 10:46:23 -05001941# Some versions of Mac OS X incorrectly define SIZE_MAX
1942cat > $TMPC << EOF
1943#include <stdint.h>
1944#include <stdio.h>
1945int main(int argc, char *argv[]) {
1946 return printf("%zu", SIZE_MAX);
1947}
1948EOF
1949have_broken_size_max=no
1950if ! compile_object -Werror ; then
1951 have_broken_size_max=yes
1952fi
1953
Peter Maydella30878e2015-08-14 16:10:52 +01001954##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001955# L2TPV3 probe
1956
1957cat > $TMPC <<EOF
1958#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001959#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001960int main(void) { return sizeof(struct mmsghdr); }
1961EOF
1962if compile_prog "" "" ; then
1963 l2tpv3=yes
1964else
1965 l2tpv3=no
1966fi
1967
1968##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001969# MinGW / Mingw-w64 localtime_r/gmtime_r check
1970
1971if test "$mingw32" = "yes"; then
1972 # Some versions of MinGW / Mingw-w64 lack localtime_r
1973 # and gmtime_r entirely.
1974 #
1975 # Some versions of Mingw-w64 define a macro for
1976 # localtime_r/gmtime_r.
1977 #
1978 # Some versions of Mingw-w64 will define functions
1979 # for localtime_r/gmtime_r, but only if you have
1980 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1981 # though, unistd.h and pthread.h both define
1982 # that for you.
1983 #
1984 # So this #undef localtime_r and #include <unistd.h>
1985 # are not in fact redundant.
1986cat > $TMPC << EOF
1987#include <unistd.h>
1988#include <time.h>
1989#undef localtime_r
1990int main(void) { localtime_r(NULL, NULL); return 0; }
1991EOF
1992 if compile_prog "" "" ; then
1993 localtime_r="yes"
1994 else
1995 localtime_r="no"
1996 fi
1997fi
1998
1999##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01002000# pkg-config probe
2001
2002if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002003 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01002004fi
2005
2006##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02002007# NPTL probe
2008
Peter Maydell24cb36a2013-07-16 18:45:00 +01002009if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02002010 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00002011#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00002012#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01002013int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00002014#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
2015#error bork
2016#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01002017 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00002018}
2019EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01002020 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002021 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02002022 fi
pbrookbd0c5662008-05-29 14:34:11 +00002023fi
2024
Liang Li99f2dbd2016-03-08 13:53:16 +08002025#########################################
balrogac629222008-10-11 09:56:04 +00002026# zlib check
2027
Alon Levy1ece9902011-07-26 12:30:40 +03002028if test "$zlib" != "no" ; then
2029 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00002030#include <zlib.h>
2031int main(void) { zlibVersion(); return 0; }
2032EOF
Alon Levy1ece9902011-07-26 12:30:40 +03002033 if compile_prog "" "-lz" ; then
2034 :
2035 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002036 error_exit "zlib check failed" \
2037 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03002038 fi
balrogac629222008-10-11 09:56:04 +00002039fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00002040LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00002041
2042##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08002043# lzo check
2044
2045if test "$lzo" != "no" ; then
2046 cat > $TMPC << EOF
2047#include <lzo/lzo1x.h>
2048int main(void) { lzo_version(); return 0; }
2049EOF
2050 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002051 libs_softmmu="$libs_softmmu -llzo2"
2052 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002053 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002054 if test "$lzo" = "yes"; then
2055 feature_not_found "liblzo2" "Install liblzo2 devel"
2056 fi
2057 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002058 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002059fi
2060
2061##########################################
2062# snappy check
2063
2064if test "$snappy" != "no" ; then
2065 cat > $TMPC << EOF
2066#include <snappy-c.h>
2067int main(void) { snappy_max_compressed_length(4096); return 0; }
2068EOF
2069 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002070 libs_softmmu="$libs_softmmu -lsnappy"
2071 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002072 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002073 if test "$snappy" = "yes"; then
2074 feature_not_found "libsnappy" "Install libsnappy devel"
2075 fi
2076 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002077 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002078fi
2079
2080##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01002081# bzip2 check
2082
2083if test "$bzip2" != "no" ; then
2084 cat > $TMPC << EOF
2085#include <bzlib.h>
2086int main(void) { BZ2_bzlibVersion(); return 0; }
2087EOF
2088 if compile_prog "" "-lbz2" ; then
2089 bzip2="yes"
2090 else
2091 if test "$bzip2" = "yes"; then
2092 feature_not_found "libbzip2" "Install libbzip2 devel"
2093 fi
2094 bzip2="no"
2095 fi
2096fi
2097
2098##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03002099# libseccomp check
2100
2101if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04002102 case "$cpu" in
2103 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06002104 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04002105 ;;
James Hogan5ce43972016-04-08 14:16:34 +01002106 mips)
2107 libseccomp_minver="2.2.0"
2108 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002109 arm|aarch64)
2110 libseccomp_minver="2.2.3"
2111 ;;
Thomas Huth3aa35fc2017-09-14 12:36:03 +02002112 ppc|ppc64|s390x)
Michael Strosaker3e684452016-06-01 18:30:18 -05002113 libseccomp_minver="2.3.0"
2114 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002115 *)
2116 libseccomp_minver=""
2117 ;;
2118 esac
2119
2120 if test "$libseccomp_minver" != "" &&
2121 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Fam Zhengc3883e12017-09-07 16:53:16 +08002122 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2123 seccomp_libs="$($pkg_config --libs libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04002124 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03002125 else
Andrew Jones693e5912015-09-30 11:59:18 -04002126 if test "$seccomp" = "yes" ; then
2127 if test "$libseccomp_minver" != "" ; then
2128 feature_not_found "libseccomp" \
2129 "Install libseccomp devel >= $libseccomp_minver"
2130 else
2131 feature_not_found "libseccomp" \
2132 "libseccomp is not supported for host cpu $cpu"
2133 fi
2134 fi
2135 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03002136 fi
2137fi
2138##########################################
aliguorie37630c2009-04-22 15:19:10 +00002139# xen probe
2140
Juan Quintelafc321b42009-08-12 18:29:55 +02002141if test "$xen" != "no" ; then
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002142 # Check whether Xen library path is specified via --extra-ldflags to avoid
2143 # overriding this setting with pkg-config output. If not, try pkg-config
2144 # to obtain all needed flags.
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002145
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002146 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2147 $pkg_config --exists xencontrol ; then
2148 xen_ctrl_version="$(printf '%d%02d%02d' \
2149 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2150 xen=yes
2151 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2152 xen_pc="$xen_pc xenevtchn xendevicemodel"
2153 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2154 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2155 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2156 else
Stefan Weil50ced5b2011-12-17 09:27:39 +01002157
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002158 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd9506ca2017-05-11 12:35:42 +01002159 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002160
2161 # First we test whether Xen headers and libraries are available.
2162 # If no, we are done and there is no Xen support.
2163 # If yes, more tests are run to detect the Xen version.
2164
2165 # Xen (any)
2166 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002167#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002168int main(void) {
2169 return 0;
2170}
2171EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002172 if ! compile_prog "" "$xen_libs" ; then
2173 # Xen not found
2174 if test "$xen" = "yes" ; then
2175 feature_not_found "xen" "Install xen devel"
2176 fi
2177 xen=no
Stefan Weil50ced5b2011-12-17 09:27:39 +01002178
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002179 # Xen unstable
2180 elif
2181 cat > $TMPC <<EOF &&
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002182#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2183#include <xenforeignmemory.h>
2184int main(void) {
2185 xenforeignmemory_handle *xfmem;
2186
2187 xfmem = xenforeignmemory_open(0, 0);
2188 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2189
2190 return 0;
2191}
2192EOF
2193 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2194 then
2195 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2196 xen_ctrl_version=41000
2197 xen=yes
2198 elif
2199 cat > $TMPC <<EOF &&
Paul Durrantda8090c2017-03-07 10:55:33 +00002200#undef XC_WANT_COMPAT_DEVICEMODEL_API
2201#define __XEN_TOOLS__
2202#include <xendevicemodel.h>
2203int main(void) {
2204 xendevicemodel_handle *xd;
2205
2206 xd = xendevicemodel_open(0, 0);
2207 xendevicemodel_close(xd);
2208
2209 return 0;
2210}
2211EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002212 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2213 then
2214 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2215 xen_ctrl_version=40900
2216 xen=yes
2217 elif
2218 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002219/*
2220 * If we have stable libs the we don't want the libxc compat
2221 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002222 *
2223 * Also, check if xengnttab_grant_copy_segment_t is defined and
2224 * grant copy operation is implemented.
2225 */
2226#undef XC_WANT_COMPAT_EVTCHN_API
2227#undef XC_WANT_COMPAT_GNTTAB_API
2228#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2229#include <xenctrl.h>
2230#include <xenstore.h>
2231#include <xenevtchn.h>
2232#include <xengnttab.h>
2233#include <xenforeignmemory.h>
2234#include <stdint.h>
2235#include <xen/hvm/hvm_info_table.h>
2236#if !defined(HVM_MAX_VCPUS)
2237# error HVM_MAX_VCPUS not defined
2238#endif
2239int main(void) {
2240 xc_interface *xc = NULL;
2241 xenforeignmemory_handle *xfmem;
2242 xenevtchn_handle *xe;
2243 xengnttab_handle *xg;
2244 xen_domain_handle_t handle;
2245 xengnttab_grant_copy_segment_t* seg = NULL;
2246
2247 xs_daemon_open();
2248
2249 xc = xc_interface_open(0, 0, 0);
2250 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2251 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2252 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2253 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2254 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2255
2256 xfmem = xenforeignmemory_open(0, 0);
2257 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2258
2259 xe = xenevtchn_open(0, 0);
2260 xenevtchn_fd(xe);
2261
2262 xg = xengnttab_open(0, 0);
2263 xengnttab_grant_copy(xg, 0, seg);
2264
2265 return 0;
2266}
2267EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002268 compile_prog "" "$xen_libs $xen_stable_libs"
2269 then
2270 xen_ctrl_version=40800
2271 xen=yes
2272 elif
2273 cat > $TMPC <<EOF &&
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002274/*
2275 * If we have stable libs the we don't want the libxc compat
2276 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002277 */
2278#undef XC_WANT_COMPAT_EVTCHN_API
2279#undef XC_WANT_COMPAT_GNTTAB_API
2280#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2281#include <xenctrl.h>
2282#include <xenstore.h>
2283#include <xenevtchn.h>
2284#include <xengnttab.h>
2285#include <xenforeignmemory.h>
2286#include <stdint.h>
2287#include <xen/hvm/hvm_info_table.h>
2288#if !defined(HVM_MAX_VCPUS)
2289# error HVM_MAX_VCPUS not defined
2290#endif
2291int main(void) {
2292 xc_interface *xc = NULL;
2293 xenforeignmemory_handle *xfmem;
2294 xenevtchn_handle *xe;
2295 xengnttab_handle *xg;
2296 xen_domain_handle_t handle;
2297
2298 xs_daemon_open();
2299
2300 xc = xc_interface_open(0, 0, 0);
2301 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2302 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2303 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2304 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2305 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2306
2307 xfmem = xenforeignmemory_open(0, 0);
2308 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2309
2310 xe = xenevtchn_open(0, 0);
2311 xenevtchn_fd(xe);
2312
2313 xg = xengnttab_open(0, 0);
2314 xengnttab_map_grant_ref(xg, 0, 0, 0);
2315
2316 return 0;
2317}
2318EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002319 compile_prog "" "$xen_libs $xen_stable_libs"
2320 then
2321 xen_ctrl_version=40701
2322 xen=yes
2323 elif
2324 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002325#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002326#include <stdint.h>
2327int main(void) {
2328 xc_interface *xc = NULL;
2329 xen_domain_handle_t handle;
2330 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2331 return 0;
2332}
2333EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002334 compile_prog "" "$xen_libs"
2335 then
2336 xen_ctrl_version=40700
2337 xen=yes
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002338
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002339 # Xen 4.6
2340 elif
2341 cat > $TMPC <<EOF &&
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002342#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002343#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002344#include <stdint.h>
2345#include <xen/hvm/hvm_info_table.h>
2346#if !defined(HVM_MAX_VCPUS)
2347# error HVM_MAX_VCPUS not defined
2348#endif
2349int main(void) {
2350 xc_interface *xc;
2351 xs_daemon_open();
2352 xc = xc_interface_open(0, 0, 0);
2353 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2354 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002355 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002356 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002357 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002358 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002359 return 0;
2360}
2361EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002362 compile_prog "" "$xen_libs"
2363 then
2364 xen_ctrl_version=40600
2365 xen=yes
Jan Beulichd8b441a2015-07-24 03:38:28 -06002366
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002367 # Xen 4.5
2368 elif
2369 cat > $TMPC <<EOF &&
Jan Beulichd8b441a2015-07-24 03:38:28 -06002370#include <xenctrl.h>
2371#include <xenstore.h>
2372#include <stdint.h>
2373#include <xen/hvm/hvm_info_table.h>
2374#if !defined(HVM_MAX_VCPUS)
2375# error HVM_MAX_VCPUS not defined
2376#endif
2377int main(void) {
2378 xc_interface *xc;
2379 xs_daemon_open();
2380 xc = xc_interface_open(0, 0, 0);
2381 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2382 xc_gnttab_open(NULL, 0);
2383 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2384 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002385 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2386 return 0;
2387}
2388EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002389 compile_prog "" "$xen_libs"
2390 then
2391 xen_ctrl_version=40500
2392 xen=yes
Paul Durrant3996e852015-01-20 11:06:19 +00002393
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002394 elif
2395 cat > $TMPC <<EOF &&
Paul Durrant3996e852015-01-20 11:06:19 +00002396#include <xenctrl.h>
2397#include <xenstore.h>
2398#include <stdint.h>
2399#include <xen/hvm/hvm_info_table.h>
2400#if !defined(HVM_MAX_VCPUS)
2401# error HVM_MAX_VCPUS not defined
2402#endif
2403int main(void) {
2404 xc_interface *xc;
2405 xs_daemon_open();
2406 xc = xc_interface_open(0, 0, 0);
2407 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2408 xc_gnttab_open(NULL, 0);
2409 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2410 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002411 return 0;
2412}
2413EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002414 compile_prog "" "$xen_libs"
2415 then
2416 xen_ctrl_version=40200
2417 xen=yes
Stefano Stabellini8688e062012-04-17 17:04:18 +00002418
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002419 else
2420 if test "$xen" = "yes" ; then
2421 feature_not_found "xen (unsupported version)" \
2422 "Install a supported xen (xen 4.2 or newer)"
2423 fi
2424 xen=no
Juan Quintelafc321b42009-08-12 18:29:55 +02002425 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002426
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002427 if test "$xen" = yes; then
2428 if test $xen_ctrl_version -ge 40701 ; then
2429 libs_softmmu="$xen_stable_libs $libs_softmmu"
2430 fi
2431 libs_softmmu="$xen_libs $libs_softmmu"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002432 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002433 fi
aliguorie37630c2009-04-22 15:19:10 +00002434fi
2435
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002436if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002437 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002438 xen_pci_passthrough=yes
2439 else
2440 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002441 error_exit "User requested feature Xen PCI Passthrough" \
2442 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002443 fi
2444 xen_pci_passthrough=no
2445 fi
2446fi
2447
Ian Campbell64a7ad62016-01-15 13:23:44 +00002448if test "$xen_pv_domain_build" = "yes" &&
2449 test "$xen" != "yes"; then
2450 error_exit "User requested Xen PV domain builder support" \
2451 "which requires Xen support."
2452fi
2453
aliguorie37630c2009-04-22 15:19:10 +00002454##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002455# Sparse probe
2456if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002457 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002458 sparse=yes
2459 else
2460 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002461 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002462 fi
2463 sparse=no
2464 fi
2465fi
2466
2467##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002468# X11 probe
2469x11_cflags=
2470x11_libs=-lX11
2471if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002472 x11_cflags=$($pkg_config --cflags x11)
2473 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002474fi
2475
2476##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002477# GTK probe
2478
Stefan Weil9e04c682014-05-17 16:29:18 +02002479if test "$gtkabi" = ""; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002480 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2481 # Use 2.0 as a fallback if that is available.
2482 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002483 gtkabi=3.0
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002484 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002485 gtkabi=2.0
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002486 else
2487 gtkabi=3.0
Stefan Weil9e04c682014-05-17 16:29:18 +02002488 fi
2489fi
2490
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002491if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002492 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002493 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002494 if test "$gtkabi" = "3.0" ; then
2495 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002496 else
2497 gtkversion="2.18.0"
2498 fi
2499 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002500 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2501 gtk_libs=$($pkg_config --libs $gtkpackage)
2502 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002503 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002504 gtk_cflags="$gtk_cflags $x11_cflags"
2505 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002506 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002507 libs_softmmu="$gtk_libs $libs_softmmu"
2508 gtk="yes"
2509 elif test "$gtk" = "yes"; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002510 feature_not_found "gtk" "Install gtk3-devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002511 else
2512 gtk="no"
2513 fi
2514fi
2515
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002516
2517##########################################
2518# GNUTLS probe
2519
Peter Maydell37371292015-07-24 18:28:08 +01002520gnutls_works() {
2521 # Unfortunately some distros have bad pkg-config information for gnutls
2522 # such that it claims to exist but you get a compiler error if you try
2523 # to use the options returned by --libs. Specifically, Ubuntu for --static
2524 # builds doesn't work:
2525 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2526 #
2527 # So sanity check the cflags/libs before assuming gnutls can be used.
2528 if ! $pkg_config --exists "gnutls"; then
2529 return 1
2530 fi
2531
2532 write_c_skeleton
2533 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2534}
2535
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002536gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002537gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002538if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002539 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002540 gnutls_cflags=$($pkg_config --cflags gnutls)
2541 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002542 libs_softmmu="$gnutls_libs $libs_softmmu"
2543 libs_tools="$gnutls_libs $libs_tools"
2544 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2545 gnutls="yes"
2546
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002547 # gnutls_rnd requires >= 2.11.0
2548 if $pkg_config --exists "gnutls >= 2.11.0"; then
2549 gnutls_rnd="yes"
2550 else
2551 gnutls_rnd="no"
2552 fi
2553
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002554 if $pkg_config --exists 'gnutls >= 3.0'; then
2555 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002556 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002557 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002558 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002559 *gcrypt*)
2560 gnutls_gcrypt=yes
2561 gnutls_nettle=no
2562 ;;
2563 *nettle*)
2564 gnutls_gcrypt=no
2565 gnutls_nettle=yes
2566 ;;
2567 *)
2568 gnutls_gcrypt=yes
2569 gnutls_nettle=no
2570 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002571 esac
2572 else
2573 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002574 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002575 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002576 elif test "$gnutls" = "yes"; then
2577 feature_not_found "gnutls" "Install gnutls devel"
2578 else
2579 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002580 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002581 fi
2582else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002583 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002584fi
2585
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002586
2587# If user didn't give a --disable/enable-gcrypt flag,
2588# then mark as disabled if user requested nettle
2589# explicitly, or if gnutls links to nettle
2590if test -z "$gcrypt"
2591then
2592 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2593 then
2594 gcrypt="no"
2595 fi
2596fi
2597
2598# If user didn't give a --disable/enable-nettle flag,
2599# then mark as disabled if user requested gcrypt
2600# explicitly, or if gnutls links to gcrypt
2601if test -z "$nettle"
2602then
2603 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2604 then
2605 nettle="no"
2606 fi
2607fi
2608
2609has_libgcrypt_config() {
2610 if ! has "libgcrypt-config"
2611 then
2612 return 1
2613 fi
2614
2615 if test -n "$cross_prefix"
2616 then
Stefan Weil89138852016-05-16 15:10:20 +02002617 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002618 if test "$host-" != $cross_prefix
2619 then
2620 return 1
2621 fi
2622 fi
2623
2624 return 0
2625}
2626
2627if test "$gcrypt" != "no"; then
2628 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002629 gcrypt_cflags=$(libgcrypt-config --cflags)
2630 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002631 # Debian has remove -lgpg-error from libgcrypt-config
2632 # as it "spreads unnecessary dependencies" which in
2633 # turn breaks static builds...
2634 if test "$static" = "yes"
2635 then
2636 gcrypt_libs="$gcrypt_libs -lgpg-error"
2637 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002638 libs_softmmu="$gcrypt_libs $libs_softmmu"
2639 libs_tools="$gcrypt_libs $libs_tools"
2640 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002641 gcrypt="yes"
2642 if test -z "$nettle"; then
2643 nettle="no"
2644 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002645
2646 cat > $TMPC << EOF
2647#include <gcrypt.h>
2648int main(void) {
2649 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2650 GCRY_MD_SHA256,
2651 NULL, 0, 0, 0, NULL);
2652 return 0;
2653}
2654EOF
2655 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2656 gcrypt_kdf=yes
2657 fi
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002658
2659 cat > $TMPC << EOF
2660#include <gcrypt.h>
2661int main(void) {
2662 gcry_mac_hd_t handle;
2663 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2664 GCRY_MAC_FLAG_SECURE, NULL);
2665 return 0;
2666}
2667EOF
2668 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2669 gcrypt_hmac=yes
2670 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002671 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002672 if test "$gcrypt" = "yes"; then
2673 feature_not_found "gcrypt" "Install gcrypt devel"
2674 else
2675 gcrypt="no"
2676 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002677 fi
2678fi
2679
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002680
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002681if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002682 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002683 nettle_cflags=$($pkg_config --cflags nettle)
2684 nettle_libs=$($pkg_config --libs nettle)
2685 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002686 libs_softmmu="$nettle_libs $libs_softmmu"
2687 libs_tools="$nettle_libs $libs_tools"
2688 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002689 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002690
2691 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002692#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002693#include <nettle/pbkdf2.h>
2694int main(void) {
2695 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2696 return 0;
2697}
2698EOF
2699 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2700 nettle_kdf=yes
2701 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002702 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002703 if test "$nettle" = "yes"; then
2704 feature_not_found "nettle" "Install nettle devel"
2705 else
2706 nettle="no"
2707 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002708 fi
2709fi
2710
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002711if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2712then
2713 error_exit "Only one of gcrypt & nettle can be enabled"
2714fi
2715
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002716##########################################
2717# libtasn1 - only for the TLS creds/session test suite
2718
2719tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002720tasn1_cflags=""
2721tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002722if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002723 tasn1_cflags=$($pkg_config --cflags libtasn1)
2724 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002725else
2726 tasn1=no
2727fi
2728
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002729
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002730##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002731# getifaddrs (for tests/test-io-channel-socket )
2732
2733have_ifaddrs_h=yes
2734if ! check_include "ifaddrs.h" ; then
2735 have_ifaddrs_h=no
2736fi
2737
2738##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002739# VTE probe
2740
2741if test "$vte" != "no"; then
2742 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002743 vteminversion="0.32.0"
2744 if $pkg_config --exists "vte-2.91"; then
2745 vtepackage="vte-2.91"
2746 else
2747 vtepackage="vte-2.90"
2748 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002749 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002750 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002751 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002752 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002753 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002754 vte_cflags=$($pkg_config --cflags $vtepackage)
2755 vte_libs=$($pkg_config --libs $vtepackage)
2756 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002757 libs_softmmu="$vte_libs $libs_softmmu"
2758 vte="yes"
2759 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002760 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002761 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002762 else
2763 feature_not_found "vte" "Install libvte devel"
2764 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002765 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002766 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002767 fi
2768fi
2769
2770##########################################
bellard11d9f692004-04-02 20:55:59 +00002771# SDL probe
2772
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002773# Look for sdl configuration program (pkg-config or sdl-config). Try
2774# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002775
Cole Robinsonee8466d2016-05-06 14:03:07 -04002776if test "$sdlabi" = ""; then
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002777 if $pkg_config --exists "sdl2"; then
Cole Robinsonee8466d2016-05-06 14:03:07 -04002778 sdlabi=2.0
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002779 elif $pkg_config --exists "sdl"; then
Cole Robinsonee8466d2016-05-06 14:03:07 -04002780 sdlabi=1.2
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002781 else
2782 sdlabi=2.0
Cole Robinsonee8466d2016-05-06 14:03:07 -04002783 fi
2784fi
2785
Dave Airlie47c03742013-12-10 14:05:51 +10002786if test $sdlabi = "2.0"; then
2787 sdl_config=$sdl2_config
2788 sdlname=sdl2
2789 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002790elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002791 sdlname=sdl
2792 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002793else
2794 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002795fi
2796
Stefan Weil89138852016-05-16 15:10:20 +02002797if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002798 sdl_config=$sdlconfigname
2799fi
2800
2801if $pkg_config $sdlname --exists; then
2802 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002803 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002804elif has ${sdl_config}; then
2805 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002806 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002807else
2808 if test "$sdl" = "yes" ; then
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002809 feature_not_found "sdl" "Install SDL2-devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002810 fi
2811 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002812fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002813if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002814 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2815fi
bellard11d9f692004-04-02 20:55:59 +00002816
Paolo Bonzini9316f802010-01-13 09:52:55 +01002817sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002818if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002819 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002820#include <SDL.h>
2821#undef main /* We don't want SDL to override our main() */
2822int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2823EOF
Stefan Weil89138852016-05-16 15:10:20 +02002824 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002825 if test "$static" = "yes" ; then
Thomas Huth5f37e6d2017-06-13 20:00:44 +02002826 if $pkg_config $sdlname --exists; then
2827 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2828 else
2829 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2830 fi
TeLeMan74f42e12010-02-08 13:56:44 +08002831 else
Stefan Weil89138852016-05-16 15:10:20 +02002832 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002833 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002834 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002835 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002836 sdl_too_old=yes
2837 else
Peter Maydella30878e2015-08-14 16:10:52 +01002838 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002839 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002840
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002841 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002842 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002843 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002844 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2845 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002846 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002847 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002848 :
2849 else
2850 sdl=no
2851 fi
2852 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002853 else # sdl not found
2854 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002855 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002856 fi
2857 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002858 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002859fi
bellard11d9f692004-04-02 20:55:59 +00002860
aliguori5368a422009-03-03 17:37:21 +00002861if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002862 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002863#include <SDL.h>
2864#if defined(SDL_VIDEO_DRIVER_X11)
2865#include <X11/XKBlib.h>
2866#else
2867#error No x11 support
2868#endif
2869int main(void) { return 0; }
2870EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002871 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2872 sdl_cflags="$sdl_cflags $x11_cflags"
2873 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002874 fi
aliguori5368a422009-03-03 17:37:21 +00002875fi
2876
ths8f28f3f2007-01-05 21:25:54 +00002877##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002878# RDMA needs OpenFabrics libraries
2879if test "$rdma" != "no" ; then
2880 cat > $TMPC <<EOF
2881#include <rdma/rdma_cma.h>
2882int main(void) { return 0; }
2883EOF
2884 rdma_libs="-lrdmacm -libverbs"
2885 if compile_prog "" "$rdma_libs" ; then
2886 rdma="yes"
Michael R. Hines2da776d2013-07-22 10:01:54 -04002887 else
2888 if test "$rdma" = "yes" ; then
2889 error_exit \
2890 " OpenFabrics librdmacm/libibverbs not present." \
2891 " Your options:" \
2892 " (1) Fast: Install infiniband packages from your distro." \
2893 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2894 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2895 fi
2896 rdma="no"
2897 fi
2898fi
2899
ths8d5d2d42007-08-25 01:37:51 +00002900
2901##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002902# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002903if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002904 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002905#include <sasl/sasl.h>
2906#include <stdio.h>
2907int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2908EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002909 # Assuming Cyrus-SASL installed in /usr prefix
2910 vnc_sasl_cflags=""
2911 vnc_sasl_libs="-lsasl2"
2912 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2913 vnc_sasl=yes
2914 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002915 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002916 else
2917 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002918 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002919 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002920 vnc_sasl=no
2921 fi
aliguori2f9606b2009-03-06 20:27:28 +00002922fi
2923
2924##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002925# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002926if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002927cat > $TMPC <<EOF
2928#include <stdio.h>
2929#include <jpeglib.h>
2930int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2931EOF
2932 vnc_jpeg_cflags=""
2933 vnc_jpeg_libs="-ljpeg"
2934 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2935 vnc_jpeg=yes
2936 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002937 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002938 else
2939 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002940 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002941 fi
2942 vnc_jpeg=no
2943 fi
2944fi
2945
2946##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002947# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002948if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002949cat > $TMPC <<EOF
2950//#include <stdio.h>
2951#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002952#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002953int main(void) {
2954 png_structp png_ptr;
2955 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002956 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002957}
2958EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002959 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002960 vnc_png_cflags=$($pkg_config libpng --cflags)
2961 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002962 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002963 vnc_png_cflags=""
2964 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002965 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002966 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2967 vnc_png=yes
2968 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002969 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002970 else
2971 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002972 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002973 fi
2974 vnc_png=no
2975 fi
2976fi
2977
2978##########################################
Gerd Hoffmann6a021532017-10-05 17:33:28 +02002979# xkbcommon probe
2980if test "$xkbcommon" != "no" ; then
2981 if $pkg_config xkbcommon --exists; then
2982 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
2983 xkbcommon_libs=$($pkg_config xkbcommon --libs)
2984 xkbcommon=yes
2985 else
2986 if test "$xkbcommon" = "yes" ; then
2987 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
2988 fi
2989 xkbcommon=no
2990 fi
2991fi
2992
2993##########################################
aliguori76655d62009-03-06 20:27:37 +00002994# fnmatch() probe, used for ACL routines
2995fnmatch="no"
2996cat > $TMPC << EOF
2997#include <fnmatch.h>
2998int main(void)
2999{
3000 fnmatch("foo", "foo", 0);
3001 return 0;
3002}
3003EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003004if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00003005 fnmatch="yes"
3006fi
3007
3008##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06003009# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003010if test "$xfs" != "no" ; then
3011 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01003012#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003013#include <xfs/xfs.h>
3014int main(void)
3015{
3016 xfsctl(NULL, 0, 0, NULL);
3017 return 0;
3018}
3019EOF
3020 if compile_prog "" "" ; then
3021 xfs="yes"
3022 else
3023 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003024 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003025 fi
3026 xfs=no
3027 fi
3028fi
3029
3030##########################################
ths8a16d272008-07-19 09:56:24 +00003031# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02003032if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003033 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00003034 cat > $TMPC << EOF
3035#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00003036int main(void)
3037{
3038 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01003039 char s[] = "";
3040 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00003041 return 0;
3042}
ths8a16d272008-07-19 09:56:24 +00003043EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003044 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003045 vde=yes
Juan Quinteladfb278b2009-08-12 18:20:27 +02003046 else
3047 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003048 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02003049 fi
3050 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02003051 fi
ths8a16d272008-07-19 09:56:24 +00003052fi
3053
3054##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003055# netmap support probe
3056# Apart from looking for netmap headers, we make sure that the host API version
3057# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3058# a minor/major version number. Minor new features will be marked with values up
3059# to 15, and if something happens that requires a change to the backend we will
3060# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01003061if test "$netmap" != "no" ; then
3062 cat > $TMPC << EOF
3063#include <inttypes.h>
3064#include <net/if.h>
3065#include <net/netmap.h>
3066#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003067#if (NETMAP_API < 11) || (NETMAP_API > 15)
3068#error
3069#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01003070int main(void) { return 0; }
3071EOF
3072 if compile_prog "" "" ; then
3073 netmap=yes
3074 else
3075 if test "$netmap" = "yes" ; then
3076 feature_not_found "netmap"
3077 fi
3078 netmap=no
3079 fi
3080fi
3081
3082##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05003083# libcap-ng library probe
3084if test "$cap_ng" != "no" ; then
3085 cap_libs="-lcap-ng"
3086 cat > $TMPC << EOF
3087#include <cap-ng.h>
3088int main(void)
3089{
3090 capng_capability_to_name(CAPNG_EFFECTIVE);
3091 return 0;
3092}
3093EOF
3094 if compile_prog "" "$cap_libs" ; then
3095 cap_ng=yes
3096 libs_tools="$cap_libs $libs_tools"
3097 else
3098 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003099 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05003100 fi
3101 cap_ng=no
3102 fi
3103fi
3104
3105##########################################
malcc2de5c92008-06-28 19:13:06 +00003106# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00003107
malcc2de5c92008-06-28 19:13:06 +00003108audio_drv_probe()
3109{
3110 drv=$1
3111 hdr=$2
3112 lib=$3
3113 exp=$4
3114 cfl=$5
3115 cat > $TMPC << EOF
3116#include <$hdr>
3117int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00003118EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003119 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00003120 :
3121 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003122 error_exit "$drv check failed" \
3123 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00003124 fi
3125}
3126
Stefan Weil89138852016-05-16 15:10:20 +02003127audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00003128for drv in $audio_drv_list; do
3129 case $drv in
3130 alsa)
3131 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01003132 "return snd_pcm_close((snd_pcm_t *)0);"
Fam Zhengb1149912017-09-07 16:29:13 +08003133 alsa_libs="-lasound"
malcc2de5c92008-06-28 19:13:06 +00003134 ;;
3135
malcb8e59f12008-07-02 21:03:08 +00003136 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02003137 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3138 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Fam Zhengb1149912017-09-07 16:29:13 +08003139 pulse_libs="-lpulse"
Juan Quintela67f86e82009-08-03 14:46:59 +02003140 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00003141 ;;
3142
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003143 sdl)
3144 if test "$sdl" = "no"; then
3145 error_exit "sdl not found or disabled, can not use sdl audio driver"
3146 fi
3147 ;;
3148
Juan Quintela997e6902009-08-03 14:46:29 +02003149 coreaudio)
Fam Zhengb1149912017-09-07 16:29:13 +08003150 coreaudio_libs="-framework CoreAudio"
Juan Quintela997e6902009-08-03 14:46:29 +02003151 ;;
3152
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003153 dsound)
Fam Zhengb1149912017-09-07 16:29:13 +08003154 dsound_libs="-lole32 -ldxguid"
malcd5631632009-10-10 01:13:41 +04003155 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003156 ;;
3157
3158 oss)
Fam Zhengb1149912017-09-07 16:29:13 +08003159 oss_libs="$oss_lib"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003160 ;;
3161
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003162 wav)
3163 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00003164 ;;
3165
malce4c63a62008-07-19 16:15:16 +00003166 *)
malc1c9b2a52008-07-19 16:57:30 +00003167 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01003168 error_exit "Unknown driver '$drv' selected" \
3169 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00003170 }
3171 ;;
malcc2de5c92008-06-28 19:13:06 +00003172 esac
3173done
ths8f28f3f2007-01-05 21:25:54 +00003174
balrog4d3b6f62008-02-10 16:33:14 +00003175##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00003176# BrlAPI probe
3177
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003178if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003179 brlapi_libs="-lbrlapi"
3180 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00003181#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003182#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00003183int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3184EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003185 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003186 brlapi=yes
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003187 else
3188 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003189 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003190 fi
3191 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02003192 fi
3193fi
aurel322e4d9fb2008-04-08 06:01:02 +00003194
3195##########################################
balrog4d3b6f62008-02-10 16:33:14 +00003196# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02003197if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003198 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003199 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3200 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003201 else
Samuel Thibault7c703002016-11-09 11:27:52 +01003202 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003203 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003204 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02003205 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00003206 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003207#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00003208#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003209#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01003210int main(void) {
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003211 wchar_t wch = L'w';
3212 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01003213 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003214 addwstr(L"wide chars\n");
3215 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003216 add_wch(WACS_DEGREE);
Kamil Rytarowski271f37a2017-04-26 12:50:27 +02003217 return 0;
Stefan Weilef9a2522011-12-17 17:46:02 +01003218}
balrog4d3b6f62008-02-10 16:33:14 +00003219EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003220 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003221 for curses_inc in $curses_inc_list; do
Peter Maydellb01a4fd2017-06-02 15:35:38 +01003222 # Make sure we get the wide character prototypes
3223 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
Samuel Thibault7c703002016-11-09 11:27:52 +01003224 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003225 for curses_lib in $curses_lib_list; do
3226 unset IFS
3227 if compile_prog "$curses_inc" "$curses_lib" ; then
3228 curses_found=yes
3229 QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3230 libs_softmmu="$curses_lib $libs_softmmu"
3231 break
3232 fi
3233 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003234 if test "$curses_found" = yes ; then
3235 break
3236 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003237 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003238 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003239 if test "$curses_found" = "yes" ; then
3240 curses=yes
3241 else
3242 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003243 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003244 fi
3245 curses=no
3246 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003247fi
balrog4d3b6f62008-02-10 16:33:14 +00003248
blueswir1414f0da2008-08-15 18:20:52 +00003249##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003250# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003251if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003252 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003253 curlconfig="$pkg_config libcurl"
3254 else
3255 curlconfig=curl-config
3256 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003257 cat > $TMPC << EOF
3258#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003259int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003260EOF
Stefan Weil89138852016-05-16 15:10:20 +02003261 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3262 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003263 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003264 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003265 else
3266 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003267 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003268 fi
3269 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003270 fi
3271fi # test "$curl"
3272
3273##########################################
balrogfb599c92008-09-28 23:49:55 +00003274# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003275if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003276 cat > $TMPC << EOF
3277#include <bluetooth/bluetooth.h>
3278int main(void) { return bt_error(0); }
3279EOF
Stefan Weil89138852016-05-16 15:10:20 +02003280 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3281 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003282 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003283 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003284 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003285 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003286 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003287 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003288 fi
balroge820e3f2008-09-30 02:27:44 +00003289 bluez="no"
3290 fi
balrogfb599c92008-09-28 23:49:55 +00003291fi
3292
3293##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003294# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003295
Peter Maydellad04d8c2017-04-03 14:04:15 +01003296if test "$mingw32" = yes; then
3297 glib_req_ver=2.30
3298else
3299 glib_req_ver=2.22
3300fi
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003301glib_modules=gthread-2.0
3302if test "$modules" = yes; then
3303 glib_modules="$glib_modules gmodule-2.0"
3304fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003305
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003306# This workaround is required due to a bug in pkg-config file for glib as it
3307# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3308
3309if test "$static" = yes -a "$mingw32" = yes; then
3310 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3311fi
3312
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003313for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003314 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003315 glib_cflags=$($pkg_config --cflags $i)
3316 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003317 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003318 LIBS="$glib_libs $LIBS"
3319 libs_qga="$glib_libs $libs_qga"
3320 else
3321 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3322 fi
3323done
3324
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003325# Sanity check that the current size_t matches the
3326# size that glib thinks it should be. This catches
3327# problems on multi-arch where people try to build
3328# 32-bit QEMU while pointing at 64-bit glib headers
3329cat > $TMPC <<EOF
3330#include <glib.h>
3331#include <unistd.h>
3332
3333#define QEMU_BUILD_BUG_ON(x) \
3334 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3335
3336int main(void) {
3337 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3338 return 0;
3339}
3340EOF
3341
Stefan Weil5919e032016-04-28 23:33:41 +02003342if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003343 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3344 "You probably need to set PKG_CONFIG_LIBDIR"\
3345 "to point to the right pkg-config files for your"\
3346 "build target"
3347fi
3348
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003349# g_test_trap_subprocess added in 2.38. Used by some tests.
3350glib_subprocess=yes
Marc-André Lureaua0492232017-01-04 21:57:22 +01003351if ! $pkg_config --atleast-version=2.38 glib-2.0; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003352 glib_subprocess=no
3353fi
3354
John Snowbbbf2e02015-03-25 18:57:38 -04003355# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3356cat > $TMPC << EOF
3357#include <glib.h>
3358int main(void) { return 0; }
3359EOF
3360if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3361 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3362 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3363 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3364 fi
3365fi
3366
Fam Zhenge26110c2014-02-10 14:48:57 +08003367##########################################
3368# SHA command probe for modules
3369if test "$modules" = yes; then
3370 shacmd_probe="sha1sum sha1 shasum"
3371 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003372 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003373 shacmd="$c"
3374 break
3375 fi
3376 done
3377 if test "$shacmd" = ""; then
3378 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3379 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003380fi
3381
3382##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003383# pixman support probe
3384
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003385if test "$want_tools" = "no" -a "$softmmu" = "no"; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003386 pixman_cflags=
3387 pixman_libs=
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003388elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Stefan Weil89138852016-05-16 15:10:20 +02003389 pixman_cflags=$($pkg_config --cflags pixman-1)
3390 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003391else
Gerd Hoffmannc12b6d72017-09-05 16:01:15 +02003392 error_exit "pixman >= 0.21.8 not present." \
3393 "Please install the pixman devel package."
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003394fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003395
3396##########################################
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003397# libmpathpersist probe
3398
3399if test "$mpath" != "no" ; then
3400 cat > $TMPC <<EOF
3401#include <libudev.h>
3402#include <mpath_persist.h>
3403unsigned mpath_mx_alloc_len = 1024;
3404int logsink;
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003405static struct config *multipath_conf;
3406extern struct udev *udev;
3407extern struct config *get_multipath_config(void);
3408extern void put_multipath_config(struct config *conf);
3409struct udev *udev;
3410struct config *get_multipath_config(void) { return multipath_conf; }
3411void put_multipath_config(struct config *conf) { }
3412
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003413int main(void) {
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003414 udev = udev_new();
3415 multipath_conf = mpath_lib_init();
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003416 return 0;
3417}
3418EOF
3419 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3420 mpathpersist=yes
3421 else
3422 mpathpersist=no
3423 fi
3424else
3425 mpathpersist=no
3426fi
3427
3428##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303429# libcap probe
3430
3431if test "$cap" != "no" ; then
3432 cat > $TMPC <<EOF
3433#include <stdio.h>
3434#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003435int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303436EOF
3437 if compile_prog "" "-lcap" ; then
3438 cap=yes
3439 else
3440 cap=no
3441 fi
3442fi
3443
3444##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003445# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003446PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003447
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003448pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003449cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003450#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003451static void *f(void *p) { return NULL; }
3452int main(void) {
3453 pthread_t thread;
3454 pthread_create(&thread, 0, f, 0);
3455 return 0;
3456}
blueswir1414f0da2008-08-15 18:20:52 +00003457EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003458if compile_prog "" "" ; then
3459 pthread=yes
3460else
3461 for pthread_lib in $PTHREADLIBS_LIST; do
3462 if compile_prog "" "$pthread_lib" ; then
3463 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003464 found=no
3465 for lib_entry in $LIBS; do
3466 if test "$lib_entry" = "$pthread_lib"; then
3467 found=yes
3468 break
3469 fi
3470 done
3471 if test "$found" = "no"; then
3472 LIBS="$pthread_lib $LIBS"
Marc-André Lureau14ab3aa2018-01-04 17:05:06 +01003473 libs_qga="$pthread_lib $libs_qga"
Peter Portantee3c56762012-04-20 10:36:12 -04003474 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003475 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003476 break
3477 fi
3478 done
3479fi
blueswir1414f0da2008-08-15 18:20:52 +00003480
Anthony Liguori4617e592009-08-25 17:21:56 -05003481if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003482 error_exit "pthread check failed" \
3483 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003484fi
3485
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003486# check for pthread_setname_np
3487pthread_setname_np=no
3488cat > $TMPC << EOF
3489#include <pthread.h>
3490
3491static void *f(void *p) { return NULL; }
3492int main(void)
3493{
3494 pthread_t thread;
3495 pthread_create(&thread, 0, f, 0);
3496 pthread_setname_np(thread, "QEMU");
3497 return 0;
3498}
3499EOF
3500if compile_prog "" "$pthread_lib" ; then
3501 pthread_setname_np=yes
3502fi
3503
aliguoribf9298b2008-12-05 20:05:26 +00003504##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003505# rbd probe
3506if test "$rbd" != "no" ; then
3507 cat > $TMPC <<EOF
3508#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003509#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003510int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003511 rados_t cluster;
3512 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003513 return 0;
3514}
3515EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003516 rbd_libs="-lrbd -lrados"
3517 if compile_prog "" "$rbd_libs" ; then
3518 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003519 else
3520 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003521 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003522 fi
3523 rbd=no
3524 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003525fi
3526
3527##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003528# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003529min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003530if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003531 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003532 libssh2_cflags=$($pkg_config libssh2 --cflags)
3533 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003534 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003535 else
3536 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003537 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003538 fi
3539 libssh2=no
3540 fi
3541fi
3542
3543##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003544# libssh2_sftp_fsync probe
3545
3546if test "$libssh2" = "yes"; then
3547 cat > $TMPC <<EOF
3548#include <stdio.h>
3549#include <libssh2.h>
3550#include <libssh2_sftp.h>
3551int main(void) {
3552 LIBSSH2_SESSION *session;
3553 LIBSSH2_SFTP *sftp;
3554 LIBSSH2_SFTP_HANDLE *sftp_handle;
3555 session = libssh2_session_init ();
3556 sftp = libssh2_sftp_init (session);
3557 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3558 libssh2_sftp_fsync (sftp_handle);
3559 return 0;
3560}
3561EOF
3562 # libssh2_cflags/libssh2_libs defined in previous test.
3563 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3564 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3565 fi
3566fi
3567
3568##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003569# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003570
3571if test "$linux_aio" != "no" ; then
3572 cat > $TMPC <<EOF
3573#include <libaio.h>
3574#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003575#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003576int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3577EOF
3578 if compile_prog "" "-laio" ; then
3579 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003580 else
3581 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003582 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003583 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003584 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003585 fi
3586fi
3587
3588##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003589# TPM passthrough is only on x86 Linux
3590
3591if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3592 tpm_passthrough=$tpm
3593else
3594 tpm_passthrough=no
3595fi
3596
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003597# TPM emulator is for all posix systems
3598if test "$mingw32" != "yes"; then
3599 tpm_emulator=$tpm
3600else
3601 tpm_emulator=no
3602fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003603##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003604# attr probe
3605
3606if test "$attr" != "no" ; then
3607 cat > $TMPC <<EOF
3608#include <stdio.h>
3609#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003610#ifdef CONFIG_LIBATTR
3611#include <attr/xattr.h>
3612#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003613#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003614#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003615int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3616EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003617 if compile_prog "" "" ; then
3618 attr=yes
3619 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003620 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003621 attr=yes
3622 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003623 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003624 else
3625 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003626 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003627 fi
3628 attr=no
3629 fi
3630fi
3631
3632##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003633# iovec probe
3634cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003635#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003636#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003637#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003638int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003639EOF
3640iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003641if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003642 iovec=yes
3643fi
3644
aurel32f652e6a2008-12-16 10:43:48 +00003645##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003646# preadv probe
3647cat > $TMPC <<EOF
3648#include <sys/types.h>
3649#include <sys/uio.h>
3650#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003651int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003652EOF
3653preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003654if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003655 preadv=yes
3656fi
3657
3658##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003659# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003660# fdt support is mandatory for at least some target architectures,
3661# so insist on it if we're building those system emulators.
3662fdt_required=no
3663for target in $target_list; do
3664 case $target in
Paul Burtondf1d8a12016-09-08 15:51:58 +01003665 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003666 fdt_required=yes
3667 ;;
3668 esac
3669done
3670
3671if test "$fdt_required" = "yes"; then
3672 if test "$fdt" = "no"; then
3673 error_exit "fdt disabled but some requested targets require it." \
3674 "You can turn off fdt only if you also disable all the system emulation" \
3675 "targets which need it (by specifying a cut down --target-list)."
3676 fi
3677 fdt=yes
3678fi
3679
Juan Quintela2df87df2009-08-12 18:29:54 +02003680if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003681 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003682 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003683 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003684 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003685#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003686#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003687int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003688EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003689 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003690 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003691 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003692 else
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003693 # have GIT checkout, so activate dtc submodule
3694 if test -e "${source_path}/.git" ; then
3695 git_submodules="${git_submodules} dtc"
3696 fi
3697 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
3698 fdt=yes
3699 dtc_internal="yes"
3700 mkdir -p dtc
3701 if [ "$pwd_is_source_path" != "y" ] ; then
3702 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3703 symlink "$source_path/dtc/scripts" "dtc/scripts"
3704 fi
3705 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3706 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3707 elif test "$fdt" = "yes" ; then
3708 # Not a git build & no libfdt found, prompt for system install
3709 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3710 "Please install the DTC (libfdt) devel package"
3711 else
3712 # don't have and don't want
3713 fdt_libs=
3714 fdt=no
3715 fi
aurel32f652e6a2008-12-16 10:43:48 +00003716 fi
3717fi
3718
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003719libs_softmmu="$libs_softmmu $fdt_libs"
3720
Michael Walle20ff0752011-03-07 23:32:39 +01003721##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003722# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003723
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003724if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003725 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003726 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003727 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3728 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003729 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003730 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3731 gtk_gl="yes"
3732 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003733 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003734 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003735 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003736 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003737 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003738 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003739 opengl_libs=""
3740 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003741 fi
3742fi
3743
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003744if test "$opengl" = "yes"; then
3745 cat > $TMPC << EOF
3746#include <epoxy/egl.h>
3747#ifndef EGL_MESA_image_dma_buf_export
3748# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3749#endif
3750int main(void) { return 0; }
3751EOF
3752 if compile_prog "" "" ; then
3753 opengl_dmabuf=yes
3754 fi
3755fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003756
Klim Kireeved279a02018-01-12 12:01:19 +03003757##########################################
3758# libxml2 probe
3759if test "$libxml2" != "no" ; then
3760 if $pkg_config --exists libxml-2.0; then
3761 libxml2="yes"
3762 libxml2_cflags=$($pkg_config --cflags libxml-2.0)
3763 libxml2_libs=$($pkg_config --libs libxml-2.0)
3764 else
3765 if test "$libxml2" = "yes"; then
3766 feature_not_found "libxml2" "Install libxml2 devel"
3767 fi
3768 libxml2="no"
3769 fi
3770fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003771
Bharata B Raoeb100392012-09-24 14:42:45 +05303772##########################################
3773# glusterfs probe
3774if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003775 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303776 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003777 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3778 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003779 if $pkg_config --atleast-version=4 glusterfs-api; then
3780 glusterfs_xlator_opt="yes"
3781 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003782 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303783 glusterfs_discard="yes"
3784 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303785 if $pkg_config --atleast-version=6 glusterfs-api; then
Niels de Vosdf3a4292017-05-28 12:01:14 +05303786 glusterfs_fallocate="yes"
Bharata B Rao7c815372013-12-21 14:51:25 +05303787 glusterfs_zerofill="yes"
3788 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303789 else
3790 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003791 feature_not_found "GlusterFS backend support" \
3792 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303793 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303794 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303795 fi
3796fi
3797
aurel3239386ac2009-04-15 19:48:17 +00003798# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003799# emulator. This is done because older glibc versions don't
3800# have syscall stubs for these implemented. In that case we
3801# don't provide them even if kernel supports them.
3802#
3803inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003804cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003805#include <sys/inotify.h>
3806
3807int
3808main(void)
3809{
3810 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003811 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003812}
3813EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003814if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003815 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003816fi
3817
Riku Voipioc05c7a72010-03-26 15:25:11 +00003818inotify1=no
3819cat > $TMPC << EOF
3820#include <sys/inotify.h>
3821
3822int
3823main(void)
3824{
3825 /* try to start inotify */
3826 return inotify_init1(0);
3827}
3828EOF
3829if compile_prog "" "" ; then
3830 inotify1=yes
3831fi
3832
Riku Voipio099d6b02009-05-05 12:10:04 +03003833# check if pipe2 is there
3834pipe2=no
3835cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003836#include <unistd.h>
3837#include <fcntl.h>
3838
3839int main(void)
3840{
3841 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003842 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003843}
3844EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003845if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003846 pipe2=yes
3847fi
3848
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003849# check if accept4 is there
3850accept4=no
3851cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003852#include <sys/socket.h>
3853#include <stddef.h>
3854
3855int main(void)
3856{
3857 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3858 return 0;
3859}
3860EOF
3861if compile_prog "" "" ; then
3862 accept4=yes
3863fi
3864
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303865# check if tee/splice is there. vmsplice was added same time.
3866splice=no
3867cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303868#include <unistd.h>
3869#include <fcntl.h>
3870#include <limits.h>
3871
3872int main(void)
3873{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003874 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303875 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3876 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3877 return 0;
3878}
3879EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003880if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303881 splice=yes
3882fi
3883
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003884##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003885# libnuma probe
3886
3887if test "$numa" != "no" ; then
3888 cat > $TMPC << EOF
3889#include <numa.h>
3890int main(void) { return numa_available(); }
3891EOF
3892
3893 if compile_prog "" "-lnuma" ; then
3894 numa=yes
3895 libs_softmmu="-lnuma $libs_softmmu"
3896 else
3897 if test "$numa" = "yes" ; then
3898 feature_not_found "numa" "install numactl devel"
3899 fi
3900 numa=no
3901 fi
3902fi
3903
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003904if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3905 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3906 exit 1
3907fi
3908
Yang Zhong5a22ab72017-12-20 21:16:46 +08003909# Even if malloc_trim() is available, these non-libc memory allocators
3910# do not support it.
3911if test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then
3912 if test "$malloc_trim" = "yes" ; then
3913 echo "Disabling malloc_trim with non-libc memory allocator"
3914 fi
3915 malloc_trim="no"
3916fi
3917
3918#######################################
3919# malloc_trim
3920
3921if test "$malloc_trim" != "no" ; then
3922 cat > $TMPC << EOF
3923#include <malloc.h>
3924int main(void) { malloc_trim(0); return 0; }
3925EOF
3926 if compile_prog "" "" ; then
3927 malloc_trim="yes"
3928 else
3929 malloc_trim="no"
3930 fi
3931fi
3932
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003933##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003934# tcmalloc probe
3935
3936if test "$tcmalloc" = "yes" ; then
3937 cat > $TMPC << EOF
3938#include <stdlib.h>
3939int main(void) { malloc(1); return 0; }
3940EOF
3941
3942 if compile_prog "" "-ltcmalloc" ; then
3943 LIBS="-ltcmalloc $LIBS"
3944 else
3945 feature_not_found "tcmalloc" "install gperftools devel"
3946 fi
3947fi
3948
3949##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003950# jemalloc probe
3951
3952if test "$jemalloc" = "yes" ; then
3953 cat > $TMPC << EOF
3954#include <stdlib.h>
3955int main(void) { malloc(1); return 0; }
3956EOF
3957
3958 if compile_prog "" "-ljemalloc" ; then
3959 LIBS="-ljemalloc $LIBS"
3960 else
3961 feature_not_found "jemalloc" "install jemalloc devel"
3962 fi
3963fi
3964
3965##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003966# signalfd probe
3967signalfd="no"
3968cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003969#include <unistd.h>
3970#include <sys/syscall.h>
3971#include <signal.h>
3972int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3973EOF
3974
3975if compile_prog "" "" ; then
3976 signalfd=yes
3977fi
3978
Riku Voipioc2882b92009-08-12 15:08:24 +03003979# check if eventfd is supported
3980eventfd=no
3981cat > $TMPC << EOF
3982#include <sys/eventfd.h>
3983
3984int main(void)
3985{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003986 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003987}
3988EOF
3989if compile_prog "" "" ; then
3990 eventfd=yes
3991fi
3992
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003993# check if memfd is supported
3994memfd=no
3995cat > $TMPC << EOF
Paolo Bonzini75e5b702017-11-28 11:51:27 +01003996#include <sys/mman.h>
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003997
3998int main(void)
3999{
4000 return memfd_create("foo", MFD_ALLOW_SEALING);
4001}
4002EOF
4003if compile_prog "" "" ; then
4004 memfd=yes
4005fi
4006
4007
4008
Ulrich Hechtd0927932009-09-17 20:22:14 +03004009# check for fallocate
4010fallocate=no
4011cat > $TMPC << EOF
4012#include <fcntl.h>
4013
4014int main(void)
4015{
4016 fallocate(0, 0, 0, 0);
4017 return 0;
4018}
4019EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004020if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004021 fallocate=yes
4022fi
4023
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004024# check for fallocate hole punching
4025fallocate_punch_hole=no
4026cat > $TMPC << EOF
4027#include <fcntl.h>
4028#include <linux/falloc.h>
4029
4030int main(void)
4031{
4032 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
4033 return 0;
4034}
4035EOF
4036if compile_prog "" "" ; then
4037 fallocate_punch_hole=yes
4038fi
4039
Denis V. Lunevb953f072015-01-30 11:42:14 +03004040# check that fallocate supports range zeroing inside the file
4041fallocate_zero_range=no
4042cat > $TMPC << EOF
4043#include <fcntl.h>
4044#include <linux/falloc.h>
4045
4046int main(void)
4047{
4048 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4049 return 0;
4050}
4051EOF
4052if compile_prog "" "" ; then
4053 fallocate_zero_range=yes
4054fi
4055
Kevin Wolfed911432014-09-29 17:12:59 +02004056# check for posix_fallocate
4057posix_fallocate=no
4058cat > $TMPC << EOF
4059#include <fcntl.h>
4060
4061int main(void)
4062{
4063 posix_fallocate(0, 0, 0);
4064 return 0;
4065}
4066EOF
4067if compile_prog "" "" ; then
4068 posix_fallocate=yes
4069fi
4070
Peter Maydellc727f472011-01-06 11:05:10 +00004071# check for sync_file_range
4072sync_file_range=no
4073cat > $TMPC << EOF
4074#include <fcntl.h>
4075
4076int main(void)
4077{
4078 sync_file_range(0, 0, 0, 0);
4079 return 0;
4080}
4081EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004082if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00004083 sync_file_range=yes
4084fi
4085
Peter Maydelldace20d2011-01-10 13:11:24 +00004086# check for linux/fiemap.h and FS_IOC_FIEMAP
4087fiemap=no
4088cat > $TMPC << EOF
4089#include <sys/ioctl.h>
4090#include <linux/fs.h>
4091#include <linux/fiemap.h>
4092
4093int main(void)
4094{
4095 ioctl(0, FS_IOC_FIEMAP, 0);
4096 return 0;
4097}
4098EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004099if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00004100 fiemap=yes
4101fi
4102
Ulrich Hechtd0927932009-09-17 20:22:14 +03004103# check for dup3
4104dup3=no
4105cat > $TMPC << EOF
4106#include <unistd.h>
4107
4108int main(void)
4109{
4110 dup3(0, 0, 0);
4111 return 0;
4112}
4113EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01004114if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004115 dup3=yes
4116fi
4117
Alex Bligh4e0c6522013-08-21 16:02:43 +01004118# check for ppoll support
4119ppoll=no
4120cat > $TMPC << EOF
4121#include <poll.h>
4122
4123int main(void)
4124{
4125 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4126 ppoll(&pfd, 1, 0, 0);
4127 return 0;
4128}
4129EOF
4130if compile_prog "" "" ; then
4131 ppoll=yes
4132fi
4133
Alex Blighcd758dd2013-08-21 16:02:44 +01004134# check for prctl(PR_SET_TIMERSLACK , ... ) support
4135prctl_pr_set_timerslack=no
4136cat > $TMPC << EOF
4137#include <sys/prctl.h>
4138
4139int main(void)
4140{
4141 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4142 return 0;
4143}
4144EOF
4145if compile_prog "" "" ; then
4146 prctl_pr_set_timerslack=yes
4147fi
4148
Peter Maydell3b6edd12011-02-15 18:35:05 +00004149# check for epoll support
4150epoll=no
4151cat > $TMPC << EOF
4152#include <sys/epoll.h>
4153
4154int main(void)
4155{
4156 epoll_create(0);
4157 return 0;
4158}
4159EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004160if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004161 epoll=yes
4162fi
4163
Peter Maydell227f0212016-06-06 19:58:11 +01004164# epoll_create1 is a later addition
4165# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00004166epoll_create1=no
4167cat > $TMPC << EOF
4168#include <sys/epoll.h>
4169
4170int main(void)
4171{
Peter Maydell19e83f62011-04-26 16:56:40 +01004172 /* Note that we use epoll_create1 as a value, not as
4173 * a function being called. This is necessary so that on
4174 * old SPARC glibc versions where the function was present in
4175 * the library but not declared in the header file we will
4176 * fail the configure check. (Otherwise we will get a compiler
4177 * warning but not an error, and will proceed to fail the
4178 * qemu compile where we compile with -Werror.)
4179 */
Blue Swirlc075a722012-08-09 20:21:25 +00004180 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00004181}
4182EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004183if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004184 epoll_create1=yes
4185fi
4186
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004187# check for sendfile support
4188sendfile=no
4189cat > $TMPC << EOF
4190#include <sys/sendfile.h>
4191
4192int main(void)
4193{
4194 return sendfile(0, 0, 0, 0);
4195}
4196EOF
4197if compile_prog "" "" ; then
4198 sendfile=yes
4199fi
4200
Riku Voipio51834342014-06-22 11:25:42 +01004201# check for timerfd support (glibc 2.8 and newer)
4202timerfd=no
4203cat > $TMPC << EOF
4204#include <sys/timerfd.h>
4205
4206int main(void)
4207{
4208 return(timerfd_create(CLOCK_REALTIME, 0));
4209}
4210EOF
4211if compile_prog "" "" ; then
4212 timerfd=yes
4213fi
4214
Riku Voipio9af5c902014-08-12 15:58:57 +03004215# check for setns and unshare support
4216setns=no
4217cat > $TMPC << EOF
4218#include <sched.h>
4219
4220int main(void)
4221{
4222 int ret;
4223 ret = setns(0, 0);
4224 ret = unshare(0);
4225 return ret;
4226}
4227EOF
4228if compile_prog "" "" ; then
4229 setns=yes
4230fi
4231
Aleksandar Markovic38860a02016-10-10 13:23:29 +02004232# clock_adjtime probe
4233clock_adjtime=no
4234cat > $TMPC <<EOF
4235#include <time.h>
4236
4237int main(void)
4238{
4239 return clock_adjtime(0, 0);
4240}
4241EOF
4242clock_adjtime=no
4243if compile_prog "" "" ; then
4244 clock_adjtime=yes
4245fi
4246
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02004247# syncfs probe
4248syncfs=no
4249cat > $TMPC <<EOF
4250#include <unistd.h>
4251
4252int main(void)
4253{
4254 return syncfs(0);
4255}
4256EOF
4257syncfs=no
4258if compile_prog "" "" ; then
4259 syncfs=yes
4260fi
4261
pbrookcc8ae6d2006-04-23 17:57:59 +00004262# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004263if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004264 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004265 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004266 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004267 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004268 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004269 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004270 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004271 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004272fi
4273
Stefan Weilf514f412009-10-11 12:44:07 +02004274# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004275byteswap_h=no
4276cat > $TMPC << EOF
4277#include <byteswap.h>
4278int main(void) { return bswap_32(0); }
4279EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004280if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004281 byteswap_h=yes
4282fi
4283
Stefan Weil75f13592013-01-05 12:17:38 +01004284# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004285bswap_h=no
4286cat > $TMPC << EOF
4287#include <sys/endian.h>
4288#include <sys/types.h>
4289#include <machine/bswap.h>
4290int main(void) { return bswap32(0); }
4291EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004292if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004293 bswap_h=yes
4294fi
4295
aliguorida93a1f2008-12-12 20:02:52 +00004296##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004297# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004298if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004299 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004300 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004301 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4302 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004303 else
4304 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004305 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004306 fi
4307 libiscsi="no"
4308 fi
4309fi
4310
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004311##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004312# Do we need libm
4313cat > $TMPC << EOF
4314#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004315int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004316EOF
4317if compile_prog "" "" ; then
4318 :
4319elif compile_prog "" "-lm" ; then
4320 LIBS="-lm $LIBS"
4321 libs_qga="-lm $libs_qga"
4322else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004323 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004324fi
4325
4326##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004327# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004328# uClibc provides 2 versions of clock_gettime(), one with realtime
4329# support and one without. This means that the clock_gettime() don't
4330# need -lrt. We still need it for timer_create() so we check for this
4331# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004332cat > $TMPC <<EOF
4333#include <signal.h>
4334#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004335int main(void) {
4336 timer_create(CLOCK_REALTIME, NULL, NULL);
4337 return clock_gettime(CLOCK_REALTIME, NULL);
4338}
aliguorida93a1f2008-12-12 20:02:52 +00004339EOF
4340
Juan Quintela52166aa2009-08-03 14:46:03 +02004341if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004342 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004343# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004344elif compile_prog "" "$pthread_lib -lrt" ; then
4345 LIBS="$LIBS -lrt"
4346 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004347fi
4348
Blue Swirl31ff5042009-09-12 12:33:07 +00004349if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Peter Maydell78723752017-09-04 18:19:00 +01004350 "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004351 libs_softmmu="-lutil $libs_softmmu"
4352fi
4353
Blue Swirlde5071c2009-09-12 09:58:46 +00004354##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004355# spice probe
4356if test "$spice" != "no" ; then
4357 cat > $TMPC << EOF
4358#include <spice.h>
4359int main(void) { spice_server_new(); return 0; }
4360EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004361 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4362 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004363 if $pkg_config --atleast-version=0.12.0 spice-server && \
4364 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004365 compile_prog "$spice_cflags" "$spice_libs" ; then
4366 spice="yes"
4367 libs_softmmu="$libs_softmmu $spice_libs"
4368 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004369 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4370 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004371 else
4372 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004373 feature_not_found "spice" \
4374 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004375 fi
4376 spice="no"
4377 fi
4378fi
4379
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004380# check for smartcard support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004381if test "$smartcard" != "no"; then
4382 if $pkg_config libcacard; then
4383 libcacard_cflags=$($pkg_config --cflags libcacard)
4384 libcacard_libs=$($pkg_config --libs libcacard)
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004385 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004386 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004387 if test "$smartcard" = "yes"; then
4388 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004389 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004390 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004391 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004392fi
4393
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004394# check for libusb
4395if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004396 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004397 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004398 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4399 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004400 else
4401 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004402 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004403 fi
4404 libusb="no"
4405 fi
4406fi
4407
Hans de Goede69354a82011-07-19 11:04:10 +02004408# check for usbredirparser for usb network redirection support
4409if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004410 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004411 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004412 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4413 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004414 else
4415 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004416 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004417 fi
4418 usb_redir="no"
4419 fi
4420fi
4421
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004422##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004423# check if we have VSS SDK headers for win
4424
4425if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4426 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004427 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004428 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4429 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004430 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004431 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4432 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004433 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004434 esac
4435 cat > $TMPC << EOF
4436#define __MIDL_user_allocate_free_DEFINED__
4437#include <inc/win2003/vss.h>
4438int main(void) { return VSS_CTX_BACKUP; }
4439EOF
4440 if compile_prog "$vss_win32_include" "" ; then
4441 guest_agent_with_vss="yes"
4442 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004443 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004444 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004445 else
4446 if test "$vss_win32_sdk" != "" ; then
4447 echo "ERROR: Please download and install Microsoft VSS SDK:"
4448 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4449 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4450 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4451 echo "ERROR: The headers are extracted in the directory \`inc'."
4452 feature_not_found "VSS support"
4453 fi
4454 guest_agent_with_vss="no"
4455 fi
4456fi
4457
4458##########################################
4459# lookup Windows platform SDK (if not specified)
4460# The SDK is needed only to build .tlb (type library) file of guest agent
4461# VSS provider from the source. It is usually unnecessary because the
4462# pre-compiled .tlb file is included.
4463
4464if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4465 if test -z "$win_sdk"; then
4466 programfiles="$PROGRAMFILES"
4467 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4468 if test -n "$programfiles"; then
4469 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4470 else
4471 feature_not_found "Windows SDK"
4472 fi
4473 elif test "$win_sdk" = "no"; then
4474 win_sdk=""
4475 fi
4476fi
4477
4478##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004479# check if mingw environment provides a recent ntddscsi.h
4480if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4481 cat > $TMPC << EOF
4482#include <windows.h>
4483#include <ntddscsi.h>
4484int main(void) {
4485#if !defined(IOCTL_SCSI_GET_ADDRESS)
4486#error Missing required ioctl definitions
4487#endif
4488 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4489 return addr.Lun;
4490}
4491EOF
4492 if compile_prog "" "" ; then
4493 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004494 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004495 fi
4496fi
4497
4498##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004499# virgl renderer probe
4500
4501if test "$virglrenderer" != "no" ; then
4502 cat > $TMPC << EOF
4503#include <virglrenderer.h>
4504int main(void) { virgl_renderer_poll(); return 0; }
4505EOF
4506 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4507 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4508 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4509 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4510 virglrenderer="yes"
4511 else
4512 if test "$virglrenderer" = "yes" ; then
4513 feature_not_found "virglrenderer"
4514 fi
4515 virglrenderer="no"
4516 fi
4517fi
4518
4519##########################################
Richard Henderson8ca80762017-09-14 09:41:12 -07004520# capstone
4521
Richard Hendersone219c492017-09-28 09:01:23 -07004522case "$capstone" in
4523 "" | yes)
4524 if $pkg_config capstone; then
4525 capstone=system
4526 elif test -e "${source_path}/.git" ; then
4527 capstone=git
4528 elif test -e "${source_path}/capstone/Makefile" ; then
4529 capstone=internal
4530 elif test -z "$capstone" ; then
4531 capstone=no
4532 else
4533 feature_not_found "capstone" "Install capstone devel or git submodule"
4534 fi
4535 ;;
4536
4537 system)
4538 if ! $pkg_config capstone; then
4539 feature_not_found "capstone" "Install capstone devel"
4540 fi
4541 ;;
4542esac
4543
4544case "$capstone" in
4545 git | internal)
4546 if test "$capstone" = git; then
4547 git_submodules="${git_submodules} capstone"
4548 fi
4549 mkdir -p capstone
4550 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4551 if test "$mingw32" = "yes"; then
4552 LIBCAPSTONE=capstone.lib
4553 else
4554 LIBCAPSTONE=libcapstone.a
4555 fi
4556 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4557 ;;
4558
4559 system)
Richard Henderson8ca80762017-09-14 09:41:12 -07004560 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4561 LIBS="$($pkg_config --libs capstone) $LIBS"
Richard Hendersone219c492017-09-28 09:01:23 -07004562 ;;
4563
4564 no)
4565 ;;
4566 *)
4567 error_exit "Unknown state for capstone: $capstone"
4568 ;;
4569esac
Richard Henderson8ca80762017-09-14 09:41:12 -07004570
4571##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004572# check if we have fdatasync
4573
4574fdatasync=no
4575cat > $TMPC << EOF
4576#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004577int main(void) {
4578#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4579return fdatasync(0);
4580#else
Stefan Weile172fe12012-04-06 21:33:20 +02004581#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004582#endif
4583}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004584EOF
4585if compile_prog "" "" ; then
4586 fdatasync=yes
4587fi
4588
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004589##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004590# check if we have madvise
4591
4592madvise=no
4593cat > $TMPC << EOF
4594#include <sys/types.h>
4595#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004596#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004597int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4598EOF
4599if compile_prog "" "" ; then
4600 madvise=yes
4601fi
4602
4603##########################################
4604# check if we have posix_madvise
4605
4606posix_madvise=no
4607cat > $TMPC << EOF
4608#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004609#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004610int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4611EOF
4612if compile_prog "" "" ; then
4613 posix_madvise=yes
4614fi
4615
4616##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004617# check if we have posix_syslog
4618
4619posix_syslog=no
4620cat > $TMPC << EOF
4621#include <syslog.h>
4622int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4623EOF
4624if compile_prog "" "" ; then
4625 posix_syslog=yes
4626fi
4627
4628##########################################
Peter Maydell401bc052017-09-05 13:19:32 +01004629# check if we have sem_timedwait
4630
4631sem_timedwait=no
4632cat > $TMPC << EOF
4633#include <semaphore.h>
4634int main(void) { return sem_timedwait(0, 0); }
4635EOF
4636if compile_prog "" "" ; then
4637 sem_timedwait=yes
4638fi
4639
4640##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004641# check if trace backend exists
4642
Lluís Vilanova5b808272014-05-27 15:02:14 +02004643$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004644if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004645 error_exit "invalid trace backends" \
4646 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004647fi
4648
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004649##########################################
4650# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004651if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004652 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004653#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004654int main(void) { return 0; }
4655EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004656 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004657 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004658 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004659 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004660 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004661 fi
4662 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004663 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004664 else
4665 urcu_bp_libs="-lurcu-bp"
4666 fi
4667
4668 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4669 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004670 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004671 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004672 fi
4673fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004674
4675##########################################
4676# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004677if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004678 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004679 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004680 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004681 trace_backend_stap="no"
4682 if has 'stap' ; then
4683 trace_backend_stap="yes"
4684 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004685fi
4686
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004687##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004688# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304689
Peter Maydell7c2acc72013-04-08 12:11:27 +01004690# We prefer ucontext, but it's not always possible. The fallback
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004691# is sigcontext. On Windows the only valid backend is the Windows
4692# specific one.
Peter Maydell7c2acc72013-04-08 12:11:27 +01004693
4694ucontext_works=no
4695if test "$darwin" != "yes"; then
4696 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304697#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004698#ifdef __stub_makecontext
4699#error Ignoring glibc stub makecontext which will always fail
4700#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004701int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304702EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004703 if compile_prog "" "" ; then
4704 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304705 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004706fi
4707
4708if test "$coroutine" = ""; then
4709 if test "$mingw32" = "yes"; then
4710 coroutine=win32
4711 elif test "$ucontext_works" = "yes"; then
4712 coroutine=ucontext
4713 else
4714 coroutine=sigaltstack
4715 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004716else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004717 case $coroutine in
4718 windows)
4719 if test "$mingw32" != "yes"; then
4720 error_exit "'windows' coroutine backend only valid for Windows"
4721 fi
4722 # Unfortunately the user visible backend name doesn't match the
4723 # coroutine-*.c filename for this case, so we have to adjust it here.
4724 coroutine=win32
4725 ;;
4726 ucontext)
4727 if test "$ucontext_works" != "yes"; then
4728 feature_not_found "ucontext"
4729 fi
4730 ;;
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004731 sigaltstack)
Peter Maydell7c2acc72013-04-08 12:11:27 +01004732 if test "$mingw32" = "yes"; then
4733 error_exit "only the 'windows' coroutine backend is valid for Windows"
4734 fi
4735 ;;
4736 *)
4737 error_exit "unknown coroutine backend $coroutine"
4738 ;;
4739 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304740fi
4741
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004742if test "$coroutine_pool" = ""; then
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004743 coroutine_pool=yes
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004744fi
4745
Peter Lieven7d992e42016-09-27 11:58:45 +02004746if test "$debug_stack_usage" = "yes"; then
4747 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4748 error_exit "stack usage debugging is not supported for $cpu"
4749 fi
4750 if test "$coroutine_pool" = "yes"; then
4751 echo "WARN: disabling coroutine pool for stack usage debugging"
4752 coroutine_pool=no
4753 fi
4754fi
4755
4756
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304757##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304758# check if we have open_by_handle_at
4759
Stefan Weil4e1797f2012-06-18 22:11:06 +02004760open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304761cat > $TMPC << EOF
4762#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004763#if !defined(AT_EMPTY_PATH)
4764# error missing definition
4765#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004766int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004767#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304768EOF
4769if compile_prog "" "" ; then
4770 open_by_handle_at=yes
4771fi
4772
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304773########################################
4774# check if we have linux/magic.h
4775
4776linux_magic_h=no
4777cat > $TMPC << EOF
4778#include <linux/magic.h>
4779int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004780 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304781}
4782EOF
4783if compile_prog "" "" ; then
4784 linux_magic_h=yes
4785fi
4786
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004787########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004788# check whether we can disable warning option with a pragma (this is needed
4789# to silence warnings in the headers of some versions of external libraries).
4790# This test has to be compiled with -Werror as otherwise an unknown pragma is
4791# only a warning.
4792#
4793# If we can't selectively disable warning in the code, disable -Werror so that
4794# the build doesn't fail anyway.
4795
Peter Maydell06d71fa2012-07-30 16:13:07 +01004796pragma_disable_unused_but_set=no
4797cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004798#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004799#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004800#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004801#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004802
Peter Maydell06d71fa2012-07-30 16:13:07 +01004803int main(void) {
4804 return 0;
4805}
4806EOF
4807if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004808 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004809else
4810 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004811fi
4812
4813########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004814# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004815
4816valgrind_h=no
4817cat > $TMPC << EOF
4818#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004819int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004820 return 0;
4821}
4822EOF
4823if compile_prog "" "" ; then
4824 valgrind_h=yes
4825fi
4826
4827########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004828# check if environ is declared
4829
4830has_environ=no
4831cat > $TMPC << EOF
4832#include <unistd.h>
4833int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004834 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004835 return 0;
4836}
4837EOF
4838if compile_prog "" "" ; then
4839 has_environ=yes
4840fi
4841
Richard Henderson76a347e2012-12-28 14:17:02 -08004842########################################
4843# check if cpuid.h is usable.
4844
Richard Henderson76a347e2012-12-28 14:17:02 -08004845cat > $TMPC << EOF
4846#include <cpuid.h>
4847int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004848 unsigned a, b, c, d;
4849 int max = __get_cpuid_max(0, 0);
4850
4851 if (max >= 1) {
4852 __cpuid(1, a, b, c, d);
4853 }
4854
4855 if (max >= 7) {
4856 __cpuid_count(7, 0, a, b, c, d);
4857 }
4858
4859 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004860}
4861EOF
4862if compile_prog "" "" ; then
4863 cpuid_h=yes
4864fi
4865
Richard Henderson5dd89902017-07-18 18:40:18 -10004866##########################################
4867# avx2 optimization requirement check
4868#
4869# There is no point enabling this if cpuid.h is not usable,
4870# since we won't be able to select the new routines.
4871
4872if test $cpuid_h = yes; then
4873 cat > $TMPC << EOF
4874#pragma GCC push_options
4875#pragma GCC target("avx2")
4876#include <cpuid.h>
4877#include <immintrin.h>
4878static int bar(void *a) {
4879 __m256i x = *(__m256i *)a;
4880 return _mm256_testz_si256(x, x);
4881}
4882int main(int argc, char *argv[]) { return bar(argv[0]); }
4883EOF
4884 if compile_object "" ; then
4885 avx2_opt="yes"
4886 fi
4887fi
4888
Richard Hendersonf5401662013-02-16 12:46:59 -08004889########################################
4890# check if __[u]int128_t is usable.
4891
4892int128=no
4893cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004894#if defined(__clang_major__) && defined(__clang_minor__)
4895# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4896# error __int128_t does not work in CLANG before 3.2
4897# endif
4898#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004899__int128_t a;
4900__uint128_t b;
4901int main (void) {
4902 a = a + b;
4903 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004904 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004905 return 0;
4906}
4907EOF
4908if compile_prog "" "" ; then
4909 int128=yes
4910fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004911
Richard Henderson7ebee432016-06-29 21:10:59 -07004912#########################################
4913# See if 128-bit atomic operations are supported.
4914
4915atomic128=no
4916if test "$int128" = "yes"; then
4917 cat > $TMPC << EOF
4918int main(void)
4919{
4920 unsigned __int128 x = 0, y = 0;
4921 y = __atomic_load_16(&x, 0);
4922 __atomic_store_16(&x, y, 0);
4923 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4924 return 0;
4925}
4926EOF
4927 if compile_prog "" "" ; then
4928 atomic128=yes
4929 fi
4930fi
4931
Richard Hendersondf79b992016-09-02 12:23:57 -07004932#########################################
4933# See if 64-bit atomic operations are supported.
4934# Note that without __atomic builtins, we can only
4935# assume atomic loads/stores max at pointer size.
4936
4937cat > $TMPC << EOF
4938#include <stdint.h>
4939int main(void)
4940{
4941 uint64_t x = 0, y = 0;
4942#ifdef __ATOMIC_RELAXED
4943 y = __atomic_load_8(&x, 0);
4944 __atomic_store_8(&x, y, 0);
4945 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4946 __atomic_exchange_8(&x, y, 0);
4947 __atomic_fetch_add_8(&x, y, 0);
4948#else
4949 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4950 __sync_lock_test_and_set(&x, y);
4951 __sync_val_compare_and_swap(&x, y, 0);
4952 __sync_fetch_and_add(&x, y);
4953#endif
4954 return 0;
4955}
4956EOF
4957if compile_prog "" "" ; then
4958 atomic64=yes
4959fi
4960
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004961########################################
4962# check if getauxval is available.
4963
4964getauxval=no
4965cat > $TMPC << EOF
4966#include <sys/auxv.h>
4967int main(void) {
4968 return getauxval(AT_HWCAP) == 0;
4969}
4970EOF
4971if compile_prog "" "" ; then
4972 getauxval=yes
4973fi
4974
John Snowfd0e6052015-03-25 18:57:39 -04004975########################################
4976# check if ccache is interfering with
4977# semantic analysis of macros
4978
John Snow5e4dfd32015-10-28 13:56:40 -04004979unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004980ccache_cpp2=no
4981cat > $TMPC << EOF
4982static const int Z = 1;
4983#define fn() ({ Z; })
4984#define TAUT(X) ((X) == Z)
4985#define PAREN(X, Y) (X == Y)
4986#define ID(X) (X)
4987int main(int argc, char *argv[])
4988{
4989 int x = 0, y = 0;
4990 x = ID(x);
4991 x = fn();
4992 fn();
4993 if (PAREN(x, y)) return 0;
4994 if (TAUT(Z)) return 0;
4995 return 0;
4996}
4997EOF
4998
4999if ! compile_object "-Werror"; then
5000 ccache_cpp2=yes
5001fi
5002
John Snowb553a042015-11-03 15:43:42 -05005003#################################################
5004# clang does not support glibc + FORTIFY_SOURCE.
5005
5006if test "$fortify_source" != "no"; then
5007 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
5008 fortify_source="no";
Peter Maydelle1890912017-06-26 16:25:24 +01005009 elif test -n "$cxx" && has $cxx &&
John Snowcfcc7c12015-11-12 11:29:49 -05005010 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05005011 fortify_source="no";
5012 else
5013 fortify_source="yes"
5014 fi
5015fi
5016
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305017##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04005018# check if struct fsxattr is available via linux/fs.h
5019
5020have_fsxattr=no
5021cat > $TMPC << EOF
5022#include <linux/fs.h>
5023struct fsxattr foo;
5024int main(void) {
5025 return 0;
5026}
5027EOF
5028if compile_prog "" "" ; then
5029 have_fsxattr=yes
5030fi
5031
Peter Maydellb66e10e2016-06-08 18:34:32 +01005032##########################################
5033# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02005034have_rtnetlink=no
5035cat > $TMPC << EOF
5036#include <linux/rtnetlink.h>
5037int main(void) {
5038 return IFLA_PROTO_DOWN;
5039}
5040EOF
5041if compile_prog "" "" ; then
5042 have_rtnetlink=yes
5043fi
5044
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01005045##########################################
5046# check for usable AF_VSOCK environment
5047have_af_vsock=no
5048cat > $TMPC << EOF
5049#include <errno.h>
5050#include <sys/types.h>
5051#include <sys/socket.h>
5052#if !defined(AF_VSOCK)
5053# error missing AF_VSOCK flag
5054#endif
5055#include <linux/vm_sockets.h>
5056int main(void) {
5057 int sock, ret;
5058 struct sockaddr_vm svm;
5059 socklen_t len = sizeof(svm);
5060 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5061 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5062 if ((ret == -1) && (errno == ENOTCONN)) {
5063 return 0;
5064 }
5065 return -1;
5066}
5067EOF
5068if compile_prog "" "" ; then
5069 have_af_vsock=yes
5070fi
5071
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005072##########################################
5073# check for usable AF_ALG environment
5074hava_afalg=no
5075cat > $TMPC << EOF
5076#include <errno.h>
5077#include <sys/types.h>
5078#include <sys/socket.h>
5079#include <linux/if_alg.h>
5080int main(void) {
5081 int sock;
5082 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5083 return sock;
5084}
5085EOF
5086if compile_prog "" "" ; then
5087 have_afalg=yes
5088fi
5089if test "$crypto_afalg" = "yes"
5090then
5091 if test "$have_afalg" != "yes"
5092 then
5093 error_exit "AF_ALG requested but could not be detected"
5094 fi
5095fi
5096
5097
James Clarke6969ec62016-06-06 12:02:50 +01005098#################################################
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005099# Check to see if we have the Hypervisor framework
Peter Maydelld2d08522018-01-08 17:10:42 +00005100if [ "$darwin" = "yes" ] ; then
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005101 cat > $TMPC << EOF
5102#include <Hypervisor/hv.h>
5103int main() { return 0;}
5104EOF
5105 if ! compile_object ""; then
5106 hvf='no'
5107 else
5108 hvf='yes'
5109 LDFLAGS="-framework Hypervisor $LDFLAGS"
5110 fi
5111fi
5112
5113#################################################
James Clarke6969ec62016-06-06 12:02:50 +01005114# Sparc implicitly links with --relax, which is
5115# incompatible with -r, so --no-relax should be
5116# given. It does no harm to give it on other
5117# platforms too.
5118
5119# Note: the prototype is needed since QEMU_CFLAGS
5120# contains -Wmissing-prototypes
5121cat > $TMPC << EOF
5122extern int foo(void);
5123int foo(void) { return 0; }
5124EOF
5125if ! compile_object ""; then
5126 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5127fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01005128for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5129 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5130 LD_REL_FLAGS=$i
5131 break
5132 fi
5133done
5134if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5135 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01005136fi
5137
Jan Vesely277abf12016-04-29 13:15:23 -04005138##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05005139# check for sysmacros.h
5140
5141have_sysmacros=no
5142cat > $TMPC << EOF
5143#include <sys/sysmacros.h>
5144int main(void) {
5145 return makedev(0, 0);
5146}
5147EOF
5148if compile_prog "" "" ; then
5149 have_sysmacros=yes
5150fi
5151
5152##########################################
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005153# Veritas HyperScale block driver VxHS
5154# Check if libvxhs is installed
5155
5156if test "$vxhs" != "no" ; then
5157 cat > $TMPC <<EOF
5158#include <stdint.h>
5159#include <qnio/qnio_api.h>
5160
5161void *vxhs_callback;
5162
5163int main(void) {
5164 iio_init(QNIO_VERSION, vxhs_callback);
5165 return 0;
5166}
5167EOF
5168 vxhs_libs="-lvxhs -lssl"
5169 if compile_prog "" "$vxhs_libs" ; then
5170 vxhs=yes
5171 else
5172 if test "$vxhs" = "yes" ; then
5173 feature_not_found "vxhs block device" "Install libvxhs See github"
5174 fi
5175 vxhs=no
5176 fi
5177fi
5178
5179##########################################
Andreas Grapentin49e00a12017-03-14 17:59:53 +01005180# check for _Static_assert()
5181
5182have_static_assert=no
5183cat > $TMPC << EOF
5184_Static_assert(1, "success");
5185int main(void) {
5186 return 0;
5187}
5188EOF
5189if compile_prog "" "" ; then
5190 have_static_assert=yes
5191fi
5192
5193##########################################
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02005194# check for utmpx.h, it is missing e.g. on OpenBSD
5195
5196have_utmpx=no
5197cat > $TMPC << EOF
5198#include <utmpx.h>
5199struct utmpx user_info;
5200int main(void) {
5201 return 0;
5202}
5203EOF
5204if compile_prog "" "" ; then
5205 have_utmpx=yes
5206fi
5207
5208##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02005209# End of CC checks
5210# After here, no more $cc or $ld runs
5211
Blue Swirl1d728c32012-05-01 18:45:39 +00005212if test "$gcov" = "yes" ; then
5213 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5214 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05005215elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02005216 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Marc-André Lureau90654862018-01-04 17:05:09 +01005217elif test "$debug" = "yes"; then
5218 if compile_prog "-Og" ""; then
5219 CFLAGS="-Og $CFLAGS"
5220 elif compile_prog "-O1" ""; then
5221 CFLAGS="-O1 $CFLAGS"
5222 fi
5223 # Workaround GCC false-positive Wuninitialized bugs with Og or O1:
5224 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
5225 if cc_has_warning_flag "-Wno-maybe-uninitialized"; then
5226 CFLAGS="-Wno-maybe-uninitialized $CFLAGS"
5227 fi
5228else
5229 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005230fi
Juan Quintelaa316e372009-09-30 01:10:55 +02005231
Peter Lieven6542aa92014-02-03 10:26:13 +01005232##########################################
5233# Do we have libnfs
5234if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01005235 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01005236 libnfs="yes"
5237 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01005238 else
5239 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08005240 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01005241 fi
5242 libnfs="no"
5243 fi
5244fi
Blue Swirl1d728c32012-05-01 18:45:39 +00005245
Peter Maydell6ca026c2012-07-18 15:10:18 +01005246# Now we've finished running tests it's OK to add -Werror to the compiler flags
5247if test "$werror" = "yes"; then
5248 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5249fi
5250
Juan Quintelae86ecd42009-08-03 14:45:59 +02005251if test "$solaris" = "no" ; then
5252 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02005253 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005254 fi
5255fi
5256
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005257# test if pod2man has --utf8 option
5258if pod2man --help | grep -q utf8; then
5259 POD2MAN="pod2man --utf8"
5260else
5261 POD2MAN="pod2man"
5262fi
5263
Blue Swirl952afb72010-09-19 08:36:34 +00005264# Use ASLR, no-SEH and DEP if available
5265if test "$mingw32" = "yes" ; then
5266 for flag in --dynamicbase --no-seh --nxcompat; do
Christian Borntraegere9a35912017-08-23 12:16:23 +02005267 if ld_has $flag ; then
Blue Swirl952afb72010-09-19 08:36:34 +00005268 LDFLAGS="-Wl,$flag $LDFLAGS"
5269 fi
5270 done
5271fi
5272
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03005273qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08005274qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03005275qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06005276qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02005277
Kamil Rytarowskie0580342017-07-14 09:33:44 +01005278# We can only support ivshmem if we have eventfd
5279if [ "$eventfd" = "yes" ]; then
5280 ivshmem=yes
5281fi
5282
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005283tools=""
5284if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02005285 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005286 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5287 tools="qemu-nbd\$(EXESUF) $tools"
Kamil Rytarowskib1449ed2017-07-14 09:33:45 +01005288 fi
5289 if [ "$ivshmem" = "yes" ]; then
David Marchanda75eb032014-09-08 11:17:48 +02005290 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005291 fi
5292fi
5293if test "$softmmu" = yes ; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005294 if test "$linux" = yes; then
5295 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02005296 virtfs=yes
5297 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5298 else
5299 if test "$virtfs" = yes; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005300 error_exit "VirtFS requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05305301 fi
Andreas Färber17500372012-05-01 01:12:03 +02005302 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02005303 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005304 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5305 mpath=yes
5306 else
5307 if test "$mpath" = yes; then
5308 error_exit "Multipath requires libmpathpersist devel"
5309 fi
5310 mpath=no
5311 fi
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005312 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5313 else
5314 if test "$virtfs" = yes; then
5315 error_exit "VirtFS is supported only on Linux"
5316 fi
5317 virtfs=no
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005318 if test "$mpath" = yes; then
5319 error_exit "Multipath is supported only on Linux"
5320 fi
5321 mpath=no
M. Mohan Kumar17bff522011-12-14 13:58:42 +05305322 fi
Laurent Vivierff69fd82017-10-19 21:16:06 +02005323 if test "$xkbcommon" = "yes"; then
5324 tools="qemu-keymap\$(EXESUF) $tools"
5325 fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005326fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005327
5328# Probe for guest agent support/options
5329
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005330if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04005331 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05005332 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005333 guest_agent=yes
5334 elif [ "$guest_agent" != yes ]; then
5335 guest_agent=no
5336 else
5337 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02005338 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02005339fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005340
Michael Roth9d6bc272015-08-26 10:49:13 -05005341# Guest agent Window MSI package
5342
5343if test "$guest_agent" != yes; then
5344 if test "$guest_agent_msi" = yes; then
5345 error_exit "MSI guest agent package requires guest agent enabled"
5346 fi
5347 guest_agent_msi=no
5348elif test "$mingw32" != "yes"; then
5349 if test "$guest_agent_msi" = "yes"; then
5350 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5351 fi
5352 guest_agent_msi=no
5353elif ! has wixl; then
5354 if test "$guest_agent_msi" = "yes"; then
5355 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5356 fi
5357 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05005358else
5359 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5360 # disabled explicitly
5361 if test "$guest_agent_msi" != "no"; then
5362 guest_agent_msi=yes
5363 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005364fi
5365
Michael Roth1a349042015-08-26 11:14:31 -05005366if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05005367 if test "$guest_agent_with_vss" = "yes"; then
5368 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5369 fi
5370
5371 if test "$QEMU_GA_MANUFACTURER" = ""; then
5372 QEMU_GA_MANUFACTURER=QEMU
5373 fi
5374
5375 if test "$QEMU_GA_DISTRO" = ""; then
5376 QEMU_GA_DISTRO=Linux
5377 fi
5378
5379 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02005380 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05005381 fi
5382
Stefan Weil89138852016-05-16 15:10:20 +02005383 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05005384
5385 case "$cpu" in
5386 x86_64)
5387 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5388 ;;
5389 i386)
5390 QEMU_GA_MSI_ARCH="-D Arch=32"
5391 ;;
5392 *)
5393 error_exit "CPU $cpu not supported for building installation package"
5394 ;;
5395 esac
5396fi
5397
Paolo Bonzinica35f782010-05-26 16:08:29 +02005398# Mac OS X ships with a broken assembler
5399roms=
5400if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5401 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5402 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01005403 # Different host OS linkers have different ideas about the name of the ELF
Brad Smithc65d5e42017-11-07 18:46:11 -05005404 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5405 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5406 for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
Peter Maydelle57218b2016-08-08 17:11:28 +01005407 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5408 ld_i386_emulation="$emu"
5409 roms="optionrom"
5410 break
5411 fi
5412 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02005413fi
Andreas Färberd0384d12011-05-01 18:23:56 +02005414if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11005415 roms="$roms spapr-rtas"
5416fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005417
Christian Borntraeger9933c302013-04-23 01:23:03 +00005418if test "$cpu" = "s390x" ; then
5419 roms="$roms s390-ccw"
5420fi
5421
Richard Henderson964c6fa2013-06-21 19:10:16 -07005422# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005423if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005424 textseg_addr=
5425 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07005426 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5427 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07005428 textseg_addr=0x60000000
5429 ;;
5430 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07005431 # A 256M aligned address, high in the address space, with enough
5432 # room for the code_gen_buffer above it before the stack.
5433 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07005434 ;;
5435 esac
5436 if [ -n "$textseg_addr" ]; then
5437 cat > $TMPC <<EOF
5438 int main(void) { return 0; }
5439EOF
5440 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5441 if ! compile_prog "" "$textseg_ldflags"; then
5442 # In case ld does not support -Ttext-segment, edit the default linker
5443 # script via sed to set the .text start addr. This is needed on FreeBSD
5444 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005445 if ! $ld --verbose >/dev/null 2>&1; then
5446 error_exit \
5447 "We need to link the QEMU user mode binaries at a" \
5448 "specific text address. Unfortunately your linker" \
5449 "doesn't support either the -Ttext-segment option or" \
5450 "printing the default linker script with --verbose." \
5451 "If you don't want the user mode binaries, pass the" \
5452 "--disable-user option to configure."
5453 fi
5454
Richard Henderson964c6fa2013-06-21 19:10:16 -07005455 $ld --verbose | sed \
5456 -e '1,/==================================================/d' \
5457 -e '/==================================================/,$d' \
5458 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5459 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5460 textseg_ldflags="-Wl,-T../config-host.ld"
5461 fi
5462 fi
5463fi
5464
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005465# Check that the C++ compiler exists and works with the C compiler.
5466# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5467if has $cxx; then
5468 cat > $TMPC <<EOF
5469int c_function(void);
5470int main(void) { return c_function(); }
5471EOF
5472
5473 compile_object
5474
5475 cat > $TMPCXX <<EOF
5476extern "C" {
5477 int c_function(void);
5478}
5479int c_function(void) { return 42; }
5480EOF
5481
5482 update_cxxflags
5483
5484 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5485 # C++ compiler $cxx works ok with C compiler $cc
5486 :
5487 else
5488 echo "C++ compiler $cxx does not work with C compiler $cc"
5489 echo "Disabling C++ specific optional code"
5490 cxx=
5491 fi
5492else
5493 echo "No C++ compiler available; disabling C++ specific optional code"
5494 cxx=
5495fi
5496
Cole Robinson02d34f62016-05-06 14:03:09 -04005497echo_version() {
5498 if test "$1" = "yes" ; then
5499 echo "($2)"
5500 fi
5501}
5502
Jan Kiszka50e12062014-10-02 10:03:55 +02005503# prepend pixman and ftd flags after all config tests are done
5504QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5505libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005506
bellard43ce4df2003-06-09 19:53:12 +00005507echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005508echo "BIOS directory $(eval echo $qemu_datadir)"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005509echo "firmware path $(eval echo $firmwarepath)"
Stefan Weil89138852016-05-16 15:10:20 +02005510echo "binary directory $(eval echo $bindir)"
5511echo "library directory $(eval echo $libdir)"
5512echo "module directory $(eval echo $qemu_moddir)"
5513echo "libexec directory $(eval echo $libexecdir)"
5514echo "include directory $(eval echo $includedir)"
5515echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005516if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005517echo "local state directory $(eval echo $local_statedir)"
5518echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005519echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005520else
5521echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005522echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005523fi
bellard5a671352003-10-01 00:13:48 +00005524echo "Source path $source_path"
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005525echo "GIT binary $git"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005526echo "GIT submodules $git_submodules"
bellard43ce4df2003-06-09 19:53:12 +00005527echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005528echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005529echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005530echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005531echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005532echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005533echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005534echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005535echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005536echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005537echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005538if test "$slirp" = "yes" ; then
5539 echo "smbd $smbd"
5540fi
Fam Zheng17969262014-02-10 14:48:56 +08005541echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00005542echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00005543echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00005544echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +00005545echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00005546echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00005547echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00005548echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00005549echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00005550if test "$darwin" = "yes" ; then
5551 echo "Cocoa support $cocoa"
5552fi
Stefan Weil89138852016-05-16 15:10:20 +02005553echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5554echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005555echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02005556echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005557echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005558echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005559echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005560echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005561echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02005562echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005563echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005564echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00005565echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005566echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02005567echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00005568echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00005569echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005570echo "Block whitelist (rw) $block_drv_rw_whitelist"
5571echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05305572echo "VirtFS support $virtfs"
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005573echo "Multipath support $mpath"
Jes Sorensen821601e2011-03-16 13:33:36 +01005574echo "VNC support $vnc"
5575if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01005576 echo "VNC SASL support $vnc_sasl"
5577 echo "VNC JPEG support $vnc_jpeg"
5578 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01005579fi
blueswir131422552007-04-16 18:27:06 +00005580if test -n "$sparc_cpu"; then
5581 echo "Target Sparc Arch $sparc_cpu"
5582fi
aliguorie37630c2009-04-22 15:19:10 +00005583echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00005584if test "$xen" = "yes" ; then
5585 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00005586 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00005587fi
aurel322e4d9fb2008-04-08 06:01:02 +00005588echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02005589echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02005590echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02005591echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00005592echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01005593echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005594echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005595echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00005596echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02005597echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01005598echo "HAX support $hax"
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05005599echo "HVF support $hvf"
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02005600echo "TCG support $tcg"
5601if test "$tcg" = "yes" ; then
5602 echo "TCG debug enabled $debug_tcg"
5603 echo "TCG interpreter $tcg_interpreter"
5604fi
Yang Zhong5a22ab72017-12-20 21:16:46 +08005605echo "malloc trim support $malloc_trim"
Michael R. Hines2da776d2013-07-22 10:01:54 -04005606echo "RDMA support $rdma"
aurel32f652e6a2008-12-16 10:43:48 +00005607echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00005608echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005609echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00005610echo "madvise $madvise"
5611echo "posix_madvise $posix_madvise"
Corey Bryant47e98652012-01-26 09:42:26 -05005612echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005613echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005614echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005615echo "vhost-vsock support $vhost_vsock"
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005616echo "vhost-user support $vhost_user"
Lluís Vilanova5b808272014-05-27 15:02:14 +02005617echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01005618if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01005619echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01005620fi
Stefan Weil89138852016-05-16 15:10:20 +02005621echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005622echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005623echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005624echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005625echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02005626echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005627echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005628echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005629echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01005630echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05005631echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005632echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05005633echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05005634echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03005635echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01005636echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005637echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02005638echo "debug stack usage $debug_stack_usage"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005639echo "crypto afalg $crypto_afalg"
Bharata B Raoeb100392012-09-24 14:42:45 +05305640echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00005641echo "gcov $gcov_tool"
5642echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05005643echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005644echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005645echo "TPM passthrough $tpm_passthrough"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03005646echo "TPM emulator $tpm_emulator"
Paolo Bonzini3556c232013-05-10 14:16:40 +02005647echo "QOM debugging $qom_cast_debug"
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01005648echo "Live block migration $live_block_migration"
qiaonuohan607dacd2014-02-18 14:11:30 +08005649echo "lzo support $lzo"
5650echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01005651echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005652echo "NUMA host support $numa"
Klim Kireeved279a02018-01-12 12:01:19 +03005653echo "libxml2 $libxml2"
Fam Zheng2847b462015-03-26 11:03:12 +08005654echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02005655echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08005656echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005657echo "replication support $replication"
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005658echo "VxHS block device $vxhs"
Richard Henderson8ca80762017-09-14 09:41:12 -07005659echo "capstone $capstone"
bellard67b915a2004-03-31 23:37:16 +00005660
Stefan Weil1ba16962011-07-29 22:40:45 +02005661if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00005662echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00005663fi
bellard97a847b2003-08-10 21:36:04 +00005664
Daniel P. Berrangeb7715af2017-12-12 11:34:40 +00005665if test "$gtkabi" = "2.0"; then
5666 echo
5667 echo "WARNING: Use of GTK 2.0 is deprecated and will be removed in"
5668 echo "WARNING: future releases. Please switch to using GTK 3.0"
5669fi
5670
Peter Maydell898be3e2017-03-21 14:31:57 +00005671if test "$supported_cpu" = "no"; then
5672 echo
5673 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5674 echo
5675 echo "CPU host architecture $cpu support is not currently maintained."
5676 echo "The QEMU project intends to remove support for this host CPU in"
5677 echo "a future release if nobody volunteers to maintain it and to"
5678 echo "provide a build host for our continuous integration setup."
5679 echo "configure has succeeded and you can continue to build, but"
5680 echo "if you care about QEMU on this platform you should contact"
5681 echo "us upstream at qemu-devel@nongnu.org."
5682fi
5683
5684if test "$supported_os" = "no"; then
5685 echo
5686 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5687 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00005688 echo "Host OS $targetos support is not currently maintained."
5689 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00005690 echo "a future release if nobody volunteers to maintain it and to"
5691 echo "provide a build host for our continuous integration setup."
5692 echo "configure has succeeded and you can continue to build, but"
5693 echo "if you care about QEMU on this platform you should contact"
5694 echo "us upstream at qemu-devel@nongnu.org."
5695fi
5696
Juan Quintela98ec69a2009-07-16 18:34:18 +02005697config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00005698
Stefan Weildbd99ae2013-01-01 18:33:44 +01005699echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5700
Juan Quintela98ec69a2009-07-16 18:34:18 +02005701echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005702echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005703
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02005704echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005705echo "prefix=$prefix" >> $config_host_mak
5706echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03005707echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04005708echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02005709echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005710echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005711echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03005712echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005713echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005714echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005715echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08005716echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005717if test "$mingw32" = "no" ; then
5718 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5719fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04005720echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005721echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005722echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005723echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06005724echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02005725echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005726echo "GIT=$git" >> $config_host_mak
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005727echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01005728echo "GIT_UPDATE=$git_update" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005729
Juan Quintela98ec69a2009-07-16 18:34:18 +02005730echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02005731
aurel32f8393942009-04-13 18:45:38 +00005732if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005733 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00005734fi
aliguori1625af82009-04-05 17:41:02 +00005735if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07005736 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00005737fi
bellard7d132992003-03-06 23:23:54 +00005738if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02005739 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005740fi
bellard67b915a2004-03-31 23:37:16 +00005741if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005742 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02005743 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00005744 version_major=${rc_version%%.*}
5745 rc_version=${rc_version#*.}
5746 version_minor=${rc_version%%.*}
5747 rc_version=${rc_version#*.}
5748 version_subminor=${rc_version%%.*}
5749 version_micro=0
5750 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5751 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005752 if test "$guest_agent_with_vss" = "yes" ; then
5753 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05005754 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005755 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5756 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05005757 if test "$guest_agent_ntddscsi" = "yes" ; then
5758 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5759 fi
Michael Roth1a349042015-08-26 11:14:31 -05005760 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03005761 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5762 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5763 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5764 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5765 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5766 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5767 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5768 fi
pbrook210fa552007-02-27 21:04:49 +00005769else
Juan Quintela35f4df22009-07-27 16:13:07 +02005770 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00005771fi
blueswir1128ab2f2008-08-15 18:33:42 +00005772
Mark McLoughlindffcb712009-10-22 17:49:11 +01005773if test "$linux" = "yes" ; then
5774 echo "CONFIG_LINUX=y" >> $config_host_mak
5775fi
5776
bellard83fb7ad2004-07-05 21:25:26 +00005777if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005778 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00005779fi
malcb29fe3e2008-11-18 01:42:22 +00005780
bellardec530c82006-04-25 22:36:06 +00005781if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005782 echo "CONFIG_SOLARIS=y" >> $config_host_mak
bellardec530c82006-04-25 22:36:06 +00005783fi
Andreas Färber179cf402010-09-20 00:50:43 +02005784if test "$haiku" = "yes" ; then
5785 echo "CONFIG_HAIKU=y" >> $config_host_mak
5786fi
bellard97a847b2003-08-10 21:36:04 +00005787if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005788 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005789fi
Stefan Weil1ba16962011-07-29 22:40:45 +02005790if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005791 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00005792fi
bellardc20709a2004-04-21 23:27:19 +00005793if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005794 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04005795 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00005796fi
ths8a16d272008-07-19 09:56:24 +00005797if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005798 echo "CONFIG_VDE=y" >> $config_host_mak
Fam Zhenge2ad6f12017-09-07 16:35:52 +08005799 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005800fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005801if test "$netmap" = "yes" ; then
5802 echo "CONFIG_NETMAP=y" >> $config_host_mak
5803fi
Gonglei015a33b2014-07-01 20:58:08 +08005804if test "$l2tpv3" = "yes" ; then
5805 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5806fi
Corey Bryant47e98652012-01-26 09:42:26 -05005807if test "$cap_ng" = "yes" ; then
5808 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5809fi
Juan Quintela2358a492009-07-27 16:13:25 +02005810echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005811for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005812 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005813 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005814done
Fam Zhengb1149912017-09-07 16:29:13 +08005815echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5816echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5817echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5818echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5819echo "OSS_LIBS=$oss_libs" >> $config_host_mak
Juan Quintela67f86e82009-08-03 14:46:59 +02005820if test "$audio_pt_int" = "yes" ; then
5821 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5822fi
malcd5631632009-10-10 01:13:41 +04005823if test "$audio_win_int" = "yes" ; then
5824 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5825fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005826echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5827echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005828if test "$vnc" = "yes" ; then
5829 echo "CONFIG_VNC=y" >> $config_host_mak
5830fi
aliguori2f9606b2009-03-06 20:27:28 +00005831if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005832 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005833fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005834if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005835 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005836fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005837if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005838 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005839fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005840if test "$xkbcommon" = "yes" ; then
5841 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5842 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5843fi
aliguori76655d62009-03-06 20:27:37 +00005844if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005845 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005846fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005847if test "$xfs" = "yes" ; then
5848 echo "CONFIG_XFS=y" >> $config_host_mak
5849fi
Stefan Weil89138852016-05-16 15:10:20 +02005850qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005851echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005852echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005853echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005854echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005855if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005856 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005857fi
Fam Zheng17969262014-02-10 14:48:56 +08005858if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005859 # $shacmd can generate a hash started with digit, which the compiler doesn't
5860 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005861 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005862 echo "CONFIG_MODULES=y" >> $config_host_mak
5863fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005864if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005865 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005866 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005867 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
Fam Zheng8ecc89f2017-09-07 16:29:11 +08005868 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005869fi
5870if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005871 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005872fi
5873if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005874 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005875fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005876if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005877 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005878fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005879if test "$accept4" = "yes" ; then
5880 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5881fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305882if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005883 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305884fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005885if test "$eventfd" = "yes" ; then
5886 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5887fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005888if test "$memfd" = "yes" ; then
5889 echo "CONFIG_MEMFD=y" >> $config_host_mak
5890fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005891if test "$fallocate" = "yes" ; then
5892 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5893fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005894if test "$fallocate_punch_hole" = "yes" ; then
5895 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5896fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005897if test "$fallocate_zero_range" = "yes" ; then
5898 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5899fi
Kevin Wolfed911432014-09-29 17:12:59 +02005900if test "$posix_fallocate" = "yes" ; then
5901 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5902fi
Peter Maydellc727f472011-01-06 11:05:10 +00005903if test "$sync_file_range" = "yes" ; then
5904 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5905fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005906if test "$fiemap" = "yes" ; then
5907 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5908fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005909if test "$dup3" = "yes" ; then
5910 echo "CONFIG_DUP3=y" >> $config_host_mak
5911fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005912if test "$ppoll" = "yes" ; then
5913 echo "CONFIG_PPOLL=y" >> $config_host_mak
5914fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005915if test "$prctl_pr_set_timerslack" = "yes" ; then
5916 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5917fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005918if test "$epoll" = "yes" ; then
5919 echo "CONFIG_EPOLL=y" >> $config_host_mak
5920fi
5921if test "$epoll_create1" = "yes" ; then
5922 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5923fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005924if test "$sendfile" = "yes" ; then
5925 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5926fi
Riku Voipio51834342014-06-22 11:25:42 +01005927if test "$timerfd" = "yes" ; then
5928 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5929fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005930if test "$setns" = "yes" ; then
5931 echo "CONFIG_SETNS=y" >> $config_host_mak
5932fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02005933if test "$clock_adjtime" = "yes" ; then
5934 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5935fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02005936if test "$syncfs" = "yes" ; then
5937 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5938fi
aurel323b3f24a2009-04-15 16:12:13 +00005939if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005940 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005941fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005942if test "$inotify1" = "yes" ; then
5943 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5944fi
Peter Maydell401bc052017-09-05 13:19:32 +01005945if test "$sem_timedwait" = "yes" ; then
5946 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5947fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005948if test "$byteswap_h" = "yes" ; then
5949 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5950fi
5951if test "$bswap_h" = "yes" ; then
5952 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5953fi
Alexander Graf769ce762009-05-11 17:41:42 +02005954if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005955 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005956 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005957 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005958fi
aurel322e4d9fb2008-04-08 06:01:02 +00005959if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005960 echo "CONFIG_BRLAPI=y" >> $config_host_mak
Fam Zheng8eca2882017-09-07 16:47:00 +08005961 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005962fi
balrogfb599c92008-09-28 23:49:55 +00005963if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005964 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005965 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005966fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005967if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005968 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5969fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005970if test "$gtk" = "yes" ; then
5971 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005972 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005973 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005974 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005975 if test "$gtk_gl" = "yes" ; then
5976 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5977 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005978fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005979echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005980if test "$gnutls" = "yes" ; then
5981 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5982fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005983if test "$gnutls_rnd" = "yes" ; then
5984 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5985fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005986if test "$gcrypt" = "yes" ; then
5987 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08005988 if test "$gcrypt_hmac" = "yes" ; then
5989 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5990 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005991 if test "$gcrypt_kdf" = "yes" ; then
5992 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5993 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005994fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005995if test "$nettle" = "yes" ; then
5996 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005997 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005998 if test "$nettle_kdf" = "yes" ; then
5999 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
6000 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01006001fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01006002if test "$tasn1" = "yes" ; then
6003 echo "CONFIG_TASN1=y" >> $config_host_mak
6004fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00006005if test "$have_ifaddrs_h" = "yes" ; then
6006 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
6007fi
Eric Blake6b39b062016-10-11 10:46:23 -05006008if test "$have_broken_size_max" = "yes" ; then
6009 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
6010fi
Jan Vesely277abf12016-04-29 13:15:23 -04006011
6012# Work around a system header bug with some kernel/XFS header
6013# versions where they both try to define 'struct fsxattr':
6014# xfs headers will not try to redefine structs from linux headers
6015# if this macro is set.
6016if test "$have_fsxattr" = "yes" ; then
6017 echo "HAVE_FSXATTR=y" >> $config_host_mak
6018fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01006019if test "$vte" = "yes" ; then
6020 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06006021 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
6022fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02006023if test "$virglrenderer" = "yes" ; then
6024 echo "CONFIG_VIRGL=y" >> $config_host_mak
6025 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
6026 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
6027fi
aliguorie37630c2009-04-22 15:19:10 +00006028if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02006029 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00006030 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00006031 if test "$xen_pv_domain_build" = "yes" ; then
6032 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
6033 fi
aliguorie37630c2009-04-22 15:19:10 +00006034fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02006035if test "$linux_aio" = "yes" ; then
6036 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
6037fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006038if test "$attr" = "yes" ; then
6039 echo "CONFIG_ATTR=y" >> $config_host_mak
6040fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02006041if test "$libattr" = "yes" ; then
6042 echo "CONFIG_LIBATTR=y" >> $config_host_mak
6043fi
Meador Inge983eef52012-02-24 14:00:42 +05306044if test "$virtfs" = "yes" ; then
6045 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07006046fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02006047if test "$mpath" = "yes" ; then
6048 echo "CONFIG_MPATH=y" >> $config_host_mak
6049fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00006050if test "$vhost_scsi" = "yes" ; then
6051 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
6052fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006053if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03006054 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
6055fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01006056if test "$vhost_vsock" = "yes" ; then
6057 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
6058fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006059if test "$vhost_user" = "yes" ; then
6060 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
6061fi
ths77755342008-11-27 15:45:16 +00006062if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02006063 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00006064fi
aliguoribf9298b2008-12-05 20:05:26 +00006065if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006066 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00006067fi
aliguoriceb42de2009-04-07 18:43:28 +00006068if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006069 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00006070fi
aurel32f652e6a2008-12-16 10:43:48 +00006071if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02006072 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00006073fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03006074if test "$signalfd" = "yes" ; then
6075 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6076fi
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006077if test "$tcg" = "yes"; then
6078 echo "CONFIG_TCG=y" >> $config_host_mak
6079 if test "$tcg_interpreter" = "yes" ; then
6080 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6081 fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02006082fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006083if test "$fdatasync" = "yes" ; then
6084 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6085fi
Andreas Färbere78815a2010-09-25 11:26:05 +00006086if test "$madvise" = "yes" ; then
6087 echo "CONFIG_MADVISE=y" >> $config_host_mak
6088fi
6089if test "$posix_madvise" = "yes" ; then
6090 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6091fi
bellard97a847b2003-08-10 21:36:04 +00006092
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01006093if test "$spice" = "yes" ; then
6094 echo "CONFIG_SPICE=y" >> $config_host_mak
6095fi
6096
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006097if test "$smartcard" = "yes" ; then
6098 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Fam Zheng7b62bf52017-09-07 16:29:16 +08006099 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6100 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02006101fi
6102
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006103if test "$libusb" = "yes" ; then
6104 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
Fam Zhengb878b652017-09-07 16:29:17 +08006105 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6106 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006107fi
6108
Hans de Goede69354a82011-07-19 11:04:10 +02006109if test "$usb_redir" = "yes" ; then
6110 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
Fam Zhengcc7923f2017-09-07 16:29:18 +08006111 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6112 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
Hans de Goede69354a82011-07-19 11:04:10 +02006113fi
6114
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006115if test "$opengl" = "yes" ; then
6116 echo "CONFIG_OPENGL=y" >> $config_host_mak
6117 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006118 if test "$opengl_dmabuf" = "yes" ; then
6119 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6120 fi
Michael Walle20ff0752011-03-07 23:32:39 +01006121fi
6122
Yang Zhong5a22ab72017-12-20 21:16:46 +08006123if test "$malloc_trim" = "yes" ; then
6124 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6125fi
6126
Liang Li99f2dbd2016-03-08 13:53:16 +08006127if test "$avx2_opt" = "yes" ; then
6128 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6129fi
6130
qiaonuohan607dacd2014-02-18 14:11:30 +08006131if test "$lzo" = "yes" ; then
6132 echo "CONFIG_LZO=y" >> $config_host_mak
6133fi
6134
6135if test "$snappy" = "yes" ; then
6136 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6137fi
6138
Peter Wu6b383c02015-01-06 18:48:14 +01006139if test "$bzip2" = "yes" ; then
6140 echo "CONFIG_BZIP2=y" >> $config_host_mak
6141 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6142fi
6143
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006144if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006145 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006146 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6147 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006148fi
6149
Peter Lieven6542aa92014-02-03 10:26:13 +01006150if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04006151 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6152 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01006153fi
6154
Eduardo Otubof7945732012-08-14 18:44:05 -03006155if test "$seccomp" = "yes"; then
6156 echo "CONFIG_SECCOMP=y" >> $config_host_mak
Fam Zhengc3883e12017-09-07 16:53:16 +08006157 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6158 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
Eduardo Otubof7945732012-08-14 18:44:05 -03006159fi
6160
bellard83fb7ad2004-07-05 21:25:26 +00006161# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00006162if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006163 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00006164fi
6165
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01006166if test "$localtime_r" = "yes" ; then
6167 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6168fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02006169if test "$qom_cast_debug" = "yes" ; then
6170 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6171fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006172if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006173 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006174 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6175 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006176fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06006177
Peter Maydell7c2acc72013-04-08 12:11:27 +01006178echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006179if test "$coroutine_pool" = "yes" ; then
6180 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6181else
6182 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6183fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05306184
Peter Lieven7d992e42016-09-27 11:58:45 +02006185if test "$debug_stack_usage" = "yes" ; then
6186 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6187fi
6188
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006189if test "$crypto_afalg" = "yes" ; then
6190 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6191fi
6192
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05306193if test "$open_by_handle_at" = "yes" ; then
6194 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6195fi
6196
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05306197if test "$linux_magic_h" = "yes" ; then
6198 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6199fi
6200
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01006201if test "$pragma_diagnostic_available" = "yes" ; then
6202 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01006203fi
6204
Kevin Wolf3f4349d2012-06-29 13:40:27 +02006205if test "$valgrind_h" = "yes" ; then
6206 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6207fi
6208
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03006209if test "$has_environ" = "yes" ; then
6210 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6211fi
6212
Richard Henderson76a347e2012-12-28 14:17:02 -08006213if test "$cpuid_h" = "yes" ; then
6214 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6215fi
6216
Richard Hendersonf5401662013-02-16 12:46:59 -08006217if test "$int128" = "yes" ; then
6218 echo "CONFIG_INT128=y" >> $config_host_mak
6219fi
6220
Richard Henderson7ebee432016-06-29 21:10:59 -07006221if test "$atomic128" = "yes" ; then
6222 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6223fi
6224
Richard Hendersondf79b992016-09-02 12:23:57 -07006225if test "$atomic64" = "yes" ; then
6226 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6227fi
6228
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08006229if test "$getauxval" = "yes" ; then
6230 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6231fi
6232
Bharata B Raoeb100392012-09-24 14:42:45 +05306233if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006234 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006235 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6236 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05306237fi
6238
Jeff Codyd85fa9e2016-04-05 10:40:09 -04006239if test "$glusterfs_xlator_opt" = "yes" ; then
6240 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6241fi
6242
Bharata B Rao0c14fb42013-07-16 21:47:42 +05306243if test "$glusterfs_discard" = "yes" ; then
6244 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6245fi
6246
Niels de Vosdf3a4292017-05-28 12:01:14 +05306247if test "$glusterfs_fallocate" = "yes" ; then
6248 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6249fi
6250
Bharata B Rao7c815372013-12-21 14:51:25 +05306251if test "$glusterfs_zerofill" = "yes" ; then
6252 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6253fi
6254
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006255if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006256 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006257 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6258 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006259fi
6260
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006261if test "$live_block_migration" = "yes" ; then
6262 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6263fi
6264
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006265if test "$tpm" = "yes"; then
6266 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006267 # TPM passthrough support?
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006268 if test "$tpm_passthrough" = "yes"; then
6269 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6270 fi
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006271 # TPM emulator support?
6272 if test "$tpm_emulator" = "yes"; then
6273 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6274 fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006275fi
6276
Lluís Vilanova5b808272014-05-27 15:02:14 +02006277echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6278if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02006279 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05306280fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006281if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02006282 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6283 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02006284 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01006285fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03006286if have_backend "log"; then
6287 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02006288fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006289if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02006290 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6291fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006292if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02006293 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6294 if test "$trace_backend_stap" = "yes" ; then
6295 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6296 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00006297fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006298if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006299 if test "$linux" = "yes" ; then
6300 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006301 else
Stewart Smith21684af2014-01-24 12:39:10 +11006302 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006303 fi
6304fi
Paul Durrant0a852412016-08-04 14:44:14 +01006305if have_backend "syslog"; then
6306 if test "$posix_syslog" = "yes" ; then
6307 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6308 else
6309 feature_not_found "syslog(trace backend)" "syslog not available"
6310 fi
6311fi
Prerna Saxena9410b562010-07-13 09:26:32 +01006312echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6313
Michael R. Hines2da776d2013-07-22 10:01:54 -04006314if test "$rdma" = "yes" ; then
6315 echo "CONFIG_RDMA=y" >> $config_host_mak
Fam Zheng392fb642017-09-07 16:42:30 +08006316 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
Michael R. Hines2da776d2013-07-22 10:01:54 -04006317fi
6318
Laurent Vivier575b22b2016-06-02 22:14:15 +02006319if test "$have_rtnetlink" = "yes" ; then
6320 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6321fi
6322
Klim Kireeved279a02018-01-12 12:01:19 +03006323if test "$libxml2" = "yes" ; then
6324 echo "CONFIG_LIBXML2=y" >> $config_host_mak
6325 echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak
6326 echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak
6327fi
6328
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006329if test "$replication" = "yes" ; then
6330 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6331fi
6332
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01006333if test "$have_af_vsock" = "yes" ; then
6334 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6335fi
6336
Christopher Covington4d043512016-12-28 15:04:33 -05006337if test "$have_sysmacros" = "yes" ; then
6338 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6339fi
6340
Andreas Grapentin49e00a12017-03-14 17:59:53 +01006341if test "$have_static_assert" = "yes" ; then
6342 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6343fi
6344
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02006345if test "$have_utmpx" = "yes" ; then
6346 echo "HAVE_UTMPX=y" >> $config_host_mak
6347fi
6348
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006349if test "$ivshmem" = "yes" ; then
6350 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6351fi
Richard Hendersone219c492017-09-28 09:01:23 -07006352if test "$capstone" != "no" ; then
Richard Henderson8ca80762017-09-14 09:41:12 -07006353 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6354fi
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006355
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00006356# Hold two types of flag:
6357# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6358# a thread we have a handle to
6359# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6360# platform
6361if test "$pthread_setname_np" = "yes" ; then
6362 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6363 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6364fi
6365
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006366if test "$vxhs" = "yes" ; then
6367 echo "CONFIG_VXHS=y" >> $config_host_mak
6368 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6369fi
6370
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006371if test "$tcg_interpreter" = "yes"; then
6372 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6373elif test "$ARCH" = "sparc64" ; then
6374 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6375elif test "$ARCH" = "s390x" ; then
6376 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006377elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006378 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07006379elif test "$ARCH" = "ppc64" ; then
6380 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006381else
6382 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6383fi
6384QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6385
Juan Quintela98ec69a2009-07-16 18:34:18 +02006386echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006387echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006388echo "MAKE=$make" >> $config_host_mak
6389echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04006390echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6391echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03006392echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6393echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00006394echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006395echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006396if $iasl -h > /dev/null 2>&1; then
6397 echo "IASL=$iasl" >> $config_host_mak
6398fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02006399echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006400echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04006401echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01006402echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006403echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01006404echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006405echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006406echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006407echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006408echo "OBJCOPY=$objcopy" >> $config_host_mak
6409echo "LD=$ld" >> $config_host_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006410echo "RANLIB=$ranlib" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02006411echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00006412echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006413echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006414echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02006415echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01006416echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01006417echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006418if test "$sparse" = "yes" ; then
6419 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01006420 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02006421 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006422 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6423 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6424fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01006425if test "$cross_prefix" != ""; then
6426 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6427else
6428 echo "AUTOCONF_HOST := " >> $config_host_mak
6429fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006430echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006431echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01006432echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01006433echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02006434echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02006435echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01006436echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006437echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006438echo "DSOSUF=$DSOSUF" >> $config_host_mak
6439echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05006440echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01006441echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6442echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02006443echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01006444echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00006445if test "$gcov" = "yes" ; then
6446 echo "CONFIG_GCOV=y" >> $config_host_mak
6447 echo "GCOV=$gcov_tool" >> $config_host_mak
6448fi
Juan Quintela804edf22009-07-27 16:12:49 +02006449
Peter Maydell6efd7512011-11-30 11:59:04 +00006450# use included Linux headers
6451if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00006452 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00006453 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006454 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01006455 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00006456 ;;
6457 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01006458 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00006459 ;;
6460 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01006461 linux_arch=s390
6462 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01006463 aarch64)
6464 linux_arch=arm64
6465 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01006466 mips64)
6467 linux_arch=mips
6468 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01006469 *)
6470 # For most CPUs the kernel architecture name and QEMU CPU name match.
6471 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00006472 ;;
6473 esac
Peter Maydell08312a62012-08-03 13:51:25 +01006474 # For non-KVM architectures we will not have asm headers
6475 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6476 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
6477 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00006478fi
6479
bellard1d14ffa2005-10-30 18:58:22 +00006480for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00006481target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02006482config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02006483target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00006484target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02006485
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006486case "$target_name" in
Michael Weiser722dd7b2018-01-11 13:25:32 +00006487 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 +02006488 target_bigendian=yes
6489 ;;
6490esac
bellard97a847b2003-08-10 21:36:04 +00006491target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00006492target_user_only="no"
ths831b7822007-01-18 20:06:33 +00006493target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00006494target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00006495case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006496 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00006497 target_softmmu="yes"
6498 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006499 ${target_name}-linux-user)
pbrook9e407a82007-05-26 16:38:53 +00006500 target_user_only="yes"
6501 target_linux_user="yes"
6502 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006503 ${target_name}-bsd-user)
blueswir184778502008-10-26 20:33:16 +00006504 target_user_only="yes"
6505 target_bsd_user="yes"
6506 ;;
pbrook9e407a82007-05-26 16:38:53 +00006507 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006508 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00006509 exit 1
6510 ;;
6511esac
ths831b7822007-01-18 20:06:33 +00006512
bellard97a847b2003-08-10 21:36:04 +00006513mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02006514echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006515
pbrooke5fe0c52006-06-11 13:32:59 +00006516bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00006517mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02006518interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00006519gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00006520
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006521TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02006522TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02006523TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02006524
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006525case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00006526 i386)
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006527 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006528 ;;
6529 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006530 TARGET_BASE_ARCH=i386
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006531 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006532 ;;
6533 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11006534 mttcg="yes"
aurel322408a522008-04-20 20:19:44 +00006535 ;;
6536 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006537 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00006538 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006539 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00006540 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00006541 ;;
Michael Weiser722dd7b2018-01-11 13:25:32 +00006542 aarch64|aarch64_be)
6543 TARGET_ARCH=aarch64
Alexander Graf6a49fa92013-09-03 20:12:22 +01006544 TARGET_BASE_ARCH=arm
6545 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006546 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01006547 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 +01006548 ;;
aurel322408a522008-04-20 20:19:44 +00006549 cris)
aurel322408a522008-04-20 20:19:44 +00006550 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08006551 hppa)
6552 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01006553 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01006554 ;;
aurel322408a522008-04-20 20:19:44 +00006555 m68k)
aurel322408a522008-04-20 20:19:44 +00006556 bflt="yes"
Laurent Vivier5a4526b2017-06-20 22:51:19 +02006557 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
aurel322408a522008-04-20 20:19:44 +00006558 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006559 microblaze|microblazeel)
6560 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006561 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006562 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02006563 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006564 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006565 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006566 ;;
6567 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08006568 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006569 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006570 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08006571 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006572 ;;
6573 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006574 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006575 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006576 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006577 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006578 moxie)
6579 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006580 nios2)
6581 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006582 or1k)
Jia Liue67db062012-07-20 15:50:39 +08006583 TARGET_ARCH=openrisc
6584 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08006585 ;;
aurel322408a522008-04-20 20:19:44 +00006586 ppc)
aurel32c8b35322009-01-24 15:07:34 +00006587 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006588 ;;
6589 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006590 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006591 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00006592 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006593 ;;
6594 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006595 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006596 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306597 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006598 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006599 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05006600 ppc64le)
6601 TARGET_ARCH=ppc64
6602 TARGET_BASE_ARCH=ppc
6603 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306604 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006605 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 -05006606 ;;
aurel322408a522008-04-20 20:19:44 +00006607 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006608 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006609 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006610 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02006611 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01006612 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006613 ;;
6614 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006615 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00006616 bflt="yes"
6617 ;;
6618 sparc)
aurel322408a522008-04-20 20:19:44 +00006619 ;;
6620 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006621 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00006622 ;;
6623 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006624 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006625 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006626 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02006627 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006628 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006629 s390x)
Christian Borntraeger86158a22017-03-08 12:41:14 +01006630 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 +01006631 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08006632 tilegx)
6633 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07006634 tricore)
6635 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006636 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006637 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006638 xtensa|xtensaeb)
6639 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04006640 ;;
aurel322408a522008-04-20 20:19:44 +00006641 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006642 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00006643 ;;
6644esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006645# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6646if [ "$TARGET_BASE_ARCH" = "" ]; then
6647 TARGET_BASE_ARCH=$TARGET_ARCH
6648fi
6649
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006650symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6651
Daniel P. Berrange99afc912012-08-20 15:31:38 +01006652upper() {
6653 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6654}
6655
Stefan Weil89138852016-05-16 15:10:20 +02006656target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02006657echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006658echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02006659echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02006660if [ "$TARGET_ABI_DIR" = "" ]; then
6661 TARGET_ABI_DIR=$TARGET_ARCH
6662fi
Juan Quintela25be2102009-10-07 02:41:00 +02006663echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07006664if [ "$HOST_VARIANT_DIR" != "" ]; then
6665 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6666fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006667
6668if supported_xen_target $target; then
6669 echo "CONFIG_XEN=y" >> $config_target_mak
6670 if test "$xen_pci_passthrough" = yes; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00006671 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006672 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006673fi
6674if supported_kvm_target $target; then
6675 echo "CONFIG_KVM=y" >> $config_target_mak
6676 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006677 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006678 if test "$vhost_user" = "yes" ; then
6679 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6680 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02006681 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006682fi
6683if supported_hax_target $target; then
6684 echo "CONFIG_HAX=y" >> $config_target_mak
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006685fi
Sergio Andres Gomez Del Realc97d6d22017-09-13 04:05:09 -05006686if supported_hvf_target $target; then
6687 echo "CONFIG_HVF=y" >> $config_target_mak
6688fi
bellardde83cd02003-06-15 20:25:43 +00006689if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006690 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006691fi
6692if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006693 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00006694 if test "$mttcg" = "yes" ; then
6695 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6696 fi
bellardde83cd02003-06-15 20:25:43 +00006697fi
bellard997344f2003-10-27 21:10:39 +00006698if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006699 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01006700 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00006701fi
ths831b7822007-01-18 20:06:33 +00006702if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006703 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00006704fi
pbrook56aebc82008-10-11 17:55:29 +00006705list=""
6706if test ! -z "$gdb_xml_files" ; then
6707 for x in $gdb_xml_files; do
6708 list="$list $source_path/gdb-xml/$x"
6709 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02006710 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00006711fi
bellardde83cd02003-06-15 20:25:43 +00006712
pbrooke5fe0c52006-06-11 13:32:59 +00006713if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02006714 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00006715fi
blueswir184778502008-10-26 20:33:16 +00006716if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006717 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00006718fi
bellard5b0753e2005-03-01 21:37:28 +00006719
Juan Quintela4afddb52009-08-03 14:46:45 +02006720# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02006721
Juan Quintela4afddb52009-08-03 14:46:45 +02006722cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02006723ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02006724
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006725disas_config() {
6726 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6727 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6728}
6729
Juan Quintela64656022009-08-03 14:46:53 +02006730for i in $ARCH $TARGET_BASE_ARCH ; do
6731 case "$i" in
6732 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006733 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02006734 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05006735 aarch64)
6736 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006737 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05006738 fi
6739 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006740 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006741 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006742 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006743 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006744 fi
Juan Quintela64656022009-08-03 14:46:53 +02006745 ;;
6746 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006747 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02006748 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07006749 hppa)
6750 disas_config "HPPA"
6751 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006752 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006753 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02006754 ;;
Michael Walle79368f42012-03-31 19:54:20 +02006755 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006756 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02006757 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006758 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006759 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02006760 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006761 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006762 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02006763 ;;
6764 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006765 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02006766 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006767 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006768 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04006769 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006770 nios2)
6771 disas_config "NIOS2"
6772 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006773 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006774 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08006775 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006776 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006777 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02006778 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006779 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006780 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02006781 ;;
6782 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006783 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02006784 ;;
6785 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006786 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02006787 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006788 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006789 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04006790 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006791 esac
6792done
Stefan Weil9195b2c2011-10-19 07:07:18 +02006793if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006794 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02006795fi
Juan Quintela64656022009-08-03 14:46:53 +02006796
Juan Quintela6ee71262009-08-03 14:46:47 +02006797case "$ARCH" in
6798alpha)
6799 # Ensure there's only a single GP
6800 cflags="-msmall-data $cflags"
6801;;
6802esac
6803
Juan Quintelad02c1db2009-08-03 14:46:50 +02006804if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006805 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006806 if test "$target_linux_user" = "yes" ; then
6807 cflags="-p $cflags"
6808 ldflags="-p $ldflags"
6809 fi
6810 if test "$target_softmmu" = "yes" ; then
6811 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02006812 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006813 fi
6814fi
6815
Juan Quintela9b8e1112009-08-03 14:46:46 +02006816if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07006817 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02006818fi
Juan Quintelafa282482009-07-22 22:37:39 +02006819
Christian Borntraegere9a35912017-08-23 12:16:23 +02006820# Newer kernels on s390 check for an S390_PGSTE program header and
6821# enable the pgste page table extensions in that case. This makes
6822# the vm.allocate_pgste sysctl unnecessary. We enable this program
6823# header if
6824# - we build on s390x
6825# - we build the system emulation for s390x (qemu-system-s390x)
6826# - KVM is enabled
6827# - the linker supports --s390-pgste
6828if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6829 if ld_has --s390-pgste ; then
6830 ldflags="-Wl,--s390-pgste $ldflags"
6831 fi
6832fi
6833
Juan Quintela25be2102009-10-07 02:41:00 +02006834echo "LDFLAGS+=$ldflags" >> $config_target_mak
6835echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02006836
bellard97a847b2003-08-10 21:36:04 +00006837done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00006838
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006839if [ "$dtc_internal" = "yes" ]; then
6840 echo "config-host.h: subdir-dtc" >> $config_host_mak
6841fi
Richard Hendersone219c492017-09-28 09:01:23 -07006842if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6843 echo "config-host.h: subdir-capstone" >> $config_host_mak
6844fi
6845if test -n "$LIBCAPSTONE"; then
6846 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6847fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006848
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08006849if test "$numa" = "yes"; then
6850 echo "CONFIG_NUMA=y" >> $config_host_mak
6851fi
6852
John Snowfd0e6052015-03-25 18:57:39 -04006853if test "$ccache_cpp2" = "yes"; then
6854 echo "export CCACHE_CPP2=y" >> $config_host_mak
6855fi
6856
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006857# build tree in object directory in case the source is not in the current directory
Fam Zhengb1fb9a62017-09-05 10:11:58 +08006858DIRS="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 +02006859DIRS="$DIRS docs docs/interop fsdev scsi"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006860DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006861DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02006862DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06006863FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6864FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02006865FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006866FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02006867FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006868FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006869FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01006870FILES="$FILES pc-bios/qemu-icon.bmp"
Stefan Hajnoczi3a586d22017-05-17 13:40:42 +01006871FILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
Richard Henderson753d11f2011-06-24 11:58:37 -07006872for bios_file in \
6873 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11006874 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01006875 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07006876 $source_path/pc-bios/*.rom \
6877 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00006878 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07006879 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01006880 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07006881 $source_path/pc-bios/palcode-*
6882do
Stefan Weil89138852016-05-16 15:10:20 +02006883 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006884done
Stefan Weil89138852016-05-16 15:10:20 +02006885for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006886do
Stefan Weil89138852016-05-16 15:10:20 +02006887 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006888done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006889mkdir -p $DIRS
6890for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03006891 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01006892 symlink "$source_path/$f" "$f"
6893 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006894done
Paul Brook1ad21342009-05-19 16:17:58 +01006895
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006896# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06006897for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006898 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01006899 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006900 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006901 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006902 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006903 echo "CC=$cc" >> $config_mak
6904 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006905 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006906 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006907 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006908 echo "LD=$ld" >> $config_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006909 echo "RANLIB=$ranlib" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006910done
6911
Marc-André Lureaufe310172016-06-15 13:06:00 +02006912# set up tests data directory
6913if [ ! -e tests/data ]; then
6914 symlink "$source_path/tests/data" tests/data
6915fi
6916
Max Reitz76c75602014-05-24 23:24:56 +02006917# set up qemu-iotests in this build directory
6918iotests_common_env="tests/qemu-iotests/common.env"
6919iotests_check="tests/qemu-iotests/check"
6920
6921echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6922echo >> "$iotests_common_env"
6923echo "export PYTHON='$python'" >> "$iotests_common_env"
6924
6925if [ ! -e "$iotests_check" ]; then
6926 symlink "$source_path/$iotests_check" "$iotests_check"
6927fi
6928
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006929# Save the configure command line for later reuse.
6930cat <<EOD >config.status
6931#!/bin/sh
6932# Generated by configure.
6933# Run this file to recreate the current configuration.
6934# Compiler output produced by configure, useful for debugging
6935# configure, is in config.log if it exists.
6936EOD
6937printf "exec" >>config.status
6938printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006939echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006940chmod +x config.status
6941
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006942rm -r "$TMPDIR1"