blob: 100309c33f6da5349df48c86da82073472127766 [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
John Snow5e4dfd32015-10-28 13:56:40 -040011# Don't allow CCACHE, if present, to use cached results of compile tests!
12export CCACHE_RECACHE=yes
13
Peter Maydell8cd05ab2014-05-23 17:07:24 +010014# Temporary directory used for files created while
15# configure runs. Since it is in the build directory
16# we can safely blow away any previous version of it
17# (and we need not jump through hoops to try to delete
18# it when configure exits.)
19TMPDIR1="config-temp"
20rm -rf "${TMPDIR1}"
21mkdir -p "${TMPDIR1}"
22if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
bellard7d132992003-03-06 23:23:54 +000025fi
26
Peter Maydell8cd05ab2014-05-23 17:07:24 +010027TMPB="qemu-conf"
28TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050029TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000030TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010031TMPE="${TMPDIR1}/${TMPB}.exe"
James Clarke6969ec62016-06-06 12:02:50 +010032TMPMO="${TMPDIR1}/${TMPB}.mo"
bellard7d132992003-03-06 23:23:54 +000033
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020034rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000035
Peter Maydellb48e3612011-11-23 17:26:44 +000036# Print a helpful header at the top of config.log
37echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000038printf "# Configured with:" >> config.log
39printf " '%s'" "$0" "$@" >> config.log
40echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000041echo "#" >> config.log
42
Paolo Bonzinid880a3b2017-07-03 16:58:28 +020043print_error() {
44 (echo
Peter Maydell76ad07a2013-04-08 12:11:26 +010045 echo "ERROR: $1"
46 while test -n "$2"; do
47 echo " $2"
48 shift
49 done
Paolo Bonzinid880a3b2017-07-03 16:58:28 +020050 echo) >&2
51}
52
53error_exit() {
54 print_error "$@"
Peter Maydell76ad07a2013-04-08 12:11:26 +010055 exit 1
56}
57
Peter Maydell9c83ffd2014-02-25 18:27:49 +000058do_compiler() {
59 # Run the compiler, capturing its output to the log. First argument
60 # is compiler binary to execute.
61 local compiler="$1"
62 shift
63 echo $compiler "$@" >> config.log
64 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010065 # Test passed. If this is an --enable-werror build, rerun
66 # the test with -Werror and bail out if it fails. This
67 # makes warning-generating-errors in configure test code
68 # obvious to developers.
69 if test "$werror" != "yes"; then
70 return 0
71 fi
72 # Don't bother rerunning the compile if we were already using -Werror
73 case "$*" in
74 *-Werror*)
75 return 0
76 ;;
77 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000078 echo $compiler -Werror "$@" >> config.log
79 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010080 error_exit "configure test passed without -Werror but failed with -Werror." \
81 "This is probably a bug in the configure script. The failing command" \
82 "will be at the bottom of config.log." \
83 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010084}
85
Peter Maydell9c83ffd2014-02-25 18:27:49 +000086do_cc() {
87 do_compiler "$cc" "$@"
88}
89
90do_cxx() {
91 do_compiler "$cxx" "$@"
92}
93
94update_cxxflags() {
95 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
96 # options which some versions of GCC's C++ compiler complain about
97 # because they only make sense for C programs.
Bruno Dominguez11cde1c2017-06-06 14:07:47 +010098 QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS"
99
Peter Maydell9c83ffd2014-02-25 18:27:49 +0000100 for arg in $QEMU_CFLAGS; do
101 case $arg in
102 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
103 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
104 ;;
105 *)
106 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
107 ;;
108 esac
109 done
110}
111
Juan Quintela52166aa2009-08-03 14:46:03 +0200112compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400113 local_cflags="$1"
114 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200115}
116
117compile_prog() {
118 local_cflags="$1"
119 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100120 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200121}
122
Paolo Bonzini11568d62010-12-23 11:43:58 +0100123# symbolically link $1 to $2. Portable version of "ln -sf".
124symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100125 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800126 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100127 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100128}
129
Loïc Minier0dba6192010-01-28 21:26:51 +0000130# check whether a command is available to this shell (may be either an
131# executable or a builtin)
132has() {
133 type "$1" >/dev/null 2>&1
134}
135
136# search for an executable in PATH
137path_of() {
138 local_command="$1"
139 local_ifs="$IFS"
140 local_dir=""
141
142 # pathname has a dir component?
143 if [ "${local_command#*/}" != "$local_command" ]; then
144 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
145 echo "$local_command"
146 return 0
147 fi
148 fi
149 if [ -z "$local_command" ]; then
150 return 1
151 fi
152
153 IFS=:
154 for local_dir in $PATH; do
155 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
156 echo "$local_dir/$local_command"
157 IFS="${local_ifs:-$(printf ' \t\n')}"
158 return 0
159 fi
160 done
161 # not found
162 IFS="${local_ifs:-$(printf ' \t\n')}"
163 return 1
164}
165
Lluís Vilanova5b808272014-05-27 15:02:14 +0200166have_backend () {
167 echo "$trace_backends" | grep "$1" >/dev/null
168}
169
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200170glob() {
171 eval test -z '"${1#'"$2"'}"'
172}
173
174supported_hax_target() {
175 test "$hax" = "yes" || return 1
176 glob "$1" "*-softmmu" || return 1
177 case "${1%-softmmu}" in
178 i386|x86_64)
179 return 0
180 ;;
181 esac
182 return 1
183}
184
185supported_kvm_target() {
186 test "$kvm" = "yes" || return 1
187 glob "$1" "*-softmmu" || return 1
188 case "${1%-softmmu}:$cpu" in
189 arm:arm | aarch64:aarch64 | \
190 i386:i386 | i386:x86_64 | i386:x32 | \
191 x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \
192 mips:mips | mipsel:mips | \
193 ppc:ppc | ppcemb:ppc | ppc64:ppc | \
194 ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \
195 s390x:s390x)
196 return 0
197 ;;
198 esac
199 return 1
200}
201
202supported_xen_target() {
203 test "$xen" = "yes" || return 1
204 glob "$1" "*-softmmu" || return 1
Paolo Bonzinib5ed2e12017-07-11 12:00:49 +0200205 # Only i386 and x86_64 provide the xenpv machine.
206 case "${1%-softmmu}" in
207 i386|x86_64)
Paolo Bonzini3b6b7552012-09-17 11:59:41 +0200208 return 0
209 ;;
210 esac
211 return 1
212}
213
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200214supported_target() {
215 case "$1" in
216 *-softmmu)
217 ;;
218 *-linux-user)
219 if test "$linux" != "yes"; then
220 print_error "Target '$target' is only available on a Linux host"
221 return 1
222 fi
223 ;;
224 *-bsd-user)
225 if test "$bsd" != "yes"; then
226 print_error "Target '$target' is only available on a BSD host"
227 return 1
228 fi
229 ;;
230 *)
231 print_error "Invalid target name '$target'"
232 return 1
233 ;;
234 esac
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200235 test "$tcg" = "yes" && return 0
236 supported_kvm_target "$1" && return 0
237 supported_xen_target "$1" && return 0
238 supported_hax_target "$1" && return 0
239 print_error "TCG disabled, but hardware accelerator not available for '$target'"
240 return 1
Paolo Bonzinid880a3b2017-07-03 16:58:28 +0200241}
242
Christian Borntraegere9a35912017-08-23 12:16:23 +0200243
244ld_has() {
245 $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1
246}
247
bellard7d132992003-03-06 23:23:54 +0000248# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200249source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200250cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300251iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000252interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000253static="no"
bellard7d132992003-03-06 23:23:54 +0000254cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000255audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800256block_drv_rw_whitelist=""
257block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000258host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200259libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200260libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200261audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400262audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200263cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500264libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100265debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100266stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000267
Daniel P. Berrange92712822017-09-29 11:11:58 +0100268if test -e "$source_path/.git"
269then
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100270 git_update=yes
Daniel P. Berrange92712822017-09-29 11:11:58 +0100271 git_submodules="ui/keycodemapdb"
272else
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +0100273 git_update=no
Daniel P. Berrange92712822017-09-29 11:11:58 +0100274 git_submodules=""
275fi
Daniel P. Berrangecc84d632017-10-20 15:02:43 +0100276git="git"
aliguoriac0df512008-12-29 17:14:15 +0000277
Stefan Weilafb63eb2012-09-26 22:04:38 +0200278# Don't accept a target_list environment variable.
279unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100280
281# Default value for a variable defining feature "foo".
282# * foo="no" feature will only be used if --enable-foo arg is given
283# * foo="" feature will be searched for, and if found, will be used
284# unless --disable-foo is given
285# * foo="yes" this value will only be set by --enable-foo flag.
286# feature will searched for,
287# if not found, configure exits with error
288#
289# Always add --enable-foo and --disable-foo command line args.
290# Distributions want to ensure that several features are compiled in, and it
291# is impossible without a --enable-foo that exits if a feature is not found.
292
293bluez=""
294brlapi=""
295curl=""
296curses=""
297docs=""
298fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100299netmap="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100300sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400301sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530302virtfs=""
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200303mpath=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100304vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100305sparse="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100306vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100307vnc_sasl=""
308vnc_jpeg=""
309vnc_png=""
Gerd Hoffmann6a021532017-10-05 17:33:28 +0200310xkbcommon=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100311xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000312xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000313xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000314xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100315linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500316cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100317attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200318libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100319xfs=""
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +0200320tcg="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100321
Bradd41a75a2011-07-26 23:11:26 -0400322vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000323vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100324vhost_vsock="no"
Marc-André Lureaue6a74862017-08-03 11:07:46 +0200325vhost_user=""
Bradd41a75a2011-07-26 23:11:26 -0400326kvm="no"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100327hax="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400328rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100329gprof="no"
330debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100331debug="no"
John Snowb553a042015-11-03 15:43:42 -0500332fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100333strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200334tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100335bigendian="no"
336mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000337gcov="no"
338gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100339EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800340DSOSUF=".so"
341LDFLAGS_SHARED="-shared"
342modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100343prefix="/usr/local"
344mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300345datadir="\${prefix}/share"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200346firmwarepath="\${prefix}/share/qemu-firmware"
Eduardo Habkost850da182012-04-18 16:55:38 -0300347qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100348bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300349libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400350libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200351includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100352sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300353local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100354confsuffix="/qemu"
355slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100356oss_lib=""
357bsd="no"
358linux="no"
359solaris="no"
360profiler="no"
361cocoa="no"
362softmmu="yes"
363linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100364bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100365blobs="yes"
366pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200367pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200368qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300369trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100370trace_file="trace"
371spice=""
372rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200373smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100374libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200375usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100376opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100377opengl_dmabuf="no"
Richard Henderson5dd89902017-07-18 18:40:18 -1000378cpuid_h="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800379avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300380zlib="yes"
Richard Henderson8ca80762017-09-14 09:41:12 -0700381capstone=""
Stefan Weilb25c9df2014-04-29 08:21:16 +0200382lzo=""
383snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100384bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400385guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400386guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500387guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300388guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400389vss_win32_sdk=""
390win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100391want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100392libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100393libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100394coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200395coroutine_pool=""
Peter Lieven7d992e42016-09-27 11:58:45 +0200396debug_stack_usage="no"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -0400397crypto_afalg="no"
Eduardo Otubof7945732012-08-14 18:44:05 -0300398seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530399glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400400glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530401glusterfs_discard="no"
Niels de Vosdf3a4292017-05-28 12:01:14 +0530402glusterfs_fallocate="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530403glusterfs_zerofill="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600404gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200405gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200406gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100407tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100408gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900409gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100410nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100411nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100412gcrypt=""
Longpeng(Mike)1f923c72016-12-13 18:42:55 +0800413gcrypt_hmac="no"
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100414gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100415vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200416virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400417tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100418libssh2=""
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +0100419live_block_migration="yes"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800420numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800421tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200422jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800423replication="yes"
Ashish Mittalda92c3f2017-04-03 20:48:08 -0700424vxhs=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100425
Peter Maydell898be3e2017-03-21 14:31:57 +0000426supported_cpu="no"
427supported_os="no"
Peter Maydellfb59dab2017-03-28 14:01:52 +0100428bogus_os="no"
Yang Zhong5a22ab72017-12-20 21:16:46 +0800429malloc_trim=""
Peter Maydell898be3e2017-03-21 14:31:57 +0000430
aliguoriac0df512008-12-29 17:14:15 +0000431# parse CC options first
432for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200433 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000434 case "$opt" in
435 --cross-prefix=*) cross_prefix="$optarg"
436 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100437 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000438 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400439 --cxx=*) CXX="$optarg"
440 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100441 --source-path=*) source_path="$optarg"
442 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200443 --cpu=*) cpu="$optarg"
444 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100445 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100446 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200447 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100448 --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg"
449 EXTRA_CXXFLAGS="$optarg"
450 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100451 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100452 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200453 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100454 --enable-debug-info) debug_info="yes"
455 ;;
456 --disable-debug-info) debug_info="no"
457 ;;
aliguoriac0df512008-12-29 17:14:15 +0000458 esac
459done
aliguoriac0df512008-12-29 17:14:15 +0000460# OS specific
461# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100462# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000463
Peter Maydelle49d0212012-12-07 15:39:13 +0000464# Preferred compiler:
465# ${CC} (if set)
466# ${cross_prefix}gcc (if cross-prefix specified)
467# system compiler
468if test -z "${CC}${cross_prefix}"; then
469 cc="$host_cc"
470else
471 cc="${CC-${cross_prefix}gcc}"
472fi
473
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400474if test -z "${CXX}${cross_prefix}"; then
475 cxx="c++"
476else
477 cxx="${CXX-${cross_prefix}g++}"
478fi
479
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500480ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700481as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700482ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000483cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500484objcopy="${OBJCOPY-${cross_prefix}objcopy}"
485ld="${LD-${cross_prefix}ld}"
Alistair Francis9f81aeb2017-11-07 17:10:46 -0800486ranlib="${RANLIB-${cross_prefix}ranlib}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200487nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500488strip="${STRIP-${cross_prefix}strip}"
489windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300490pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
491query_pkg_config() {
492 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
493}
494pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500495sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000496sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000497
Peter Maydell45d285a2013-10-21 21:03:06 +0100498# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
499ARFLAGS="${ARFLAGS-rv}"
500
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200501# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100502# We use -fwrapv to tell the compiler that we require a C dialect where
503# left shift of signed integers is well defined and has the expected
504# 2s-complement style results. (Both clang and gcc agree that it
505# provides these semantics.)
506QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400507QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100508QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200509QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Yang Zhong244f1442017-06-02 14:06:45 +0800510QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100511if test "$debug_info" = "yes"; then
512 CFLAGS="-g $CFLAGS"
513 LDFLAGS="-g $LDFLAGS"
514fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200515
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100516# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200517source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100518
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300519# running configure in the source tree?
520# we know that's the case if configure is there.
521if test -f "./configure"; then
522 pwd_is_source_path="y"
523else
524 pwd_is_source_path="n"
525fi
526
aliguoriac0df512008-12-29 17:14:15 +0000527check_define() {
528cat > $TMPC <<EOF
529#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000530#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000531#endif
532int main(void) { return 0; }
533EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200534 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000535}
536
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200537check_include() {
538cat > $TMPC <<EOF
539#include <$1>
540int main(void) { return 0; }
541EOF
542 compile_object
543}
544
John Snow93b25862015-03-25 18:57:37 -0400545write_c_skeleton() {
546 cat > $TMPC <<EOF
547int main(void) { return 0; }
548EOF
549}
550
Peter Maydellbbea4052012-08-14 15:35:34 +0100551if check_define __linux__ ; then
552 targetos="Linux"
553elif check_define _WIN32 ; then
554 targetos='MINGW32'
555elif check_define __OpenBSD__ ; then
556 targetos='OpenBSD'
557elif check_define __sun__ ; then
558 targetos='SunOS'
559elif check_define __HAIKU__ ; then
560 targetos='Haiku'
Peter Maydell951fedf2017-07-13 16:15:32 +0100561elif check_define __FreeBSD__ ; then
562 targetos='FreeBSD'
563elif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then
564 targetos='GNU/kFreeBSD'
565elif check_define __DragonFly__ ; then
566 targetos='DragonFly'
567elif check_define __NetBSD__; then
568 targetos='NetBSD'
569elif check_define __APPLE__; then
570 targetos='Darwin'
Peter Maydellbbea4052012-08-14 15:35:34 +0100571else
Peter Maydell951fedf2017-07-13 16:15:32 +0100572 # This is a fatal error, but don't report it yet, because we
573 # might be going to just print the --help text, or it might
574 # be the result of a missing compiler.
575 targetos='bogus'
576 bogus_os='yes'
Peter Maydellbbea4052012-08-14 15:35:34 +0100577fi
578
579# Some host OSes need non-standard checks for which CPU to use.
580# Note that these checks are broken for cross-compilation: if you're
581# cross-compiling to one of these OSes then you'll need to specify
582# the correct CPU with the --cpu option.
583case $targetos in
584Darwin)
585 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
586 # run 64-bit userspace code.
587 # If the user didn't specify a CPU explicitly and the kernel says this is
588 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
589 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
590 cpu="x86_64"
591 fi
592 ;;
593SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200594 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100595 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
596 cpu="x86_64"
597 fi
598esac
599
Juan Quintela2ff6b912009-08-03 14:45:55 +0200600if test ! -z "$cpu" ; then
601 # command line argument
602 :
603elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000604 cpu="i386"
605elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700606 if check_define __ILP32__ ; then
607 cpu="x32"
608 else
609 cpu="x86_64"
610 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000611elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000612 if check_define __arch64__ ; then
613 cpu="sparc64"
614 else
615 cpu="sparc"
616 fi
malcfdf7ed92009-01-14 18:39:52 +0000617elif check_define _ARCH_PPC ; then
618 if check_define _ARCH_PPC64 ; then
619 cpu="ppc64"
620 else
621 cpu="ppc"
622 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200623elif check_define __mips__ ; then
624 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200625elif check_define __ia64__ ; then
626 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200627elif check_define __s390__ ; then
628 if check_define __s390x__ ; then
629 cpu="s390x"
630 else
631 cpu="s390"
632 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100633elif check_define __arm__ ; then
634 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100635elif check_define __aarch64__ ; then
636 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000637else
Stefan Weil89138852016-05-16 15:10:20 +0200638 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000639fi
640
Peter Maydell359bc952011-12-24 13:07:25 +0000641ARCH=
642# Normalise host CPU name and set ARCH.
643# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000644case "$cpu" in
Peter Maydell6499fd12017-03-28 11:58:38 +0100645 ppc|ppc64|s390|s390x|sparc64|x32)
Peter Maydell898be3e2017-03-21 14:31:57 +0000646 cpu="$cpu"
647 supported_cpu="yes"
648 ;;
bellard7d132992003-03-06 23:23:54 +0000649 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000650 cpu="i386"
Peter Maydell898be3e2017-03-21 14:31:57 +0000651 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000652 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000653 x86_64|amd64)
654 cpu="x86_64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000655 supported_cpu="yes"
aurel32aaa5fa12008-04-11 22:04:22 +0000656 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100657 armv*b|armv*l|arm)
658 cpu="arm"
Peter Maydell898be3e2017-03-21 14:31:57 +0000659 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000660 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100661 aarch64)
662 cpu="aarch64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000663 supported_cpu="yes"
Claudio Fontana1f080312013-06-12 16:20:23 +0100664 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200665 mips*)
666 cpu="mips"
Peter Maydell898be3e2017-03-21 14:31:57 +0000667 supported_cpu="yes"
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200668 ;;
blueswir131422552007-04-16 18:27:06 +0000669 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000670 cpu="sparc"
Peter Maydell6499fd12017-03-28 11:58:38 +0100671 supported_cpu="yes"
bellardae228532003-05-13 18:59:59 +0000672 ;;
bellard7d132992003-03-06 23:23:54 +0000673 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000674 # This will result in either an error or falling back to TCI later
675 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000676 ;;
677esac
Peter Maydell359bc952011-12-24 13:07:25 +0000678if test -z "$ARCH"; then
679 ARCH="$cpu"
680fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200681
bellard7d132992003-03-06 23:23:54 +0000682# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200683
Stacey Sonadfc3e92014-06-08 09:57:22 -0700684# host *BSD for user mode
685HOST_VARIANT_DIR=""
686
bellard7d132992003-03-06 23:23:54 +0000687case $targetos in
bellard67b915a2004-03-31 23:37:16 +0000688MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200689 mingw32="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100690 hax="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200691 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200692 if check_include dsound.h; then
693 audio_drv_list="dsound"
694 else
695 audio_drv_list=""
696 fi
Peter Maydell898be3e2017-03-21 14:31:57 +0000697 supported_os="yes"
bellard67b915a2004-03-31 23:37:16 +0000698;;
ths5c40d2b2007-06-23 16:03:36 +0000699GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100700 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200701 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200702 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000703;;
bellard7d3505c2004-05-12 19:32:15 +0000704FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200705 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100706 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200707 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200708 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100709 # needed for kinfo_getvmmap(3) in libutil.h
710 LIBS="-lutil $LIBS"
Ed Mastea7764f12016-11-21 20:32:45 -0500711 # needed for kinfo_getproc
712 libs_qga="-lutil $libs_qga"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100713 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700714 HOST_VARIANT_DIR="freebsd"
Peter Maydell898be3e2017-03-21 14:31:57 +0000715 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000716;;
blueswir1c5e97232009-03-07 20:06:23 +0000717DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200718 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100719 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200720 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200721 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700722 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000723;;
bellard7d3505c2004-05-12 19:32:15 +0000724NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200725 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100726 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200727 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200728 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200729 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700730 HOST_VARIANT_DIR="netbsd"
Kamil Rytarowski3c2bdbc2017-05-13 04:21:43 +0200731 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000732;;
733OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200734 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100735 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400736 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200737 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700738 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000739;;
bellard83fb7ad2004-07-05 21:25:26 +0000740Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200741 bsd="yes"
742 darwin="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100743 hax="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800744 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200745 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200746 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200747 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200748 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200749 cocoa="yes"
750 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200751 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200752 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200753 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100754 # Disable attempts to use ObjectiveC features in os/object.h since they
755 # won't work when we're compiling with gcc as a C compiler.
756 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700757 HOST_VARIANT_DIR="darwin"
Peter Maydell898be3e2017-03-21 14:31:57 +0000758 supported_os="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000759;;
bellardec530c82006-04-25 22:36:06 +0000760SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200761 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100762 make="${MAKE-gmake}"
763 install="${INSTALL-ginstall}"
Brade2d88302011-09-02 16:53:28 -0400764 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200765 if test -f /usr/include/sys/soundcard.h ; then
766 audio_drv_list="oss"
767 fi
768 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000769# needed for CMSG_ macros in sys/socket.h
770 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
771# needed for TIOCWIN* defines in termios.h
772 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200773 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200774 solarisnetlibs="-lsocket -lnsl -lresolv"
775 LIBS="$solarisnetlibs $LIBS"
776 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000777;;
Andreas Färber179cf402010-09-20 00:50:43 +0200778Haiku)
779 haiku="yes"
780 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
781 LIBS="-lposix_error_mapper -lnetwork $LIBS"
782;;
Peter Maydell898be3e2017-03-21 14:31:57 +0000783Linux)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200784 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200785 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200786 linux="yes"
787 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200788 kvm="yes"
789 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000790 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100791 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000792 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
Peter Maydell898be3e2017-03-21 14:31:57 +0000793 supported_os="yes"
794;;
bellard7d132992003-03-06 23:23:54 +0000795esac
796
bellard7d3505c2004-05-12 19:32:15 +0000797if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000798 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200799 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000800 fi
bellard7d3505c2004-05-12 19:32:15 +0000801fi
802
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100803: ${make=${MAKE-make}}
804: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100805: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400806: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100807
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100808# Default objcc to clang if available, otherwise use CC
809if has clang; then
810 objcc=clang
811else
812 objcc="$cc"
813fi
814
Juan Quintela3457a3f2009-08-03 14:46:07 +0200815if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200816 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800817 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200818 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100819 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
820 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100821 # MinGW needs -mthreads for TLS and macro _MT.
822 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100823 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400824 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100825 if compile_prog "" "-liberty" ; then
826 LIBS="-liberty $LIBS"
827 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200828 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200829 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300830 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300831 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200832 bindir="\${prefix}"
833 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200834 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200835 confsuffix=""
Bishara AbuHattoum105fad62017-08-22 16:55:04 +0300836 libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200837fi
838
Anthony Liguori487fefd2009-06-11 13:28:25 -0500839werror=""
bellard85aa5182007-11-11 20:17:03 +0000840
bellard7d132992003-03-06 23:23:54 +0000841for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200842 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000843 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000844 --help|-h) show_help=yes
845 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400846 --version|-V) exec cat $source_path/VERSION
847 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000848 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000849 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000850 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000851 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100852 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000853 ;;
aliguoriac0df512008-12-29 17:14:15 +0000854 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000855 ;;
aliguoriac0df512008-12-29 17:14:15 +0000856 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000857 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000858 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000859 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400860 --cxx=*)
861 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200862 --iasl=*) iasl="$optarg"
863 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100864 --objcc=*) objcc="$optarg"
865 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000866 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000867 ;;
pbrook6a882642006-04-17 13:57:12 +0000868 --install=*) install="$optarg"
869 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000870 --python=*) python="$optarg"
871 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000872 --gcov=*) gcov_tool="$optarg"
873 ;;
Brade2d88302011-09-02 16:53:28 -0400874 --smbd=*) smbd="$optarg"
875 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200876 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000877 ;;
Bruno Dominguez11cde1c2017-06-06 14:07:47 +0100878 --extra-cxxflags=*)
879 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200880 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000881 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100882 --enable-debug-info)
883 ;;
884 --disable-debug-info)
885 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800886 --enable-modules)
887 modules="yes"
888 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000889 --disable-modules)
890 modules="no"
891 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200892 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000893 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000894 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000895 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200896 --enable-trace-backends=*) trace_backends="$optarg"
897 ;;
898 # XXX: backwards compatibility
899 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100900 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100901 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100902 ;;
bellard7d132992003-03-06 23:23:54 +0000903 --enable-gprof) gprof="yes"
904 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000905 --enable-gcov) gcov="yes"
906 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100907 --static)
908 static="yes"
909 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300910 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000911 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200912 --mandir=*) mandir="$optarg"
913 ;;
914 --bindir=*) bindir="$optarg"
915 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300916 --libdir=*) libdir="$optarg"
917 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400918 --libexecdir=*) libexecdir="$optarg"
919 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200920 --includedir=*) includedir="$optarg"
921 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300922 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200923 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300924 --with-confsuffix=*) confsuffix="$optarg"
925 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300926 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200927 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100928 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600929 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300930 --localstatedir=*) local_statedir="$optarg"
931 ;;
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +0200932 --firmwarepath=*) firmwarepath="$optarg"
933 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300934 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400935 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
936 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
937 # These switches are silently ignored, for compatibility with
938 # autoconf-generated configure scripts. This allows QEMU's
939 # configure to be used by RPM and similar macros that set
940 # lots of directory switches by default.
941 ;;
bellard97a847b2003-08-10 21:36:04 +0000942 --disable-sdl) sdl="no"
943 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200944 --enable-sdl) sdl="yes"
945 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000946 --with-sdlabi=*) sdlabi="$optarg"
947 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200948 --disable-qom-cast-debug) qom_cast_debug="no"
949 ;;
950 --enable-qom-cast-debug) qom_cast_debug="yes"
951 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530952 --disable-virtfs) virtfs="no"
953 ;;
954 --enable-virtfs) virtfs="yes"
955 ;;
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +0200956 --disable-mpath) mpath="no"
957 ;;
958 --enable-mpath) mpath="yes"
959 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100960 --disable-vnc) vnc="no"
961 ;;
962 --enable-vnc) vnc="yes"
963 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000964 --oss-lib=*) oss_lib="$optarg"
965 ;;
malc0c58ac12008-06-25 21:04:05 +0000966 --audio-drv-list=*) audio_drv_list="$optarg"
967 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200968 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800969 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200970 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100971 ;;
aurel32f8393942009-04-13 18:45:38 +0000972 --enable-debug-tcg) debug_tcg="yes"
973 ;;
974 --disable-debug-tcg) debug_tcg="no"
975 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100976 --enable-debug)
977 # Enable debugging options that aren't excessively noisy
978 debug_tcg="yes"
979 debug="yes"
980 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500981 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100982 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000983 --enable-sparse) sparse="yes"
984 ;;
985 --disable-sparse) sparse="no"
986 ;;
aliguori1625af82009-04-05 17:41:02 +0000987 --disable-strip) strip_opt="no"
988 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000989 --disable-vnc-sasl) vnc_sasl="no"
990 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200991 --enable-vnc-sasl) vnc_sasl="yes"
992 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200993 --disable-vnc-jpeg) vnc_jpeg="no"
994 ;;
995 --enable-vnc-jpeg) vnc_jpeg="yes"
996 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200997 --disable-vnc-png) vnc_png="no"
998 ;;
999 --enable-vnc-png) vnc_png="yes"
1000 ;;
bellard443f1372004-06-04 11:13:20 +00001001 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +00001002 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +00001003 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +00001004 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +02001005 --enable-vde) vde="yes"
1006 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +01001007 --disable-netmap) netmap="no"
1008 ;;
1009 --enable-netmap) netmap="yes"
1010 ;;
aliguorie37630c2009-04-22 15:19:10 +00001011 --disable-xen) xen="no"
1012 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +02001013 --enable-xen) xen="yes"
1014 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +00001015 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
1016 ;;
1017 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
1018 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +00001019 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
1020 ;;
1021 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
1022 ;;
aurel322e4d9fb2008-04-08 06:01:02 +00001023 --disable-brlapi) brlapi="no"
1024 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +02001025 --enable-brlapi) brlapi="yes"
1026 ;;
balrogfb599c92008-09-28 23:49:55 +00001027 --disable-bluez) bluez="no"
1028 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +02001029 --enable-bluez) bluez="yes"
1030 ;;
aliguori7ba1e612008-11-05 16:04:33 +00001031 --disable-kvm) kvm="no"
1032 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +02001033 --enable-kvm) kvm="yes"
1034 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001035 --disable-hax) hax="no"
zhanghailiang180fb752016-10-27 14:43:08 +08001036 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001037 --enable-hax) hax="yes"
zhanghailiang180fb752016-10-27 14:43:08 +08001038 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +02001039 --disable-tcg-interpreter) tcg_interpreter="no"
1040 ;;
1041 --enable-tcg-interpreter) tcg_interpreter="yes"
1042 ;;
Corey Bryant47e98652012-01-26 09:42:26 -05001043 --disable-cap-ng) cap_ng="no"
1044 ;;
1045 --enable-cap-ng) cap_ng="yes"
1046 ;;
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02001047 --disable-tcg) tcg="no"
1048 ;;
1049 --enable-tcg) tcg="yes"
1050 ;;
Yang Zhong5a22ab72017-12-20 21:16:46 +08001051 --disable-malloc-trim) malloc_trim="no"
1052 ;;
1053 --enable-malloc-trim) malloc_trim="yes"
1054 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01001055 --disable-spice) spice="no"
1056 ;;
1057 --enable-spice) spice="yes"
1058 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11001059 --disable-libiscsi) libiscsi="no"
1060 ;;
1061 --enable-libiscsi) libiscsi="yes"
1062 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +01001063 --disable-libnfs) libnfs="no"
1064 ;;
1065 --enable-libnfs) libnfs="yes"
1066 ;;
bellard05c2a3e2006-02-08 22:39:17 +00001067 --enable-profiler) profiler="yes"
1068 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +04001069 --disable-cocoa) cocoa="no"
1070 ;;
malcc2de5c92008-06-28 19:13:06 +00001071 --enable-cocoa)
1072 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +02001073 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +00001074 ;;
pbrookcad25d62006-03-19 16:31:11 +00001075 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001076 ;;
pbrookcad25d62006-03-19 16:31:11 +00001077 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +00001078 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -10001079 --disable-user)
1080 linux_user="no" ;
1081 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -10001082 ;;
1083 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +00001084 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +00001085 ;;
ths831b7822007-01-18 20:06:33 +00001086 --enable-linux-user) linux_user="yes"
1087 ;;
blueswir184778502008-10-26 20:33:16 +00001088 --disable-bsd-user) bsd_user="no"
1089 ;;
1090 --enable-bsd-user) bsd_user="yes"
1091 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001092 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001093 ;;
Avi Kivity40d64442011-11-15 20:12:17 +02001094 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +03001095 ;;
bellard85aa5182007-11-11 20:17:03 +00001096 --enable-werror) werror="yes"
1097 ;;
1098 --disable-werror) werror="no"
1099 ;;
Steven Noonan63678e12014-03-28 17:19:02 +01001100 --enable-stack-protector) stack_protector="yes"
1101 ;;
1102 --disable-stack-protector) stack_protector="no"
1103 ;;
balrog4d3b6f62008-02-10 16:33:14 +00001104 --disable-curses) curses="no"
1105 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +02001106 --enable-curses) curses="yes"
1107 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001108 --disable-curl) curl="no"
1109 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001110 --enable-curl) curl="yes"
1111 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001112 --disable-fdt) fdt="no"
1113 ;;
1114 --enable-fdt) fdt="yes"
1115 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001116 --disable-linux-aio) linux_aio="no"
1117 ;;
1118 --enable-linux-aio) linux_aio="yes"
1119 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001120 --disable-attr) attr="no"
1121 ;;
1122 --enable-attr) attr="yes"
1123 ;;
ths77755342008-11-27 15:45:16 +00001124 --disable-blobs) blobs="no"
1125 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001126 --with-pkgversion=*) pkgversion=" ($optarg)"
1127 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001128 --with-coroutine=*) coroutine="$optarg"
1129 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001130 --disable-coroutine-pool) coroutine_pool="no"
1131 ;;
1132 --enable-coroutine-pool) coroutine_pool="yes"
1133 ;;
Peter Lieven7d992e42016-09-27 11:58:45 +02001134 --enable-debug-stack-usage) debug_stack_usage="yes"
1135 ;;
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001136 --enable-crypto-afalg) crypto_afalg="yes"
1137 ;;
1138 --disable-crypto-afalg) crypto_afalg="no"
1139 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001140 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001141 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001142 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001143 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001144 --disable-vhost-net) vhost_net="no"
1145 ;;
1146 --enable-vhost-net) vhost_net="yes"
1147 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001148 --disable-vhost-scsi) vhost_scsi="no"
1149 ;;
1150 --enable-vhost-scsi) vhost_scsi="yes"
1151 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001152 --disable-vhost-vsock) vhost_vsock="no"
1153 ;;
1154 --enable-vhost-vsock) vhost_vsock="yes"
1155 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001156 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001157 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001158 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001159 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001160 --disable-rbd) rbd="no"
1161 ;;
1162 --enable-rbd) rbd="yes"
1163 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001164 --disable-xfsctl) xfs="no"
1165 ;;
1166 --enable-xfsctl) xfs="yes"
1167 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001168 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001169 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001170 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001171 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001172 --disable-libusb) libusb="no"
1173 ;;
1174 --enable-libusb) libusb="yes"
1175 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001176 --disable-usb-redir) usb_redir="no"
1177 ;;
1178 --enable-usb-redir) usb_redir="yes"
1179 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001180 --disable-zlib-test) zlib="no"
1181 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001182 --disable-lzo) lzo="no"
1183 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001184 --enable-lzo) lzo="yes"
1185 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001186 --disable-snappy) snappy="no"
1187 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001188 --enable-snappy) snappy="yes"
1189 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001190 --disable-bzip2) bzip2="no"
1191 ;;
1192 --enable-bzip2) bzip2="yes"
1193 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001194 --enable-guest-agent) guest_agent="yes"
1195 ;;
1196 --disable-guest-agent) guest_agent="no"
1197 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001198 --enable-guest-agent-msi) guest_agent_msi="yes"
1199 ;;
1200 --disable-guest-agent-msi) guest_agent_msi="no"
1201 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001202 --with-vss-sdk) vss_win32_sdk=""
1203 ;;
1204 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1205 ;;
1206 --without-vss-sdk) vss_win32_sdk="no"
1207 ;;
1208 --with-win-sdk) win_sdk=""
1209 ;;
1210 --with-win-sdk=*) win_sdk="$optarg"
1211 ;;
1212 --without-win-sdk) win_sdk="no"
1213 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001214 --enable-tools) want_tools="yes"
1215 ;;
1216 --disable-tools) want_tools="no"
1217 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001218 --enable-seccomp) seccomp="yes"
1219 ;;
1220 --disable-seccomp) seccomp="no"
1221 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301222 --disable-glusterfs) glusterfs="no"
1223 ;;
1224 --enable-glusterfs) glusterfs="yes"
1225 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001226 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1227 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001228 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001229 --enable-vhdx|--disable-vhdx)
1230 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1231 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001232 --enable-uuid|--disable-uuid)
1233 echo "$0: $opt is obsolete, UUID support is always built" >&2
1234 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001235 --disable-gtk) gtk="no"
1236 ;;
1237 --enable-gtk) gtk="yes"
1238 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001239 --tls-priority=*) tls_priority="$optarg"
1240 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001241 --disable-gnutls) gnutls="no"
1242 ;;
1243 --enable-gnutls) gnutls="yes"
1244 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001245 --disable-nettle) nettle="no"
1246 ;;
1247 --enable-nettle) nettle="yes"
1248 ;;
1249 --disable-gcrypt) gcrypt="no"
1250 ;;
1251 --enable-gcrypt) gcrypt="yes"
1252 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001253 --enable-rdma) rdma="yes"
1254 ;;
1255 --disable-rdma) rdma="no"
1256 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001257 --with-gtkabi=*) gtkabi="$optarg"
1258 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001259 --disable-vte) vte="no"
1260 ;;
1261 --enable-vte) vte="yes"
1262 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001263 --disable-virglrenderer) virglrenderer="no"
1264 ;;
1265 --enable-virglrenderer) virglrenderer="yes"
1266 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001267 --disable-tpm) tpm="no"
1268 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001269 --enable-tpm) tpm="yes"
1270 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001271 --disable-libssh2) libssh2="no"
1272 ;;
1273 --enable-libssh2) libssh2="yes"
1274 ;;
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001275 --disable-live-block-migration) live_block_migration="no"
1276 ;;
1277 --enable-live-block-migration) live_block_migration="yes"
1278 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001279 --disable-numa) numa="no"
1280 ;;
1281 --enable-numa) numa="yes"
1282 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001283 --disable-tcmalloc) tcmalloc="no"
1284 ;;
1285 --enable-tcmalloc) tcmalloc="yes"
1286 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001287 --disable-jemalloc) jemalloc="no"
1288 ;;
1289 --enable-jemalloc) jemalloc="yes"
1290 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001291 --disable-replication) replication="no"
1292 ;;
1293 --enable-replication) replication="yes"
1294 ;;
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001295 --disable-vxhs) vxhs="no"
1296 ;;
1297 --enable-vxhs) vxhs="yes"
1298 ;;
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001299 --disable-vhost-user) vhost_user="no"
1300 ;;
1301 --enable-vhost-user)
1302 vhost_user="yes"
1303 if test "$mingw32" = "yes"; then
1304 error_exit "vhost-user isn't available on win32"
1305 fi
1306 ;;
Richard Henderson8ca80762017-09-14 09:41:12 -07001307 --disable-capstone) capstone="no"
1308 ;;
1309 --enable-capstone) capstone="yes"
1310 ;;
Richard Hendersone219c492017-09-28 09:01:23 -07001311 --enable-capstone=git) capstone="git"
1312 ;;
1313 --enable-capstone=system) capstone="system"
1314 ;;
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01001315 --with-git=*) git="$optarg"
1316 ;;
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01001317 --enable-git-update) git_update=yes
1318 ;;
1319 --disable-git-update) git_update=no
1320 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001321 *)
1322 echo "ERROR: unknown option $opt"
1323 echo "Try '$0 --help' for more information"
1324 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001325 ;;
bellard7d132992003-03-06 23:23:54 +00001326 esac
1327done
1328
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001329if test "$vhost_user" = ""; then
1330 if test "$mingw32" = "yes"; then
1331 vhost_user="no"
1332 else
1333 vhost_user="yes"
1334 fi
1335fi
1336
bellard40293e52008-01-31 11:32:10 +00001337case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001338 ppc)
1339 CPU_CFLAGS="-m32"
1340 LDFLAGS="-m32 $LDFLAGS"
1341 ;;
1342 ppc64)
1343 CPU_CFLAGS="-m64"
1344 LDFLAGS="-m64 $LDFLAGS"
1345 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001346 sparc)
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001347 CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc"
1348 LDFLAGS="-m32 -mv8plus $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001349 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001350 sparc64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001351 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
Richard Hendersonf1079bb2017-04-26 10:39:08 -07001352 LDFLAGS="-m64 $LDFLAGS"
blueswir131422552007-04-16 18:27:06 +00001353 ;;
ths76d83bd2007-11-18 21:22:10 +00001354 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001355 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001356 LDFLAGS="-m31 $LDFLAGS"
1357 ;;
1358 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001359 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001360 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001361 ;;
bellard40293e52008-01-31 11:32:10 +00001362 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001363 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001364 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001365 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001366 ;;
1367 x86_64)
Richard Henderson7ebee432016-06-29 21:10:59 -07001368 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1369 # If we truly care, we should simply detect this case at
1370 # runtime and generate the fallback to serial emulation.
1371 CPU_CFLAGS="-m64 -mcx16"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001372 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001373 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001374 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001375 x32)
1376 CPU_CFLAGS="-mx32"
1377 LDFLAGS="-mx32 $LDFLAGS"
1378 cc_i386='$(CC) -m32'
1379 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001380 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001381esac
1382
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001383QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1384EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1385
Peter Maydellaffc88c2016-06-13 11:32:24 +01001386# For user-mode emulation the host arch has to be one we explicitly
1387# support, even if we're using TCI.
1388if [ "$ARCH" = "unknown" ]; then
1389 bsd_user="no"
1390 linux_user="no"
1391fi
1392
Peter Maydell60e0df22011-05-03 14:50:13 +01001393default_target_list=""
1394
Peter Maydell6e92f822013-05-20 16:16:15 +01001395mak_wilds=""
1396
1397if [ "$softmmu" = "yes" ]; then
1398 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001399fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001400if [ "$linux_user" = "yes" ]; then
1401 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001402fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001403if [ "$bsd_user" = "yes" ]; then
1404 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001405fi
1406
Peter Maydell6e92f822013-05-20 16:16:15 +01001407for config in $mak_wilds; do
1408 default_target_list="${default_target_list} $(basename "$config" .mak)"
1409done
1410
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001411# Enumerate public trace backends for --help output
Greg Kurz64a60472017-04-26 15:36:07 +02001412trace_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 +01001413
pbrookaf5db582006-04-08 14:26:41 +00001414if test x"$show_help" = x"yes" ; then
1415cat << EOF
1416
1417Usage: configure [options]
1418Options: [defaults in brackets after descriptions]
1419
Stefan Weil08fb77e2013-12-18 22:09:39 +01001420Standard options:
1421 --help print this message
1422 --prefix=PREFIX install in PREFIX [$prefix]
1423 --interp-prefix=PREFIX where to find shared libraries, etc.
1424 use %M for cpu name [$interp_prefix]
1425 --target-list=LIST set target list (default: build everything)
1426$(echo Available targets: $default_target_list | \
1427 fold -s -w 53 | sed -e 's/^/ /')
1428
1429Advanced options (experts only):
1430 --source-path=PATH path of source code [$source_path]
1431 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1432 --cc=CC use C compiler CC [$cc]
1433 --iasl=IASL use ACPI compiler IASL [$iasl]
1434 --host-cc=CC use C compiler CC [$host_cc] for code run at
1435 build time
1436 --cxx=CXX use C++ compiler CXX [$cxx]
1437 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1438 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01001439 --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS
Stefan Weil08fb77e2013-12-18 22:09:39 +01001440 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1441 --make=MAKE use specified make [$make]
1442 --install=INSTALL use specified install [$install]
1443 --python=PYTHON use specified python [$python]
1444 --smbd=SMBD use specified smbd [$smbd]
1445 --static enable static build [$static]
1446 --mandir=PATH install man pages in PATH
1447 --datadir=PATH install firmware in PATH$confsuffix
1448 --docdir=PATH install documentation in PATH$confsuffix
1449 --bindir=PATH install binaries in PATH
1450 --libdir=PATH install libraries in PATH
1451 --sysconfdir=PATH install config in PATH$confsuffix
1452 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02001453 --firmwarepath=PATH search PATH for firmware files
Fam Zhenge26110c2014-02-10 14:48:57 +08001454 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001455 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001456 --disable-strip disable stripping binaries
1457 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001458 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001459 --audio-drv-list=LIST set audio drivers list:
1460 Available drivers: $audio_possible_drivers
1461 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1462 --block-drv-rw-whitelist=L
1463 set block driver read-write whitelist
1464 (affects only QEMU, not qemu-img)
1465 --block-drv-ro-whitelist=L
1466 set block driver read-only whitelist
1467 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001468 --enable-trace-backends=B Set trace backend
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001469 Available backends: $trace_backend_list
Stefan Weil08fb77e2013-12-18 22:09:39 +01001470 --with-trace-file=NAME Full PATH,NAME of file to store traces
1471 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001472 --disable-slirp disable SLIRP userspace network connectivity
1473 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
Yang Zhong5a22ab72017-12-20 21:16:46 +08001474 --enable-malloc-trim enable libc malloc_trim() for memory optimization
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001475 --oss-lib path to OSS library
1476 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001477 --with-coroutine=BACKEND coroutine backend. Supported options:
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01001478 ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001479 --enable-gcov enable test coverage analysis with gcov
1480 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001481 --disable-blobs disable installing provided firmware blobs
1482 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1483 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001484 --tls-priority default TLS protocol/cipher priority string
Lin Mac12d66a2017-03-10 18:14:05 +08001485 --enable-gprof QEMU profiling with gprof
1486 --enable-profiler profiler support
1487 --enable-xen-pv-domain-build
1488 xen pv domain builder
1489 --enable-debug-stack-usage
1490 track the maximum stack usage of stacks created by qemu_alloc_stack
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001491
1492Optional features, enabled with --enable-FEATURE and
1493disabled with --disable-FEATURE, default is enabled if available:
1494
1495 system all system emulation targets
1496 user supported user emulation targets
1497 linux-user all linux usermode emulation targets
1498 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001499 docs build documentation
1500 guest-agent build the QEMU Guest Agent
1501 guest-agent-msi build guest agent Windows MSI installation package
1502 pie Position Independent Executables
1503 modules modules support
1504 debug-tcg TCG debugging (default is disabled)
1505 debug-info debugging information
1506 sparse sparse checker
1507
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001508 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001509 nettle nettle cryptography support
1510 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001511 sdl SDL UI
1512 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1513 gtk gtk UI
1514 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1515 vte vte support for the gtk UI
1516 curses curses UI
1517 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001518 vnc-sasl SASL encryption for VNC server
1519 vnc-jpeg JPEG lossy compression for VNC server
1520 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001521 cocoa Cocoa UI (Mac OS X only)
1522 virtfs VirtFS
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02001523 mpath Multipath persistent reservation passthrough
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001524 xen xen backend driver support
1525 xen-pci-passthrough
1526 brlapi BrlAPI (Braile)
1527 curl curl connectivity
1528 fdt fdt device tree
1529 bluez bluez stack connectivity
1530 kvm KVM acceleration support
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001531 hax HAX acceleration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001532 rdma RDMA-based migration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001533 vde support for vde network
1534 netmap support for netmap network
1535 linux-aio Linux AIO support
1536 cap-ng libcap-ng support
1537 attr attr and xattr support
1538 vhost-net vhost-net acceleration support
1539 spice spice
1540 rbd rados block device (rbd)
1541 libiscsi iscsi support
1542 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001543 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001544 libusb libusb (for usb passthrough)
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01001545 live-block-migration Block migration in the main migration stream
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001546 usb-redir usb network redirection support
1547 lzo support of lzo compression library
1548 snappy support of snappy compression library
1549 bzip2 support of bzip2 compression library
1550 (for reading bzip2-compressed dmg images)
1551 seccomp seccomp support
1552 coroutine-pool coroutine freelist (better performance)
1553 glusterfs GlusterFS backend
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001554 tpm TPM support
1555 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001556 numa libnuma support
1557 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001558 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001559 replication replication support
Lin Mac12d66a2017-03-10 18:14:05 +08001560 vhost-vsock virtio sockets device support
1561 opengl opengl support
1562 virglrenderer virgl rendering support
1563 xfsctl xfsctl support
1564 qom-cast-debug cast debugging support
1565 tools build qemu-io, qemu-nbd and qemu-image tools
Ashish Mittalda92c3f2017-04-03 20:48:08 -07001566 vxhs Veritas HyperScale vDisk backend support
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04001567 crypto-afalg Linux AF_ALG crypto backend driver
Marc-André Lureaue6a74862017-08-03 11:07:46 +02001568 vhost-user vhost-user support
Richard Henderson8ca80762017-09-14 09:41:12 -07001569 capstone capstone disassembler support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001570
1571NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001572EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001573exit 0
pbrookaf5db582006-04-08 14:26:41 +00001574fi
1575
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001576if ! has $python; then
1577 error_exit "Python not found. Use --python=/path/to/python"
1578fi
1579
1580# Note that if the Python conditional here evaluates True we will exit
1581# with status 1 which is a shell 'false' value.
1582if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1583 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1584 "Note that Python 3 or later is not yet supported." \
1585 "Use --python=/path/to/python to specify a supported Python."
1586fi
1587
1588# Suppress writing compiled files
1589python="$python -B"
1590
Daniel Henrique Barboza9aae6e52017-11-02 07:09:06 -02001591# Check that the C compiler works. Doing this here before testing
1592# the host CPU ensures that we had a valid CC to autodetect the
1593# $cpu var (and we should bail right here if that's not the case).
1594# It also allows the help message to be printed without a CC.
1595write_c_skeleton;
1596if compile_object ; then
1597 : C compiler works ok
1598else
1599 error_exit "\"$cc\" either does not exist or does not work"
1600fi
1601if ! compile_prog ; then
1602 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1603fi
1604
Peter Maydell359bc952011-12-24 13:07:25 +00001605# Now we have handled --enable-tcg-interpreter and know we're not just
1606# printing the help message, bail out if the host CPU isn't supported.
1607if test "$ARCH" = "unknown"; then
1608 if test "$tcg_interpreter" = "yes" ; then
1609 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001610 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001611 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001612 fi
1613fi
1614
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001615# Consult white-list to determine whether to enable werror
1616# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001617if test -z "$werror" ; then
1618 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001619 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001620 werror="yes"
1621 else
1622 werror="no"
1623 fi
1624fi
1625
Peter Maydellfb59dab2017-03-28 14:01:52 +01001626if test "$bogus_os" = "yes"; then
1627 # Now that we know that we're not printing the help and that
1628 # the compiler works (so the results of the check_defines we used
1629 # to identify the OS are reliable), if we didn't recognize the
1630 # host OS we should stop now.
Peter Maydell951fedf2017-07-13 16:15:32 +01001631 error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')"
Peter Maydellfb59dab2017-03-28 14:01:52 +01001632fi
1633
Paolo Bonzini8d050952010-12-23 11:43:52 +01001634gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1635gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001636gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001637gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Paolo Bonzinib98fcfd2017-07-11 10:08:55 +02001638gcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001639gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001640# Note that we do not add -Werror to gcc_flags here, because that would
1641# enable it for all configure tests. If a configure test failed due
1642# to -Werror this would just silently disable some features,
1643# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001644
1645cc_has_warning_flag() {
1646 write_c_skeleton;
1647
Peter Maydella1d29d62012-10-27 22:19:07 +01001648 # Use the positive sense of the flag when testing for -Wno-wombat
1649 # support (gcc will happily accept the -Wno- form of unknown
1650 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001651 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1652 compile_prog "-Werror $optflag" ""
1653}
1654
1655for flag in $gcc_flags; do
1656 if cc_has_warning_flag $flag ; then
1657 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001658 fi
1659done
1660
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001661if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001662 cat > $TMPC << EOF
1663int main(int argc, char *argv[])
1664{
1665 char arr[64], *p = arr, *c = argv[0];
1666 while (*c) {
1667 *p++ = *c++;
1668 }
1669 return 0;
1670}
1671EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001672 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001673 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001674 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001675 # We need to check both a compile and a link, since some compiler
1676 # setups fail only on a .c->.o compile and some only at link time
1677 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1678 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001679 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001680 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001681 break
1682 fi
1683 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001684 if test "$stack_protector" = yes; then
1685 if test $sp_on = 0; then
1686 error_exit "Stack protector not supported"
1687 fi
1688 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001689fi
1690
Paolo Bonzini20bc94a2017-10-20 12:11:32 +02001691# Disable -Wmissing-braces on older compilers that warn even for
1692# the "universal" C zero initializer {0}.
1693cat > $TMPC << EOF
1694struct {
1695 int a[2];
1696} x = {0};
1697EOF
1698if compile_object "-Werror" "" ; then
1699 :
1700else
1701 QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces"
1702fi
1703
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001704# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1705# large functions that use global variables. The bug is in all releases of
1706# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1707# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1708cat > $TMPC << EOF
1709#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1710int main(void) { return 0; }
1711#else
1712#error No bug in this compiler.
1713#endif
1714EOF
1715if compile_prog "-Werror -fno-gcse" "" ; then
1716 TRANSLATE_OPT_CFLAGS=-fno-gcse
1717fi
1718
Avi Kivity40d64442011-11-15 20:12:17 +02001719if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001720 if test "$modules" = "yes" ; then
1721 error_exit "static and modules are mutually incompatible"
1722 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001723 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001724 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001725 else
1726 pie="no"
1727 fi
1728fi
1729
Emilio G. Cota768b7852015-04-29 13:09:02 +02001730# Unconditional check for compiler __thread support
1731 cat > $TMPC << EOF
1732static __thread int tls_var;
1733int main(void) { return tls_var; }
1734EOF
1735
1736if ! compile_prog "-Werror" "" ; then
1737 error_exit "Your compiler does not support the __thread specifier for " \
1738 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1739fi
1740
Avi Kivity40d64442011-11-15 20:12:17 +02001741if test "$pie" = ""; then
1742 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001743 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001744 ;;
1745 *)
1746 pie="no"
1747 ;;
1748 esac
1749fi
1750
1751if test "$pie" != "no" ; then
1752 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001753
1754#ifdef __linux__
1755# define THREAD __thread
1756#else
1757# define THREAD
1758#endif
1759
1760static THREAD int tls_var;
1761
1762int main(void) { return tls_var; }
1763
Avi Kivity40d64442011-11-15 20:12:17 +02001764EOF
1765 if compile_prog "-fPIE -DPIE" "-pie"; then
1766 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1767 LDFLAGS="-pie $LDFLAGS"
1768 pie="yes"
1769 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1770 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1771 fi
1772 else
1773 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001774 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001775 else
1776 echo "Disabling PIE due to missing toolchain support"
1777 pie="no"
1778 fi
1779 fi
Brad46eef332013-12-10 19:49:08 -05001780
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001781 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001782 CFLAGS_NOPIE="-fno-pie"
1783 LDFLAGS_NOPIE="-nopie"
1784 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001785fi
1786
Paolo Bonzini09dada42013-04-17 16:26:47 +02001787##########################################
1788# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1789# use i686 as default anyway, but for those that don't, an explicit
1790# specification is necessary
1791
1792if test "$cpu" = "i386"; then
1793 cat > $TMPC << EOF
1794static int sfaa(int *ptr)
1795{
1796 return __sync_fetch_and_and(ptr, 0);
1797}
1798
1799int main(void)
1800{
1801 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001802 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001803 sfaa(&val);
1804 return val;
1805}
1806EOF
1807 if ! compile_prog "" "" ; then
1808 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1809 fi
1810fi
1811
1812#########################################
bellardec530c82006-04-25 22:36:06 +00001813# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001814
bellardec530c82006-04-25 22:36:06 +00001815if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001816 if has $install; then
1817 :
1818 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001819 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1820 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1821 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001822 fi
Stefan Weil89138852016-05-16 15:10:20 +02001823 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001824 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1825 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1826 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001827 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001828 if has ar; then
1829 :
1830 else
bellardec530c82006-04-25 22:36:06 +00001831 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001832 error_exit "No path includes ar" \
1833 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001834 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001835 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001836 fi
ths5fafdf22007-09-16 21:08:06 +00001837fi
bellardec530c82006-04-25 22:36:06 +00001838
Stefan Weilafb63eb2012-09-26 22:04:38 +02001839if test -z "${target_list+xxx}" ; then
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001840 for target in $default_target_list; do
1841 supported_target $target 2>/dev/null && \
1842 target_list="$target_list $target"
1843 done
1844 target_list="${target_list# }"
Anthony Liguori121afa92012-09-14 08:17:03 -05001845else
Stefan Weil89138852016-05-16 15:10:20 +02001846 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
Paolo Bonzinid880a3b2017-07-03 16:58:28 +02001847 for target in $target_list; do
1848 # Check that we recognised the target name; this allows a more
1849 # friendly error message than if we let it fall through.
1850 case " $default_target_list " in
1851 *" $target "*)
1852 ;;
1853 *)
1854 error_exit "Unknown target name '$target'"
1855 ;;
1856 esac
1857 supported_target $target || exit 1
1858 done
bellard5327cf42005-01-10 23:18:50 +00001859fi
Peter Maydell25b48332013-05-20 16:16:16 +01001860
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001861# see if system emulation was really requested
1862case " $target_list " in
1863 *"-softmmu "*) softmmu=yes
1864 ;;
1865 *) softmmu=no
1866 ;;
1867esac
bellard5327cf42005-01-10 23:18:50 +00001868
Juan Quintela249247c2009-08-12 18:20:25 +02001869feature_not_found() {
1870 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001871 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001872
Peter Maydell76ad07a2013-04-08 12:11:26 +01001873 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001874 "configure was not able to find it." \
1875 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001876}
1877
bellard7d132992003-03-06 23:23:54 +00001878# ---
1879# big/little endian test
1880cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001881short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1882short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1883extern int foo(short *, short *);
1884int main(int argc, char *argv[]) {
1885 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001886}
1887EOF
1888
Mike Frysinger61cc9192013-06-30 23:30:18 -04001889if compile_object ; then
1890 if grep -q BiGeNdIaN $TMPO ; then
1891 bigendian="yes"
1892 elif grep -q LiTtLeEnDiAn $TMPO ; then
1893 bigendian="no"
1894 else
1895 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001896 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001897else
1898 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001899fi
1900
Juan Quintelab0a47e72009-08-12 18:29:49 +02001901##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001902# cocoa implies not SDL or GTK
1903# (the cocoa UI code currently assumes it is always the active UI
1904# and doesn't interact well with other UI frontend code)
1905if test "$cocoa" = "yes"; then
1906 if test "$sdl" = "yes"; then
1907 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1908 fi
1909 if test "$gtk" = "yes"; then
1910 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1911 fi
1912 gtk=no
1913 sdl=no
1914fi
1915
Eric Blake6b39b062016-10-11 10:46:23 -05001916# Some versions of Mac OS X incorrectly define SIZE_MAX
1917cat > $TMPC << EOF
1918#include <stdint.h>
1919#include <stdio.h>
1920int main(int argc, char *argv[]) {
1921 return printf("%zu", SIZE_MAX);
1922}
1923EOF
1924have_broken_size_max=no
1925if ! compile_object -Werror ; then
1926 have_broken_size_max=yes
1927fi
1928
Peter Maydella30878e2015-08-14 16:10:52 +01001929##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001930# L2TPV3 probe
1931
1932cat > $TMPC <<EOF
1933#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001934#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001935int main(void) { return sizeof(struct mmsghdr); }
1936EOF
1937if compile_prog "" "" ; then
1938 l2tpv3=yes
1939else
1940 l2tpv3=no
1941fi
1942
1943##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001944# MinGW / Mingw-w64 localtime_r/gmtime_r check
1945
1946if test "$mingw32" = "yes"; then
1947 # Some versions of MinGW / Mingw-w64 lack localtime_r
1948 # and gmtime_r entirely.
1949 #
1950 # Some versions of Mingw-w64 define a macro for
1951 # localtime_r/gmtime_r.
1952 #
1953 # Some versions of Mingw-w64 will define functions
1954 # for localtime_r/gmtime_r, but only if you have
1955 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1956 # though, unistd.h and pthread.h both define
1957 # that for you.
1958 #
1959 # So this #undef localtime_r and #include <unistd.h>
1960 # are not in fact redundant.
1961cat > $TMPC << EOF
1962#include <unistd.h>
1963#include <time.h>
1964#undef localtime_r
1965int main(void) { localtime_r(NULL, NULL); return 0; }
1966EOF
1967 if compile_prog "" "" ; then
1968 localtime_r="yes"
1969 else
1970 localtime_r="no"
1971 fi
1972fi
1973
1974##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001975# pkg-config probe
1976
1977if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001978 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001979fi
1980
1981##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001982# NPTL probe
1983
Peter Maydell24cb36a2013-07-16 18:45:00 +01001984if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001985 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001986#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001987#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001988int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001989#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1990#error bork
1991#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001992 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001993}
1994EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001995 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001996 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001997 fi
pbrookbd0c5662008-05-29 14:34:11 +00001998fi
1999
Liang Li99f2dbd2016-03-08 13:53:16 +08002000#########################################
balrogac629222008-10-11 09:56:04 +00002001# zlib check
2002
Alon Levy1ece9902011-07-26 12:30:40 +03002003if test "$zlib" != "no" ; then
2004 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00002005#include <zlib.h>
2006int main(void) { zlibVersion(); return 0; }
2007EOF
Alon Levy1ece9902011-07-26 12:30:40 +03002008 if compile_prog "" "-lz" ; then
2009 :
2010 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002011 error_exit "zlib check failed" \
2012 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03002013 fi
balrogac629222008-10-11 09:56:04 +00002014fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00002015LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00002016
2017##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08002018# lzo check
2019
2020if test "$lzo" != "no" ; then
2021 cat > $TMPC << EOF
2022#include <lzo/lzo1x.h>
2023int main(void) { lzo_version(); return 0; }
2024EOF
2025 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002026 libs_softmmu="$libs_softmmu -llzo2"
2027 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002028 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002029 if test "$lzo" = "yes"; then
2030 feature_not_found "liblzo2" "Install liblzo2 devel"
2031 fi
2032 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002033 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002034fi
2035
2036##########################################
2037# snappy check
2038
2039if test "$snappy" != "no" ; then
2040 cat > $TMPC << EOF
2041#include <snappy-c.h>
2042int main(void) { snappy_max_compressed_length(4096); return 0; }
2043EOF
2044 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02002045 libs_softmmu="$libs_softmmu -lsnappy"
2046 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08002047 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002048 if test "$snappy" = "yes"; then
2049 feature_not_found "libsnappy" "Install libsnappy devel"
2050 fi
2051 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08002052 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08002053fi
2054
2055##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01002056# bzip2 check
2057
2058if test "$bzip2" != "no" ; then
2059 cat > $TMPC << EOF
2060#include <bzlib.h>
2061int main(void) { BZ2_bzlibVersion(); return 0; }
2062EOF
2063 if compile_prog "" "-lbz2" ; then
2064 bzip2="yes"
2065 else
2066 if test "$bzip2" = "yes"; then
2067 feature_not_found "libbzip2" "Install libbzip2 devel"
2068 fi
2069 bzip2="no"
2070 fi
2071fi
2072
2073##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03002074# libseccomp check
2075
2076if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04002077 case "$cpu" in
2078 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06002079 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04002080 ;;
James Hogan5ce43972016-04-08 14:16:34 +01002081 mips)
2082 libseccomp_minver="2.2.0"
2083 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002084 arm|aarch64)
2085 libseccomp_minver="2.2.3"
2086 ;;
Thomas Huth3aa35fc2017-09-14 12:36:03 +02002087 ppc|ppc64|s390x)
Michael Strosaker3e684452016-06-01 18:30:18 -05002088 libseccomp_minver="2.3.0"
2089 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04002090 *)
2091 libseccomp_minver=""
2092 ;;
2093 esac
2094
2095 if test "$libseccomp_minver" != "" &&
2096 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Fam Zhengc3883e12017-09-07 16:53:16 +08002097 seccomp_cflags="$($pkg_config --cflags libseccomp)"
2098 seccomp_libs="$($pkg_config --libs libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04002099 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03002100 else
Andrew Jones693e5912015-09-30 11:59:18 -04002101 if test "$seccomp" = "yes" ; then
2102 if test "$libseccomp_minver" != "" ; then
2103 feature_not_found "libseccomp" \
2104 "Install libseccomp devel >= $libseccomp_minver"
2105 else
2106 feature_not_found "libseccomp" \
2107 "libseccomp is not supported for host cpu $cpu"
2108 fi
2109 fi
2110 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03002111 fi
2112fi
2113##########################################
aliguorie37630c2009-04-22 15:19:10 +00002114# xen probe
2115
Juan Quintelafc321b42009-08-12 18:29:55 +02002116if test "$xen" != "no" ; then
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002117 # Check whether Xen library path is specified via --extra-ldflags to avoid
2118 # overriding this setting with pkg-config output. If not, try pkg-config
2119 # to obtain all needed flags.
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002120
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002121 if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2122 $pkg_config --exists xencontrol ; then
2123 xen_ctrl_version="$(printf '%d%02d%02d' \
2124 $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2125 xen=yes
2126 xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2127 xen_pc="$xen_pc xenevtchn xendevicemodel"
2128 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2129 libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2130 LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2131 else
Stefan Weil50ced5b2011-12-17 09:27:39 +01002132
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002133 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd9506ca2017-05-11 12:35:42 +01002134 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002135
2136 # First we test whether Xen headers and libraries are available.
2137 # If no, we are done and there is no Xen support.
2138 # If yes, more tests are run to detect the Xen version.
2139
2140 # Xen (any)
2141 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002142#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002143int main(void) {
2144 return 0;
2145}
2146EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002147 if ! compile_prog "" "$xen_libs" ; then
2148 # Xen not found
2149 if test "$xen" = "yes" ; then
2150 feature_not_found "xen" "Install xen devel"
2151 fi
2152 xen=no
Stefan Weil50ced5b2011-12-17 09:27:39 +01002153
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002154 # Xen unstable
2155 elif
2156 cat > $TMPC <<EOF &&
Igor Druzhinin5ba3d752017-07-10 23:40:02 +01002157#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2158#include <xenforeignmemory.h>
2159int main(void) {
2160 xenforeignmemory_handle *xfmem;
2161
2162 xfmem = xenforeignmemory_open(0, 0);
2163 xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0);
2164
2165 return 0;
2166}
2167EOF
2168 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2169 then
2170 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2171 xen_ctrl_version=41000
2172 xen=yes
2173 elif
2174 cat > $TMPC <<EOF &&
Paul Durrantda8090c2017-03-07 10:55:33 +00002175#undef XC_WANT_COMPAT_DEVICEMODEL_API
2176#define __XEN_TOOLS__
2177#include <xendevicemodel.h>
2178int main(void) {
2179 xendevicemodel_handle *xd;
2180
2181 xd = xendevicemodel_open(0, 0);
2182 xendevicemodel_close(xd);
2183
2184 return 0;
2185}
2186EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002187 compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2188 then
2189 xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2190 xen_ctrl_version=40900
2191 xen=yes
2192 elif
2193 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002194/*
2195 * If we have stable libs the we don't want the libxc compat
2196 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002197 *
2198 * Also, check if xengnttab_grant_copy_segment_t is defined and
2199 * grant copy operation is implemented.
2200 */
2201#undef XC_WANT_COMPAT_EVTCHN_API
2202#undef XC_WANT_COMPAT_GNTTAB_API
2203#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2204#include <xenctrl.h>
2205#include <xenstore.h>
2206#include <xenevtchn.h>
2207#include <xengnttab.h>
2208#include <xenforeignmemory.h>
2209#include <stdint.h>
2210#include <xen/hvm/hvm_info_table.h>
2211#if !defined(HVM_MAX_VCPUS)
2212# error HVM_MAX_VCPUS not defined
2213#endif
2214int main(void) {
2215 xc_interface *xc = NULL;
2216 xenforeignmemory_handle *xfmem;
2217 xenevtchn_handle *xe;
2218 xengnttab_handle *xg;
2219 xen_domain_handle_t handle;
2220 xengnttab_grant_copy_segment_t* seg = NULL;
2221
2222 xs_daemon_open();
2223
2224 xc = xc_interface_open(0, 0, 0);
2225 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2226 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2227 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2228 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2229 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2230
2231 xfmem = xenforeignmemory_open(0, 0);
2232 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2233
2234 xe = xenevtchn_open(0, 0);
2235 xenevtchn_fd(xe);
2236
2237 xg = xengnttab_open(0, 0);
2238 xengnttab_grant_copy(xg, 0, seg);
2239
2240 return 0;
2241}
2242EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002243 compile_prog "" "$xen_libs $xen_stable_libs"
2244 then
2245 xen_ctrl_version=40800
2246 xen=yes
2247 elif
2248 cat > $TMPC <<EOF &&
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002249/*
2250 * If we have stable libs the we don't want the libxc compat
2251 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002252 */
2253#undef XC_WANT_COMPAT_EVTCHN_API
2254#undef XC_WANT_COMPAT_GNTTAB_API
2255#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2256#include <xenctrl.h>
2257#include <xenstore.h>
2258#include <xenevtchn.h>
2259#include <xengnttab.h>
2260#include <xenforeignmemory.h>
2261#include <stdint.h>
2262#include <xen/hvm/hvm_info_table.h>
2263#if !defined(HVM_MAX_VCPUS)
2264# error HVM_MAX_VCPUS not defined
2265#endif
2266int main(void) {
2267 xc_interface *xc = NULL;
2268 xenforeignmemory_handle *xfmem;
2269 xenevtchn_handle *xe;
2270 xengnttab_handle *xg;
2271 xen_domain_handle_t handle;
2272
2273 xs_daemon_open();
2274
2275 xc = xc_interface_open(0, 0, 0);
2276 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2277 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2278 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2279 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2280 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2281
2282 xfmem = xenforeignmemory_open(0, 0);
2283 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2284
2285 xe = xenevtchn_open(0, 0);
2286 xenevtchn_fd(xe);
2287
2288 xg = xengnttab_open(0, 0);
2289 xengnttab_map_grant_ref(xg, 0, 0, 0);
2290
2291 return 0;
2292}
2293EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002294 compile_prog "" "$xen_libs $xen_stable_libs"
2295 then
2296 xen_ctrl_version=40701
2297 xen=yes
2298 elif
2299 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002300#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002301#include <stdint.h>
2302int main(void) {
2303 xc_interface *xc = NULL;
2304 xen_domain_handle_t handle;
2305 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2306 return 0;
2307}
2308EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002309 compile_prog "" "$xen_libs"
2310 then
2311 xen_ctrl_version=40700
2312 xen=yes
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002313
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002314 # Xen 4.6
2315 elif
2316 cat > $TMPC <<EOF &&
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002317#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002318#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002319#include <stdint.h>
2320#include <xen/hvm/hvm_info_table.h>
2321#if !defined(HVM_MAX_VCPUS)
2322# error HVM_MAX_VCPUS not defined
2323#endif
2324int main(void) {
2325 xc_interface *xc;
2326 xs_daemon_open();
2327 xc = xc_interface_open(0, 0, 0);
2328 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2329 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002330 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002331 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002332 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002333 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002334 return 0;
2335}
2336EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002337 compile_prog "" "$xen_libs"
2338 then
2339 xen_ctrl_version=40600
2340 xen=yes
Jan Beulichd8b441a2015-07-24 03:38:28 -06002341
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002342 # Xen 4.5
2343 elif
2344 cat > $TMPC <<EOF &&
Jan Beulichd8b441a2015-07-24 03:38:28 -06002345#include <xenctrl.h>
2346#include <xenstore.h>
2347#include <stdint.h>
2348#include <xen/hvm/hvm_info_table.h>
2349#if !defined(HVM_MAX_VCPUS)
2350# error HVM_MAX_VCPUS not defined
2351#endif
2352int main(void) {
2353 xc_interface *xc;
2354 xs_daemon_open();
2355 xc = xc_interface_open(0, 0, 0);
2356 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2357 xc_gnttab_open(NULL, 0);
2358 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2359 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002360 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2361 return 0;
2362}
2363EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002364 compile_prog "" "$xen_libs"
2365 then
2366 xen_ctrl_version=40500
2367 xen=yes
Paul Durrant3996e852015-01-20 11:06:19 +00002368
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002369 elif
2370 cat > $TMPC <<EOF &&
Paul Durrant3996e852015-01-20 11:06:19 +00002371#include <xenctrl.h>
2372#include <xenstore.h>
2373#include <stdint.h>
2374#include <xen/hvm/hvm_info_table.h>
2375#if !defined(HVM_MAX_VCPUS)
2376# error HVM_MAX_VCPUS not defined
2377#endif
2378int main(void) {
2379 xc_interface *xc;
2380 xs_daemon_open();
2381 xc = xc_interface_open(0, 0, 0);
2382 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2383 xc_gnttab_open(NULL, 0);
2384 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2385 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002386 return 0;
2387}
2388EOF
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002389 compile_prog "" "$xen_libs"
2390 then
2391 xen_ctrl_version=40200
2392 xen=yes
Stefano Stabellini8688e062012-04-17 17:04:18 +00002393
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002394 else
2395 if test "$xen" = "yes" ; then
2396 feature_not_found "xen (unsupported version)" \
2397 "Install a supported xen (xen 4.2 or newer)"
2398 fi
2399 xen=no
Juan Quintelafc321b42009-08-12 18:29:55 +02002400 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002401
Juergen Grossc1cdd9d2017-03-27 09:42:45 +02002402 if test "$xen" = yes; then
2403 if test $xen_ctrl_version -ge 40701 ; then
2404 libs_softmmu="$xen_stable_libs $libs_softmmu"
2405 fi
2406 libs_softmmu="$xen_libs $libs_softmmu"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002407 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002408 fi
aliguorie37630c2009-04-22 15:19:10 +00002409fi
2410
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002411if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002412 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002413 xen_pci_passthrough=yes
2414 else
2415 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002416 error_exit "User requested feature Xen PCI Passthrough" \
2417 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002418 fi
2419 xen_pci_passthrough=no
2420 fi
2421fi
2422
Ian Campbell64a7ad62016-01-15 13:23:44 +00002423if test "$xen_pv_domain_build" = "yes" &&
2424 test "$xen" != "yes"; then
2425 error_exit "User requested Xen PV domain builder support" \
2426 "which requires Xen support."
2427fi
2428
aliguorie37630c2009-04-22 15:19:10 +00002429##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002430# Sparse probe
2431if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002432 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002433 sparse=yes
2434 else
2435 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002436 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002437 fi
2438 sparse=no
2439 fi
2440fi
2441
2442##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002443# X11 probe
2444x11_cflags=
2445x11_libs=-lX11
2446if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002447 x11_cflags=$($pkg_config --cflags x11)
2448 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002449fi
2450
2451##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002452# GTK probe
2453
Stefan Weil9e04c682014-05-17 16:29:18 +02002454if test "$gtkabi" = ""; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002455 # The GTK ABI was not specified explicitly, so try whether 3.0 is available.
2456 # Use 2.0 as a fallback if that is available.
2457 if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002458 gtkabi=3.0
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002459 elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002460 gtkabi=2.0
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002461 else
2462 gtkabi=3.0
Stefan Weil9e04c682014-05-17 16:29:18 +02002463 fi
2464fi
2465
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002466if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002467 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002468 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002469 if test "$gtkabi" = "3.0" ; then
2470 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002471 else
2472 gtkversion="2.18.0"
2473 fi
2474 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002475 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2476 gtk_libs=$($pkg_config --libs $gtkpackage)
2477 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002478 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002479 gtk_cflags="$gtk_cflags $x11_cflags"
2480 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002481 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002482 libs_softmmu="$gtk_libs $libs_softmmu"
2483 gtk="yes"
2484 elif test "$gtk" = "yes"; then
Gerd Hoffmann5fe309f2017-06-06 12:53:36 +02002485 feature_not_found "gtk" "Install gtk3-devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002486 else
2487 gtk="no"
2488 fi
2489fi
2490
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002491
2492##########################################
2493# GNUTLS probe
2494
Peter Maydell37371292015-07-24 18:28:08 +01002495gnutls_works() {
2496 # Unfortunately some distros have bad pkg-config information for gnutls
2497 # such that it claims to exist but you get a compiler error if you try
2498 # to use the options returned by --libs. Specifically, Ubuntu for --static
2499 # builds doesn't work:
2500 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2501 #
2502 # So sanity check the cflags/libs before assuming gnutls can be used.
2503 if ! $pkg_config --exists "gnutls"; then
2504 return 1
2505 fi
2506
2507 write_c_skeleton
2508 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2509}
2510
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002511gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002512gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002513if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002514 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002515 gnutls_cflags=$($pkg_config --cflags gnutls)
2516 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002517 libs_softmmu="$gnutls_libs $libs_softmmu"
2518 libs_tools="$gnutls_libs $libs_tools"
2519 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2520 gnutls="yes"
2521
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002522 # gnutls_rnd requires >= 2.11.0
2523 if $pkg_config --exists "gnutls >= 2.11.0"; then
2524 gnutls_rnd="yes"
2525 else
2526 gnutls_rnd="no"
2527 fi
2528
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002529 if $pkg_config --exists 'gnutls >= 3.0'; then
2530 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002531 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002532 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002533 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002534 *gcrypt*)
2535 gnutls_gcrypt=yes
2536 gnutls_nettle=no
2537 ;;
2538 *nettle*)
2539 gnutls_gcrypt=no
2540 gnutls_nettle=yes
2541 ;;
2542 *)
2543 gnutls_gcrypt=yes
2544 gnutls_nettle=no
2545 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002546 esac
2547 else
2548 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002549 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002550 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002551 elif test "$gnutls" = "yes"; then
2552 feature_not_found "gnutls" "Install gnutls devel"
2553 else
2554 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002555 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002556 fi
2557else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002558 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002559fi
2560
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002561
2562# If user didn't give a --disable/enable-gcrypt flag,
2563# then mark as disabled if user requested nettle
2564# explicitly, or if gnutls links to nettle
2565if test -z "$gcrypt"
2566then
2567 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2568 then
2569 gcrypt="no"
2570 fi
2571fi
2572
2573# If user didn't give a --disable/enable-nettle flag,
2574# then mark as disabled if user requested gcrypt
2575# explicitly, or if gnutls links to gcrypt
2576if test -z "$nettle"
2577then
2578 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2579 then
2580 nettle="no"
2581 fi
2582fi
2583
2584has_libgcrypt_config() {
2585 if ! has "libgcrypt-config"
2586 then
2587 return 1
2588 fi
2589
2590 if test -n "$cross_prefix"
2591 then
Stefan Weil89138852016-05-16 15:10:20 +02002592 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002593 if test "$host-" != $cross_prefix
2594 then
2595 return 1
2596 fi
2597 fi
2598
2599 return 0
2600}
2601
2602if test "$gcrypt" != "no"; then
2603 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002604 gcrypt_cflags=$(libgcrypt-config --cflags)
2605 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002606 # Debian has remove -lgpg-error from libgcrypt-config
2607 # as it "spreads unnecessary dependencies" which in
2608 # turn breaks static builds...
2609 if test "$static" = "yes"
2610 then
2611 gcrypt_libs="$gcrypt_libs -lgpg-error"
2612 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002613 libs_softmmu="$gcrypt_libs $libs_softmmu"
2614 libs_tools="$gcrypt_libs $libs_tools"
2615 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002616 gcrypt="yes"
2617 if test -z "$nettle"; then
2618 nettle="no"
2619 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002620
2621 cat > $TMPC << EOF
2622#include <gcrypt.h>
2623int main(void) {
2624 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2625 GCRY_MD_SHA256,
2626 NULL, 0, 0, 0, NULL);
2627 return 0;
2628}
2629EOF
2630 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2631 gcrypt_kdf=yes
2632 fi
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002633
2634 cat > $TMPC << EOF
2635#include <gcrypt.h>
2636int main(void) {
2637 gcry_mac_hd_t handle;
2638 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2639 GCRY_MAC_FLAG_SECURE, NULL);
2640 return 0;
2641}
2642EOF
2643 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2644 gcrypt_hmac=yes
2645 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002646 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002647 if test "$gcrypt" = "yes"; then
2648 feature_not_found "gcrypt" "Install gcrypt devel"
2649 else
2650 gcrypt="no"
2651 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002652 fi
2653fi
2654
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002655
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002656if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002657 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002658 nettle_cflags=$($pkg_config --cflags nettle)
2659 nettle_libs=$($pkg_config --libs nettle)
2660 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002661 libs_softmmu="$nettle_libs $libs_softmmu"
2662 libs_tools="$nettle_libs $libs_tools"
2663 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002664 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002665
2666 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002667#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002668#include <nettle/pbkdf2.h>
2669int main(void) {
2670 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2671 return 0;
2672}
2673EOF
2674 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2675 nettle_kdf=yes
2676 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002677 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002678 if test "$nettle" = "yes"; then
2679 feature_not_found "nettle" "Install nettle devel"
2680 else
2681 nettle="no"
2682 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002683 fi
2684fi
2685
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002686if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2687then
2688 error_exit "Only one of gcrypt & nettle can be enabled"
2689fi
2690
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002691##########################################
2692# libtasn1 - only for the TLS creds/session test suite
2693
2694tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002695tasn1_cflags=""
2696tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002697if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002698 tasn1_cflags=$($pkg_config --cflags libtasn1)
2699 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002700else
2701 tasn1=no
2702fi
2703
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002704
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002705##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002706# getifaddrs (for tests/test-io-channel-socket )
2707
2708have_ifaddrs_h=yes
2709if ! check_include "ifaddrs.h" ; then
2710 have_ifaddrs_h=no
2711fi
2712
2713##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002714# VTE probe
2715
2716if test "$vte" != "no"; then
2717 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002718 vteminversion="0.32.0"
2719 if $pkg_config --exists "vte-2.91"; then
2720 vtepackage="vte-2.91"
2721 else
2722 vtepackage="vte-2.90"
2723 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002724 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002725 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002726 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002727 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002728 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002729 vte_cflags=$($pkg_config --cflags $vtepackage)
2730 vte_libs=$($pkg_config --libs $vtepackage)
2731 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002732 libs_softmmu="$vte_libs $libs_softmmu"
2733 vte="yes"
2734 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002735 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002736 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002737 else
2738 feature_not_found "vte" "Install libvte devel"
2739 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002740 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002741 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002742 fi
2743fi
2744
2745##########################################
bellard11d9f692004-04-02 20:55:59 +00002746# SDL probe
2747
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002748# Look for sdl configuration program (pkg-config or sdl-config). Try
2749# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002750
Cole Robinsonee8466d2016-05-06 14:03:07 -04002751if test "$sdlabi" = ""; then
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002752 if $pkg_config --exists "sdl2"; then
Cole Robinsonee8466d2016-05-06 14:03:07 -04002753 sdlabi=2.0
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002754 elif $pkg_config --exists "sdl"; then
Cole Robinsonee8466d2016-05-06 14:03:07 -04002755 sdlabi=1.2
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002756 else
2757 sdlabi=2.0
Cole Robinsonee8466d2016-05-06 14:03:07 -04002758 fi
2759fi
2760
Dave Airlie47c03742013-12-10 14:05:51 +10002761if test $sdlabi = "2.0"; then
2762 sdl_config=$sdl2_config
2763 sdlname=sdl2
2764 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002765elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002766 sdlname=sdl
2767 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002768else
2769 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002770fi
2771
Stefan Weil89138852016-05-16 15:10:20 +02002772if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002773 sdl_config=$sdlconfigname
2774fi
2775
2776if $pkg_config $sdlname --exists; then
2777 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002778 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002779elif has ${sdl_config}; then
2780 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002781 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002782else
2783 if test "$sdl" = "yes" ; then
Gerd Hoffmann8f4ea9c2017-06-06 12:53:37 +02002784 feature_not_found "sdl" "Install SDL2-devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002785 fi
2786 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002787fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002788if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002789 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2790fi
bellard11d9f692004-04-02 20:55:59 +00002791
Paolo Bonzini9316f802010-01-13 09:52:55 +01002792sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002793if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002794 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002795#include <SDL.h>
2796#undef main /* We don't want SDL to override our main() */
2797int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2798EOF
Stefan Weil89138852016-05-16 15:10:20 +02002799 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002800 if test "$static" = "yes" ; then
Thomas Huth5f37e6d2017-06-13 20:00:44 +02002801 if $pkg_config $sdlname --exists; then
2802 sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
2803 else
2804 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2805 fi
TeLeMan74f42e12010-02-08 13:56:44 +08002806 else
Stefan Weil89138852016-05-16 15:10:20 +02002807 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002808 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002809 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002810 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002811 sdl_too_old=yes
2812 else
Peter Maydella30878e2015-08-14 16:10:52 +01002813 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002814 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002815
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002816 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002817 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002818 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002819 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2820 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002821 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002822 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002823 :
2824 else
2825 sdl=no
2826 fi
2827 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002828 else # sdl not found
2829 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002830 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002831 fi
2832 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002833 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002834fi
bellard11d9f692004-04-02 20:55:59 +00002835
aliguori5368a422009-03-03 17:37:21 +00002836if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002837 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002838#include <SDL.h>
2839#if defined(SDL_VIDEO_DRIVER_X11)
2840#include <X11/XKBlib.h>
2841#else
2842#error No x11 support
2843#endif
2844int main(void) { return 0; }
2845EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002846 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2847 sdl_cflags="$sdl_cflags $x11_cflags"
2848 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002849 fi
aliguori5368a422009-03-03 17:37:21 +00002850fi
2851
ths8f28f3f2007-01-05 21:25:54 +00002852##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002853# RDMA needs OpenFabrics libraries
2854if test "$rdma" != "no" ; then
2855 cat > $TMPC <<EOF
2856#include <rdma/rdma_cma.h>
2857int main(void) { return 0; }
2858EOF
2859 rdma_libs="-lrdmacm -libverbs"
2860 if compile_prog "" "$rdma_libs" ; then
2861 rdma="yes"
Michael R. Hines2da776d2013-07-22 10:01:54 -04002862 else
2863 if test "$rdma" = "yes" ; then
2864 error_exit \
2865 " OpenFabrics librdmacm/libibverbs not present." \
2866 " Your options:" \
2867 " (1) Fast: Install infiniband packages from your distro." \
2868 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2869 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2870 fi
2871 rdma="no"
2872 fi
2873fi
2874
ths8d5d2d42007-08-25 01:37:51 +00002875
2876##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002877# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002878if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002879 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002880#include <sasl/sasl.h>
2881#include <stdio.h>
2882int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2883EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002884 # Assuming Cyrus-SASL installed in /usr prefix
2885 vnc_sasl_cflags=""
2886 vnc_sasl_libs="-lsasl2"
2887 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2888 vnc_sasl=yes
2889 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002890 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002891 else
2892 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002893 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002894 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002895 vnc_sasl=no
2896 fi
aliguori2f9606b2009-03-06 20:27:28 +00002897fi
2898
2899##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002900# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002901if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002902cat > $TMPC <<EOF
2903#include <stdio.h>
2904#include <jpeglib.h>
2905int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2906EOF
2907 vnc_jpeg_cflags=""
2908 vnc_jpeg_libs="-ljpeg"
2909 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2910 vnc_jpeg=yes
2911 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002912 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002913 else
2914 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002915 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002916 fi
2917 vnc_jpeg=no
2918 fi
2919fi
2920
2921##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002922# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002923if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002924cat > $TMPC <<EOF
2925//#include <stdio.h>
2926#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002927#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002928int main(void) {
2929 png_structp png_ptr;
2930 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002931 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002932}
2933EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002934 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002935 vnc_png_cflags=$($pkg_config libpng --cflags)
2936 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002937 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002938 vnc_png_cflags=""
2939 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002940 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002941 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2942 vnc_png=yes
2943 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002944 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002945 else
2946 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002947 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002948 fi
2949 vnc_png=no
2950 fi
2951fi
2952
2953##########################################
Gerd Hoffmann6a021532017-10-05 17:33:28 +02002954# xkbcommon probe
2955if test "$xkbcommon" != "no" ; then
2956 if $pkg_config xkbcommon --exists; then
2957 xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
2958 xkbcommon_libs=$($pkg_config xkbcommon --libs)
2959 xkbcommon=yes
2960 else
2961 if test "$xkbcommon" = "yes" ; then
2962 feature_not_found "xkbcommon" "Install libxkbcommon-devel"
2963 fi
2964 xkbcommon=no
2965 fi
2966fi
2967
2968##########################################
aliguori76655d62009-03-06 20:27:37 +00002969# fnmatch() probe, used for ACL routines
2970fnmatch="no"
2971cat > $TMPC << EOF
2972#include <fnmatch.h>
2973int main(void)
2974{
2975 fnmatch("foo", "foo", 0);
2976 return 0;
2977}
2978EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002979if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002980 fnmatch="yes"
2981fi
2982
2983##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06002984# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002985if test "$xfs" != "no" ; then
2986 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002987#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002988#include <xfs/xfs.h>
2989int main(void)
2990{
2991 xfsctl(NULL, 0, 0, NULL);
2992 return 0;
2993}
2994EOF
2995 if compile_prog "" "" ; then
2996 xfs="yes"
2997 else
2998 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002999 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01003000 fi
3001 xfs=no
3002 fi
3003fi
3004
3005##########################################
ths8a16d272008-07-19 09:56:24 +00003006# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02003007if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003008 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00003009 cat > $TMPC << EOF
3010#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00003011int main(void)
3012{
3013 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01003014 char s[] = "";
3015 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00003016 return 0;
3017}
ths8a16d272008-07-19 09:56:24 +00003018EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003019 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02003020 vde=yes
Juan Quinteladfb278b2009-08-12 18:20:27 +02003021 else
3022 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003023 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02003024 fi
3025 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02003026 fi
ths8a16d272008-07-19 09:56:24 +00003027fi
3028
3029##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003030# netmap support probe
3031# Apart from looking for netmap headers, we make sure that the host API version
3032# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
3033# a minor/major version number. Minor new features will be marked with values up
3034# to 15, and if something happens that requires a change to the backend we will
3035# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01003036if test "$netmap" != "no" ; then
3037 cat > $TMPC << EOF
3038#include <inttypes.h>
3039#include <net/if.h>
3040#include <net/netmap.h>
3041#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01003042#if (NETMAP_API < 11) || (NETMAP_API > 15)
3043#error
3044#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01003045int main(void) { return 0; }
3046EOF
3047 if compile_prog "" "" ; then
3048 netmap=yes
3049 else
3050 if test "$netmap" = "yes" ; then
3051 feature_not_found "netmap"
3052 fi
3053 netmap=no
3054 fi
3055fi
3056
3057##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05003058# libcap-ng library probe
3059if test "$cap_ng" != "no" ; then
3060 cap_libs="-lcap-ng"
3061 cat > $TMPC << EOF
3062#include <cap-ng.h>
3063int main(void)
3064{
3065 capng_capability_to_name(CAPNG_EFFECTIVE);
3066 return 0;
3067}
3068EOF
3069 if compile_prog "" "$cap_libs" ; then
3070 cap_ng=yes
3071 libs_tools="$cap_libs $libs_tools"
3072 else
3073 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003074 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05003075 fi
3076 cap_ng=no
3077 fi
3078fi
3079
3080##########################################
malcc2de5c92008-06-28 19:13:06 +00003081# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00003082
malcc2de5c92008-06-28 19:13:06 +00003083audio_drv_probe()
3084{
3085 drv=$1
3086 hdr=$2
3087 lib=$3
3088 exp=$4
3089 cfl=$5
3090 cat > $TMPC << EOF
3091#include <$hdr>
3092int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00003093EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003094 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00003095 :
3096 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003097 error_exit "$drv check failed" \
3098 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00003099 fi
3100}
3101
Stefan Weil89138852016-05-16 15:10:20 +02003102audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00003103for drv in $audio_drv_list; do
3104 case $drv in
3105 alsa)
3106 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01003107 "return snd_pcm_close((snd_pcm_t *)0);"
Fam Zhengb1149912017-09-07 16:29:13 +08003108 alsa_libs="-lasound"
malcc2de5c92008-06-28 19:13:06 +00003109 ;;
3110
malcb8e59f12008-07-02 21:03:08 +00003111 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02003112 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
3113 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Fam Zhengb1149912017-09-07 16:29:13 +08003114 pulse_libs="-lpulse"
Juan Quintela67f86e82009-08-03 14:46:59 +02003115 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00003116 ;;
3117
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003118 sdl)
3119 if test "$sdl" = "no"; then
3120 error_exit "sdl not found or disabled, can not use sdl audio driver"
3121 fi
3122 ;;
3123
Juan Quintela997e6902009-08-03 14:46:29 +02003124 coreaudio)
Fam Zhengb1149912017-09-07 16:29:13 +08003125 coreaudio_libs="-framework CoreAudio"
Juan Quintela997e6902009-08-03 14:46:29 +02003126 ;;
3127
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003128 dsound)
Fam Zhengb1149912017-09-07 16:29:13 +08003129 dsound_libs="-lole32 -ldxguid"
malcd5631632009-10-10 01:13:41 +04003130 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003131 ;;
3132
3133 oss)
Fam Zhengb1149912017-09-07 16:29:13 +08003134 oss_libs="$oss_lib"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02003135 ;;
3136
Gerd Hoffmann373967b2017-03-20 10:05:43 +01003137 wav)
3138 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00003139 ;;
3140
malce4c63a62008-07-19 16:15:16 +00003141 *)
malc1c9b2a52008-07-19 16:57:30 +00003142 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01003143 error_exit "Unknown driver '$drv' selected" \
3144 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00003145 }
3146 ;;
malcc2de5c92008-06-28 19:13:06 +00003147 esac
3148done
ths8f28f3f2007-01-05 21:25:54 +00003149
balrog4d3b6f62008-02-10 16:33:14 +00003150##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00003151# BrlAPI probe
3152
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003153if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003154 brlapi_libs="-lbrlapi"
3155 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00003156#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003157#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00003158int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3159EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003160 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02003161 brlapi=yes
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003162 else
3163 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003164 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02003165 fi
3166 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02003167 fi
3168fi
aurel322e4d9fb2008-04-08 06:01:02 +00003169
3170##########################################
balrog4d3b6f62008-02-10 16:33:14 +00003171# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02003172if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003173 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003174 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3175 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003176 else
Samuel Thibault7c703002016-11-09 11:27:52 +01003177 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003178 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04003179 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02003180 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00003181 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003182#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00003183#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003184#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01003185int main(void) {
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003186 wchar_t wch = L'w';
3187 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01003188 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003189 addwstr(L"wide chars\n");
3190 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003191 add_wch(WACS_DEGREE);
Kamil Rytarowski271f37a2017-04-26 12:50:27 +02003192 return 0;
Stefan Weilef9a2522011-12-17 17:46:02 +01003193}
balrog4d3b6f62008-02-10 16:33:14 +00003194EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003195 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003196 for curses_inc in $curses_inc_list; do
Peter Maydellb01a4fd2017-06-02 15:35:38 +01003197 # Make sure we get the wide character prototypes
3198 curses_inc="-DNCURSES_WIDECHAR $curses_inc"
Samuel Thibault7c703002016-11-09 11:27:52 +01003199 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003200 for curses_lib in $curses_lib_list; do
3201 unset IFS
3202 if compile_prog "$curses_inc" "$curses_lib" ; then
3203 curses_found=yes
3204 QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3205 libs_softmmu="$curses_lib $libs_softmmu"
3206 break
3207 fi
3208 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003209 if test "$curses_found" = yes ; then
3210 break
3211 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003212 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003213 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003214 if test "$curses_found" = "yes" ; then
3215 curses=yes
3216 else
3217 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003218 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003219 fi
3220 curses=no
3221 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003222fi
balrog4d3b6f62008-02-10 16:33:14 +00003223
blueswir1414f0da2008-08-15 18:20:52 +00003224##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003225# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003226if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003227 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003228 curlconfig="$pkg_config libcurl"
3229 else
3230 curlconfig=curl-config
3231 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003232 cat > $TMPC << EOF
3233#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003234int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003235EOF
Stefan Weil89138852016-05-16 15:10:20 +02003236 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3237 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003238 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003239 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003240 else
3241 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003242 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003243 fi
3244 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003245 fi
3246fi # test "$curl"
3247
3248##########################################
balrogfb599c92008-09-28 23:49:55 +00003249# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003250if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003251 cat > $TMPC << EOF
3252#include <bluetooth/bluetooth.h>
3253int main(void) { return bt_error(0); }
3254EOF
Stefan Weil89138852016-05-16 15:10:20 +02003255 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3256 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003257 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003258 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003259 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003260 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003261 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003262 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003263 fi
balroge820e3f2008-09-30 02:27:44 +00003264 bluez="no"
3265 fi
balrogfb599c92008-09-28 23:49:55 +00003266fi
3267
3268##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003269# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003270
Peter Maydellad04d8c2017-04-03 14:04:15 +01003271if test "$mingw32" = yes; then
3272 glib_req_ver=2.30
3273else
3274 glib_req_ver=2.22
3275fi
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003276glib_modules=gthread-2.0
3277if test "$modules" = yes; then
3278 glib_modules="$glib_modules gmodule-2.0"
3279fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003280
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003281# This workaround is required due to a bug in pkg-config file for glib as it
3282# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3283
3284if test "$static" = yes -a "$mingw32" = yes; then
3285 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3286fi
3287
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003288for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003289 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003290 glib_cflags=$($pkg_config --cflags $i)
3291 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003292 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003293 LIBS="$glib_libs $LIBS"
3294 libs_qga="$glib_libs $libs_qga"
3295 else
3296 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3297 fi
3298done
3299
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003300# Sanity check that the current size_t matches the
3301# size that glib thinks it should be. This catches
3302# problems on multi-arch where people try to build
3303# 32-bit QEMU while pointing at 64-bit glib headers
3304cat > $TMPC <<EOF
3305#include <glib.h>
3306#include <unistd.h>
3307
3308#define QEMU_BUILD_BUG_ON(x) \
3309 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3310
3311int main(void) {
3312 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3313 return 0;
3314}
3315EOF
3316
Stefan Weil5919e032016-04-28 23:33:41 +02003317if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003318 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3319 "You probably need to set PKG_CONFIG_LIBDIR"\
3320 "to point to the right pkg-config files for your"\
3321 "build target"
3322fi
3323
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003324# g_test_trap_subprocess added in 2.38. Used by some tests.
3325glib_subprocess=yes
Marc-André Lureaua0492232017-01-04 21:57:22 +01003326if ! $pkg_config --atleast-version=2.38 glib-2.0; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003327 glib_subprocess=no
3328fi
3329
John Snowbbbf2e02015-03-25 18:57:38 -04003330# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3331cat > $TMPC << EOF
3332#include <glib.h>
3333int main(void) { return 0; }
3334EOF
3335if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3336 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3337 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3338 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3339 fi
3340fi
3341
Fam Zhenge26110c2014-02-10 14:48:57 +08003342##########################################
3343# SHA command probe for modules
3344if test "$modules" = yes; then
3345 shacmd_probe="sha1sum sha1 shasum"
3346 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003347 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003348 shacmd="$c"
3349 break
3350 fi
3351 done
3352 if test "$shacmd" = ""; then
3353 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3354 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003355fi
3356
3357##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003358# pixman support probe
3359
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003360if test "$want_tools" = "no" -a "$softmmu" = "no"; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003361 pixman_cflags=
3362 pixman_libs=
Gerd Hoffmann35c4e862017-09-05 16:01:16 +02003363elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Stefan Weil89138852016-05-16 15:10:20 +02003364 pixman_cflags=$($pkg_config --cflags pixman-1)
3365 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003366else
Gerd Hoffmannc12b6d72017-09-05 16:01:15 +02003367 error_exit "pixman >= 0.21.8 not present." \
3368 "Please install the pixman devel package."
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003369fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003370
3371##########################################
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003372# libmpathpersist probe
3373
3374if test "$mpath" != "no" ; then
3375 cat > $TMPC <<EOF
3376#include <libudev.h>
3377#include <mpath_persist.h>
3378unsigned mpath_mx_alloc_len = 1024;
3379int logsink;
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003380static struct config *multipath_conf;
3381extern struct udev *udev;
3382extern struct config *get_multipath_config(void);
3383extern void put_multipath_config(struct config *conf);
3384struct udev *udev;
3385struct config *get_multipath_config(void) { return multipath_conf; }
3386void put_multipath_config(struct config *conf) { }
3387
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003388int main(void) {
Paolo Bonzinib3f1c8c2017-10-17 20:11:58 +02003389 udev = udev_new();
3390 multipath_conf = mpath_lib_init();
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02003391 return 0;
3392}
3393EOF
3394 if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
3395 mpathpersist=yes
3396 else
3397 mpathpersist=no
3398 fi
3399else
3400 mpathpersist=no
3401fi
3402
3403##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303404# libcap probe
3405
3406if test "$cap" != "no" ; then
3407 cat > $TMPC <<EOF
3408#include <stdio.h>
3409#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003410int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303411EOF
3412 if compile_prog "" "-lcap" ; then
3413 cap=yes
3414 else
3415 cap=no
3416 fi
3417fi
3418
3419##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003420# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003421PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003422
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003423pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003424cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003425#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003426static void *f(void *p) { return NULL; }
3427int main(void) {
3428 pthread_t thread;
3429 pthread_create(&thread, 0, f, 0);
3430 return 0;
3431}
blueswir1414f0da2008-08-15 18:20:52 +00003432EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003433if compile_prog "" "" ; then
3434 pthread=yes
3435else
3436 for pthread_lib in $PTHREADLIBS_LIST; do
3437 if compile_prog "" "$pthread_lib" ; then
3438 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003439 found=no
3440 for lib_entry in $LIBS; do
3441 if test "$lib_entry" = "$pthread_lib"; then
3442 found=yes
3443 break
3444 fi
3445 done
3446 if test "$found" = "no"; then
3447 LIBS="$pthread_lib $LIBS"
3448 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003449 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003450 break
3451 fi
3452 done
3453fi
blueswir1414f0da2008-08-15 18:20:52 +00003454
Anthony Liguori4617e592009-08-25 17:21:56 -05003455if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003456 error_exit "pthread check failed" \
3457 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003458fi
3459
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003460# check for pthread_setname_np
3461pthread_setname_np=no
3462cat > $TMPC << EOF
3463#include <pthread.h>
3464
3465static void *f(void *p) { return NULL; }
3466int main(void)
3467{
3468 pthread_t thread;
3469 pthread_create(&thread, 0, f, 0);
3470 pthread_setname_np(thread, "QEMU");
3471 return 0;
3472}
3473EOF
3474if compile_prog "" "$pthread_lib" ; then
3475 pthread_setname_np=yes
3476fi
3477
aliguoribf9298b2008-12-05 20:05:26 +00003478##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003479# rbd probe
3480if test "$rbd" != "no" ; then
3481 cat > $TMPC <<EOF
3482#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003483#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003484int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003485 rados_t cluster;
3486 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003487 return 0;
3488}
3489EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003490 rbd_libs="-lrbd -lrados"
3491 if compile_prog "" "$rbd_libs" ; then
3492 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003493 else
3494 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003495 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003496 fi
3497 rbd=no
3498 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003499fi
3500
3501##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003502# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003503min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003504if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003505 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003506 libssh2_cflags=$($pkg_config libssh2 --cflags)
3507 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003508 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003509 else
3510 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003511 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003512 fi
3513 libssh2=no
3514 fi
3515fi
3516
3517##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003518# libssh2_sftp_fsync probe
3519
3520if test "$libssh2" = "yes"; then
3521 cat > $TMPC <<EOF
3522#include <stdio.h>
3523#include <libssh2.h>
3524#include <libssh2_sftp.h>
3525int main(void) {
3526 LIBSSH2_SESSION *session;
3527 LIBSSH2_SFTP *sftp;
3528 LIBSSH2_SFTP_HANDLE *sftp_handle;
3529 session = libssh2_session_init ();
3530 sftp = libssh2_sftp_init (session);
3531 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3532 libssh2_sftp_fsync (sftp_handle);
3533 return 0;
3534}
3535EOF
3536 # libssh2_cflags/libssh2_libs defined in previous test.
3537 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3538 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3539 fi
3540fi
3541
3542##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003543# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003544
3545if test "$linux_aio" != "no" ; then
3546 cat > $TMPC <<EOF
3547#include <libaio.h>
3548#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003549#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003550int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3551EOF
3552 if compile_prog "" "-laio" ; then
3553 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003554 else
3555 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003556 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003557 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003558 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003559 fi
3560fi
3561
3562##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003563# TPM passthrough is only on x86 Linux
3564
3565if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3566 tpm_passthrough=$tpm
3567else
3568 tpm_passthrough=no
3569fi
3570
Amarnath Vallurif4ede812017-09-29 14:10:20 +03003571# TPM emulator is for all posix systems
3572if test "$mingw32" != "yes"; then
3573 tpm_emulator=$tpm
3574else
3575 tpm_emulator=no
3576fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003577##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003578# attr probe
3579
3580if test "$attr" != "no" ; then
3581 cat > $TMPC <<EOF
3582#include <stdio.h>
3583#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003584#ifdef CONFIG_LIBATTR
3585#include <attr/xattr.h>
3586#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003587#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003588#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003589int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3590EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003591 if compile_prog "" "" ; then
3592 attr=yes
3593 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003594 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003595 attr=yes
3596 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003597 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003598 else
3599 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003600 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003601 fi
3602 attr=no
3603 fi
3604fi
3605
3606##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003607# iovec probe
3608cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003609#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003610#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003611#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003612int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003613EOF
3614iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003615if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003616 iovec=yes
3617fi
3618
aurel32f652e6a2008-12-16 10:43:48 +00003619##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003620# preadv probe
3621cat > $TMPC <<EOF
3622#include <sys/types.h>
3623#include <sys/uio.h>
3624#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003625int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003626EOF
3627preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003628if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003629 preadv=yes
3630fi
3631
3632##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003633# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003634# fdt support is mandatory for at least some target architectures,
3635# so insist on it if we're building those system emulators.
3636fdt_required=no
3637for target in $target_list; do
3638 case $target in
Paul Burtondf1d8a12016-09-08 15:51:58 +01003639 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003640 fdt_required=yes
3641 ;;
3642 esac
3643done
3644
3645if test "$fdt_required" = "yes"; then
3646 if test "$fdt" = "no"; then
3647 error_exit "fdt disabled but some requested targets require it." \
3648 "You can turn off fdt only if you also disable all the system emulation" \
3649 "targets which need it (by specifying a cut down --target-list)."
3650 fi
3651 fdt=yes
3652fi
3653
Juan Quintela2df87df2009-08-12 18:29:54 +02003654if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003655 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003656 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003657 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003658 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003659#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003660#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003661int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003662EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003663 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003664 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003665 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003666 else
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01003667 # have GIT checkout, so activate dtc submodule
3668 if test -e "${source_path}/.git" ; then
3669 git_submodules="${git_submodules} dtc"
3670 fi
3671 if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
3672 fdt=yes
3673 dtc_internal="yes"
3674 mkdir -p dtc
3675 if [ "$pwd_is_source_path" != "y" ] ; then
3676 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3677 symlink "$source_path/dtc/scripts" "dtc/scripts"
3678 fi
3679 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3680 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3681 elif test "$fdt" = "yes" ; then
3682 # Not a git build & no libfdt found, prompt for system install
3683 error_exit "DTC (libfdt) version >= 1.4.2 not present." \
3684 "Please install the DTC (libfdt) devel package"
3685 else
3686 # don't have and don't want
3687 fdt_libs=
3688 fdt=no
3689 fi
aurel32f652e6a2008-12-16 10:43:48 +00003690 fi
3691fi
3692
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003693libs_softmmu="$libs_softmmu $fdt_libs"
3694
Michael Walle20ff0752011-03-07 23:32:39 +01003695##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003696# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003697
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003698if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003699 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003700 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003701 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3702 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003703 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003704 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3705 gtk_gl="yes"
3706 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003707 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003708 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003709 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003710 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003711 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003712 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003713 opengl_libs=""
3714 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003715 fi
3716fi
3717
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003718if test "$opengl" = "yes"; then
3719 cat > $TMPC << EOF
3720#include <epoxy/egl.h>
3721#ifndef EGL_MESA_image_dma_buf_export
3722# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3723#endif
3724int main(void) { return 0; }
3725EOF
3726 if compile_prog "" "" ; then
3727 opengl_dmabuf=yes
3728 fi
3729fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003730
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003731
Bharata B Raoeb100392012-09-24 14:42:45 +05303732##########################################
3733# glusterfs probe
3734if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003735 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303736 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003737 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3738 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003739 if $pkg_config --atleast-version=4 glusterfs-api; then
3740 glusterfs_xlator_opt="yes"
3741 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003742 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303743 glusterfs_discard="yes"
3744 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303745 if $pkg_config --atleast-version=6 glusterfs-api; then
Niels de Vosdf3a4292017-05-28 12:01:14 +05303746 glusterfs_fallocate="yes"
Bharata B Rao7c815372013-12-21 14:51:25 +05303747 glusterfs_zerofill="yes"
3748 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303749 else
3750 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003751 feature_not_found "GlusterFS backend support" \
3752 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303753 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303754 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303755 fi
3756fi
3757
aurel3239386ac2009-04-15 19:48:17 +00003758# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003759# emulator. This is done because older glibc versions don't
3760# have syscall stubs for these implemented. In that case we
3761# don't provide them even if kernel supports them.
3762#
3763inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003764cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003765#include <sys/inotify.h>
3766
3767int
3768main(void)
3769{
3770 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003771 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003772}
3773EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003774if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003775 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003776fi
3777
Riku Voipioc05c7a72010-03-26 15:25:11 +00003778inotify1=no
3779cat > $TMPC << EOF
3780#include <sys/inotify.h>
3781
3782int
3783main(void)
3784{
3785 /* try to start inotify */
3786 return inotify_init1(0);
3787}
3788EOF
3789if compile_prog "" "" ; then
3790 inotify1=yes
3791fi
3792
Riku Voipio099d6b02009-05-05 12:10:04 +03003793# check if pipe2 is there
3794pipe2=no
3795cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003796#include <unistd.h>
3797#include <fcntl.h>
3798
3799int main(void)
3800{
3801 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003802 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003803}
3804EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003805if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003806 pipe2=yes
3807fi
3808
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003809# check if accept4 is there
3810accept4=no
3811cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003812#include <sys/socket.h>
3813#include <stddef.h>
3814
3815int main(void)
3816{
3817 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3818 return 0;
3819}
3820EOF
3821if compile_prog "" "" ; then
3822 accept4=yes
3823fi
3824
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303825# check if tee/splice is there. vmsplice was added same time.
3826splice=no
3827cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303828#include <unistd.h>
3829#include <fcntl.h>
3830#include <limits.h>
3831
3832int main(void)
3833{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003834 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303835 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3836 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3837 return 0;
3838}
3839EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003840if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303841 splice=yes
3842fi
3843
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003844##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003845# libnuma probe
3846
3847if test "$numa" != "no" ; then
3848 cat > $TMPC << EOF
3849#include <numa.h>
3850int main(void) { return numa_available(); }
3851EOF
3852
3853 if compile_prog "" "-lnuma" ; then
3854 numa=yes
3855 libs_softmmu="-lnuma $libs_softmmu"
3856 else
3857 if test "$numa" = "yes" ; then
3858 feature_not_found "numa" "install numactl devel"
3859 fi
3860 numa=no
3861 fi
3862fi
3863
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003864if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3865 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3866 exit 1
3867fi
3868
Yang Zhong5a22ab72017-12-20 21:16:46 +08003869# Even if malloc_trim() is available, these non-libc memory allocators
3870# do not support it.
3871if test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then
3872 if test "$malloc_trim" = "yes" ; then
3873 echo "Disabling malloc_trim with non-libc memory allocator"
3874 fi
3875 malloc_trim="no"
3876fi
3877
3878#######################################
3879# malloc_trim
3880
3881if test "$malloc_trim" != "no" ; then
3882 cat > $TMPC << EOF
3883#include <malloc.h>
3884int main(void) { malloc_trim(0); return 0; }
3885EOF
3886 if compile_prog "" "" ; then
3887 malloc_trim="yes"
3888 else
3889 malloc_trim="no"
3890 fi
3891fi
3892
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003893##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003894# tcmalloc probe
3895
3896if test "$tcmalloc" = "yes" ; then
3897 cat > $TMPC << EOF
3898#include <stdlib.h>
3899int main(void) { malloc(1); return 0; }
3900EOF
3901
3902 if compile_prog "" "-ltcmalloc" ; then
3903 LIBS="-ltcmalloc $LIBS"
3904 else
3905 feature_not_found "tcmalloc" "install gperftools devel"
3906 fi
3907fi
3908
3909##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003910# jemalloc probe
3911
3912if test "$jemalloc" = "yes" ; then
3913 cat > $TMPC << EOF
3914#include <stdlib.h>
3915int main(void) { malloc(1); return 0; }
3916EOF
3917
3918 if compile_prog "" "-ljemalloc" ; then
3919 LIBS="-ljemalloc $LIBS"
3920 else
3921 feature_not_found "jemalloc" "install jemalloc devel"
3922 fi
3923fi
3924
3925##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003926# signalfd probe
3927signalfd="no"
3928cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003929#include <unistd.h>
3930#include <sys/syscall.h>
3931#include <signal.h>
3932int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3933EOF
3934
3935if compile_prog "" "" ; then
3936 signalfd=yes
3937fi
3938
Riku Voipioc2882b92009-08-12 15:08:24 +03003939# check if eventfd is supported
3940eventfd=no
3941cat > $TMPC << EOF
3942#include <sys/eventfd.h>
3943
3944int main(void)
3945{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003946 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003947}
3948EOF
3949if compile_prog "" "" ; then
3950 eventfd=yes
3951fi
3952
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003953# check if memfd is supported
3954memfd=no
3955cat > $TMPC << EOF
Paolo Bonzini75e5b702017-11-28 11:51:27 +01003956#include <sys/mman.h>
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003957
3958int main(void)
3959{
3960 return memfd_create("foo", MFD_ALLOW_SEALING);
3961}
3962EOF
3963if compile_prog "" "" ; then
3964 memfd=yes
3965fi
3966
3967
3968
Ulrich Hechtd0927932009-09-17 20:22:14 +03003969# check for fallocate
3970fallocate=no
3971cat > $TMPC << EOF
3972#include <fcntl.h>
3973
3974int main(void)
3975{
3976 fallocate(0, 0, 0, 0);
3977 return 0;
3978}
3979EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003980if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003981 fallocate=yes
3982fi
3983
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003984# check for fallocate hole punching
3985fallocate_punch_hole=no
3986cat > $TMPC << EOF
3987#include <fcntl.h>
3988#include <linux/falloc.h>
3989
3990int main(void)
3991{
3992 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3993 return 0;
3994}
3995EOF
3996if compile_prog "" "" ; then
3997 fallocate_punch_hole=yes
3998fi
3999
Denis V. Lunevb953f072015-01-30 11:42:14 +03004000# check that fallocate supports range zeroing inside the file
4001fallocate_zero_range=no
4002cat > $TMPC << EOF
4003#include <fcntl.h>
4004#include <linux/falloc.h>
4005
4006int main(void)
4007{
4008 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
4009 return 0;
4010}
4011EOF
4012if compile_prog "" "" ; then
4013 fallocate_zero_range=yes
4014fi
4015
Kevin Wolfed911432014-09-29 17:12:59 +02004016# check for posix_fallocate
4017posix_fallocate=no
4018cat > $TMPC << EOF
4019#include <fcntl.h>
4020
4021int main(void)
4022{
4023 posix_fallocate(0, 0, 0);
4024 return 0;
4025}
4026EOF
4027if compile_prog "" "" ; then
4028 posix_fallocate=yes
4029fi
4030
Peter Maydellc727f472011-01-06 11:05:10 +00004031# check for sync_file_range
4032sync_file_range=no
4033cat > $TMPC << EOF
4034#include <fcntl.h>
4035
4036int main(void)
4037{
4038 sync_file_range(0, 0, 0, 0);
4039 return 0;
4040}
4041EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004042if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00004043 sync_file_range=yes
4044fi
4045
Peter Maydelldace20d2011-01-10 13:11:24 +00004046# check for linux/fiemap.h and FS_IOC_FIEMAP
4047fiemap=no
4048cat > $TMPC << EOF
4049#include <sys/ioctl.h>
4050#include <linux/fs.h>
4051#include <linux/fiemap.h>
4052
4053int main(void)
4054{
4055 ioctl(0, FS_IOC_FIEMAP, 0);
4056 return 0;
4057}
4058EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004059if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00004060 fiemap=yes
4061fi
4062
Ulrich Hechtd0927932009-09-17 20:22:14 +03004063# check for dup3
4064dup3=no
4065cat > $TMPC << EOF
4066#include <unistd.h>
4067
4068int main(void)
4069{
4070 dup3(0, 0, 0);
4071 return 0;
4072}
4073EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01004074if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03004075 dup3=yes
4076fi
4077
Alex Bligh4e0c6522013-08-21 16:02:43 +01004078# check for ppoll support
4079ppoll=no
4080cat > $TMPC << EOF
4081#include <poll.h>
4082
4083int main(void)
4084{
4085 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
4086 ppoll(&pfd, 1, 0, 0);
4087 return 0;
4088}
4089EOF
4090if compile_prog "" "" ; then
4091 ppoll=yes
4092fi
4093
Alex Blighcd758dd2013-08-21 16:02:44 +01004094# check for prctl(PR_SET_TIMERSLACK , ... ) support
4095prctl_pr_set_timerslack=no
4096cat > $TMPC << EOF
4097#include <sys/prctl.h>
4098
4099int main(void)
4100{
4101 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
4102 return 0;
4103}
4104EOF
4105if compile_prog "" "" ; then
4106 prctl_pr_set_timerslack=yes
4107fi
4108
Peter Maydell3b6edd12011-02-15 18:35:05 +00004109# check for epoll support
4110epoll=no
4111cat > $TMPC << EOF
4112#include <sys/epoll.h>
4113
4114int main(void)
4115{
4116 epoll_create(0);
4117 return 0;
4118}
4119EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004120if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004121 epoll=yes
4122fi
4123
Peter Maydell227f0212016-06-06 19:58:11 +01004124# epoll_create1 is a later addition
4125# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00004126epoll_create1=no
4127cat > $TMPC << EOF
4128#include <sys/epoll.h>
4129
4130int main(void)
4131{
Peter Maydell19e83f62011-04-26 16:56:40 +01004132 /* Note that we use epoll_create1 as a value, not as
4133 * a function being called. This is necessary so that on
4134 * old SPARC glibc versions where the function was present in
4135 * the library but not declared in the header file we will
4136 * fail the configure check. (Otherwise we will get a compiler
4137 * warning but not an error, and will proceed to fail the
4138 * qemu compile where we compile with -Werror.)
4139 */
Blue Swirlc075a722012-08-09 20:21:25 +00004140 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00004141}
4142EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01004143if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00004144 epoll_create1=yes
4145fi
4146
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004147# check for sendfile support
4148sendfile=no
4149cat > $TMPC << EOF
4150#include <sys/sendfile.h>
4151
4152int main(void)
4153{
4154 return sendfile(0, 0, 0, 0);
4155}
4156EOF
4157if compile_prog "" "" ; then
4158 sendfile=yes
4159fi
4160
Riku Voipio51834342014-06-22 11:25:42 +01004161# check for timerfd support (glibc 2.8 and newer)
4162timerfd=no
4163cat > $TMPC << EOF
4164#include <sys/timerfd.h>
4165
4166int main(void)
4167{
4168 return(timerfd_create(CLOCK_REALTIME, 0));
4169}
4170EOF
4171if compile_prog "" "" ; then
4172 timerfd=yes
4173fi
4174
Riku Voipio9af5c902014-08-12 15:58:57 +03004175# check for setns and unshare support
4176setns=no
4177cat > $TMPC << EOF
4178#include <sched.h>
4179
4180int main(void)
4181{
4182 int ret;
4183 ret = setns(0, 0);
4184 ret = unshare(0);
4185 return ret;
4186}
4187EOF
4188if compile_prog "" "" ; then
4189 setns=yes
4190fi
4191
Aleksandar Markovic38860a02016-10-10 13:23:29 +02004192# clock_adjtime probe
4193clock_adjtime=no
4194cat > $TMPC <<EOF
4195#include <time.h>
4196
4197int main(void)
4198{
4199 return clock_adjtime(0, 0);
4200}
4201EOF
4202clock_adjtime=no
4203if compile_prog "" "" ; then
4204 clock_adjtime=yes
4205fi
4206
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02004207# syncfs probe
4208syncfs=no
4209cat > $TMPC <<EOF
4210#include <unistd.h>
4211
4212int main(void)
4213{
4214 return syncfs(0);
4215}
4216EOF
4217syncfs=no
4218if compile_prog "" "" ; then
4219 syncfs=yes
4220fi
4221
pbrookcc8ae6d2006-04-23 17:57:59 +00004222# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004223if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004224 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004225 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004226 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004227 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004228 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004229 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004230 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004231 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004232fi
4233
Stefan Weilf514f412009-10-11 12:44:07 +02004234# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004235byteswap_h=no
4236cat > $TMPC << EOF
4237#include <byteswap.h>
4238int main(void) { return bswap_32(0); }
4239EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004240if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004241 byteswap_h=yes
4242fi
4243
Stefan Weil75f13592013-01-05 12:17:38 +01004244# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004245bswap_h=no
4246cat > $TMPC << EOF
4247#include <sys/endian.h>
4248#include <sys/types.h>
4249#include <machine/bswap.h>
4250int main(void) { return bswap32(0); }
4251EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004252if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004253 bswap_h=yes
4254fi
4255
aliguorida93a1f2008-12-12 20:02:52 +00004256##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004257# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004258if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004259 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004260 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004261 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4262 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004263 else
4264 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004265 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004266 fi
4267 libiscsi="no"
4268 fi
4269fi
4270
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004271##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004272# Do we need libm
4273cat > $TMPC << EOF
4274#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004275int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004276EOF
4277if compile_prog "" "" ; then
4278 :
4279elif compile_prog "" "-lm" ; then
4280 LIBS="-lm $LIBS"
4281 libs_qga="-lm $libs_qga"
4282else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004283 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004284fi
4285
4286##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004287# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004288# uClibc provides 2 versions of clock_gettime(), one with realtime
4289# support and one without. This means that the clock_gettime() don't
4290# need -lrt. We still need it for timer_create() so we check for this
4291# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004292cat > $TMPC <<EOF
4293#include <signal.h>
4294#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004295int main(void) {
4296 timer_create(CLOCK_REALTIME, NULL, NULL);
4297 return clock_gettime(CLOCK_REALTIME, NULL);
4298}
aliguorida93a1f2008-12-12 20:02:52 +00004299EOF
4300
Juan Quintela52166aa2009-08-03 14:46:03 +02004301if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004302 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004303# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004304elif compile_prog "" "$pthread_lib -lrt" ; then
4305 LIBS="$LIBS -lrt"
4306 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004307fi
4308
Blue Swirl31ff5042009-09-12 12:33:07 +00004309if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Peter Maydell78723752017-09-04 18:19:00 +01004310 "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004311 libs_softmmu="-lutil $libs_softmmu"
4312fi
4313
Blue Swirlde5071c2009-09-12 09:58:46 +00004314##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004315# spice probe
4316if test "$spice" != "no" ; then
4317 cat > $TMPC << EOF
4318#include <spice.h>
4319int main(void) { spice_server_new(); return 0; }
4320EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004321 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4322 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004323 if $pkg_config --atleast-version=0.12.0 spice-server && \
4324 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004325 compile_prog "$spice_cflags" "$spice_libs" ; then
4326 spice="yes"
4327 libs_softmmu="$libs_softmmu $spice_libs"
4328 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004329 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4330 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004331 else
4332 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004333 feature_not_found "spice" \
4334 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004335 fi
4336 spice="no"
4337 fi
4338fi
4339
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004340# check for smartcard support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004341if test "$smartcard" != "no"; then
4342 if $pkg_config libcacard; then
4343 libcacard_cflags=$($pkg_config --cflags libcacard)
4344 libcacard_libs=$($pkg_config --libs libcacard)
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004345 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004346 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004347 if test "$smartcard" = "yes"; then
4348 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004349 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004350 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004351 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004352fi
4353
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004354# check for libusb
4355if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004356 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004357 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004358 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4359 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004360 else
4361 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004362 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004363 fi
4364 libusb="no"
4365 fi
4366fi
4367
Hans de Goede69354a82011-07-19 11:04:10 +02004368# check for usbredirparser for usb network redirection support
4369if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004370 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004371 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004372 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4373 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004374 else
4375 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004376 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004377 fi
4378 usb_redir="no"
4379 fi
4380fi
4381
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004382##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004383# check if we have VSS SDK headers for win
4384
4385if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4386 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004387 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004388 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4389 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004390 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004391 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4392 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004393 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004394 esac
4395 cat > $TMPC << EOF
4396#define __MIDL_user_allocate_free_DEFINED__
4397#include <inc/win2003/vss.h>
4398int main(void) { return VSS_CTX_BACKUP; }
4399EOF
4400 if compile_prog "$vss_win32_include" "" ; then
4401 guest_agent_with_vss="yes"
4402 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004403 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004404 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004405 else
4406 if test "$vss_win32_sdk" != "" ; then
4407 echo "ERROR: Please download and install Microsoft VSS SDK:"
4408 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4409 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4410 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4411 echo "ERROR: The headers are extracted in the directory \`inc'."
4412 feature_not_found "VSS support"
4413 fi
4414 guest_agent_with_vss="no"
4415 fi
4416fi
4417
4418##########################################
4419# lookup Windows platform SDK (if not specified)
4420# The SDK is needed only to build .tlb (type library) file of guest agent
4421# VSS provider from the source. It is usually unnecessary because the
4422# pre-compiled .tlb file is included.
4423
4424if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4425 if test -z "$win_sdk"; then
4426 programfiles="$PROGRAMFILES"
4427 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4428 if test -n "$programfiles"; then
4429 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4430 else
4431 feature_not_found "Windows SDK"
4432 fi
4433 elif test "$win_sdk" = "no"; then
4434 win_sdk=""
4435 fi
4436fi
4437
4438##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004439# check if mingw environment provides a recent ntddscsi.h
4440if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4441 cat > $TMPC << EOF
4442#include <windows.h>
4443#include <ntddscsi.h>
4444int main(void) {
4445#if !defined(IOCTL_SCSI_GET_ADDRESS)
4446#error Missing required ioctl definitions
4447#endif
4448 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4449 return addr.Lun;
4450}
4451EOF
4452 if compile_prog "" "" ; then
4453 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004454 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004455 fi
4456fi
4457
4458##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004459# virgl renderer probe
4460
4461if test "$virglrenderer" != "no" ; then
4462 cat > $TMPC << EOF
4463#include <virglrenderer.h>
4464int main(void) { virgl_renderer_poll(); return 0; }
4465EOF
4466 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4467 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4468 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4469 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4470 virglrenderer="yes"
4471 else
4472 if test "$virglrenderer" = "yes" ; then
4473 feature_not_found "virglrenderer"
4474 fi
4475 virglrenderer="no"
4476 fi
4477fi
4478
4479##########################################
Richard Henderson8ca80762017-09-14 09:41:12 -07004480# capstone
4481
Richard Hendersone219c492017-09-28 09:01:23 -07004482case "$capstone" in
4483 "" | yes)
4484 if $pkg_config capstone; then
4485 capstone=system
4486 elif test -e "${source_path}/.git" ; then
4487 capstone=git
4488 elif test -e "${source_path}/capstone/Makefile" ; then
4489 capstone=internal
4490 elif test -z "$capstone" ; then
4491 capstone=no
4492 else
4493 feature_not_found "capstone" "Install capstone devel or git submodule"
4494 fi
4495 ;;
4496
4497 system)
4498 if ! $pkg_config capstone; then
4499 feature_not_found "capstone" "Install capstone devel"
4500 fi
4501 ;;
4502esac
4503
4504case "$capstone" in
4505 git | internal)
4506 if test "$capstone" = git; then
4507 git_submodules="${git_submodules} capstone"
4508 fi
4509 mkdir -p capstone
4510 QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include"
4511 if test "$mingw32" = "yes"; then
4512 LIBCAPSTONE=capstone.lib
4513 else
4514 LIBCAPSTONE=libcapstone.a
4515 fi
4516 LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS"
4517 ;;
4518
4519 system)
Richard Henderson8ca80762017-09-14 09:41:12 -07004520 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)"
4521 LIBS="$($pkg_config --libs capstone) $LIBS"
Richard Hendersone219c492017-09-28 09:01:23 -07004522 ;;
4523
4524 no)
4525 ;;
4526 *)
4527 error_exit "Unknown state for capstone: $capstone"
4528 ;;
4529esac
Richard Henderson8ca80762017-09-14 09:41:12 -07004530
4531##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004532# check if we have fdatasync
4533
4534fdatasync=no
4535cat > $TMPC << EOF
4536#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004537int main(void) {
4538#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4539return fdatasync(0);
4540#else
Stefan Weile172fe12012-04-06 21:33:20 +02004541#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004542#endif
4543}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004544EOF
4545if compile_prog "" "" ; then
4546 fdatasync=yes
4547fi
4548
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004549##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004550# check if we have madvise
4551
4552madvise=no
4553cat > $TMPC << EOF
4554#include <sys/types.h>
4555#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004556#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004557int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4558EOF
4559if compile_prog "" "" ; then
4560 madvise=yes
4561fi
4562
4563##########################################
4564# check if we have posix_madvise
4565
4566posix_madvise=no
4567cat > $TMPC << EOF
4568#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004569#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004570int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4571EOF
4572if compile_prog "" "" ; then
4573 posix_madvise=yes
4574fi
4575
4576##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004577# check if we have posix_syslog
4578
4579posix_syslog=no
4580cat > $TMPC << EOF
4581#include <syslog.h>
4582int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4583EOF
4584if compile_prog "" "" ; then
4585 posix_syslog=yes
4586fi
4587
4588##########################################
Peter Maydell401bc052017-09-05 13:19:32 +01004589# check if we have sem_timedwait
4590
4591sem_timedwait=no
4592cat > $TMPC << EOF
4593#include <semaphore.h>
4594int main(void) { return sem_timedwait(0, 0); }
4595EOF
4596if compile_prog "" "" ; then
4597 sem_timedwait=yes
4598fi
4599
4600##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004601# check if trace backend exists
4602
Lluís Vilanova5b808272014-05-27 15:02:14 +02004603$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004604if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004605 error_exit "invalid trace backends" \
4606 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004607fi
4608
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004609##########################################
4610# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004611if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004612 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004613#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004614int main(void) { return 0; }
4615EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004616 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004617 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004618 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004619 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004620 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004621 fi
4622 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004623 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004624 else
4625 urcu_bp_libs="-lurcu-bp"
4626 fi
4627
4628 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4629 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004630 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004631 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004632 fi
4633fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004634
4635##########################################
4636# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004637if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004638 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004639 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004640 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004641 trace_backend_stap="no"
4642 if has 'stap' ; then
4643 trace_backend_stap="yes"
4644 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004645fi
4646
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004647##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004648# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304649
Peter Maydell7c2acc72013-04-08 12:11:27 +01004650# We prefer ucontext, but it's not always possible. The fallback
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004651# is sigcontext. On Windows the only valid backend is the Windows
4652# specific one.
Peter Maydell7c2acc72013-04-08 12:11:27 +01004653
4654ucontext_works=no
4655if test "$darwin" != "yes"; then
4656 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304657#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004658#ifdef __stub_makecontext
4659#error Ignoring glibc stub makecontext which will always fail
4660#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004661int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304662EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004663 if compile_prog "" "" ; then
4664 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304665 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004666fi
4667
4668if test "$coroutine" = ""; then
4669 if test "$mingw32" = "yes"; then
4670 coroutine=win32
4671 elif test "$ucontext_works" = "yes"; then
4672 coroutine=ucontext
4673 else
4674 coroutine=sigaltstack
4675 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004676else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004677 case $coroutine in
4678 windows)
4679 if test "$mingw32" != "yes"; then
4680 error_exit "'windows' coroutine backend only valid for Windows"
4681 fi
4682 # Unfortunately the user visible backend name doesn't match the
4683 # coroutine-*.c filename for this case, so we have to adjust it here.
4684 coroutine=win32
4685 ;;
4686 ucontext)
4687 if test "$ucontext_works" != "yes"; then
4688 feature_not_found "ucontext"
4689 fi
4690 ;;
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004691 sigaltstack)
Peter Maydell7c2acc72013-04-08 12:11:27 +01004692 if test "$mingw32" = "yes"; then
4693 error_exit "only the 'windows' coroutine backend is valid for Windows"
4694 fi
4695 ;;
4696 *)
4697 error_exit "unknown coroutine backend $coroutine"
4698 ;;
4699 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304700fi
4701
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004702if test "$coroutine_pool" = ""; then
Daniel P. Berrange33c53c52017-04-28 13:24:44 +01004703 coroutine_pool=yes
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004704fi
4705
Peter Lieven7d992e42016-09-27 11:58:45 +02004706if test "$debug_stack_usage" = "yes"; then
4707 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4708 error_exit "stack usage debugging is not supported for $cpu"
4709 fi
4710 if test "$coroutine_pool" = "yes"; then
4711 echo "WARN: disabling coroutine pool for stack usage debugging"
4712 coroutine_pool=no
4713 fi
4714fi
4715
4716
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304717##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304718# check if we have open_by_handle_at
4719
Stefan Weil4e1797f2012-06-18 22:11:06 +02004720open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304721cat > $TMPC << EOF
4722#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004723#if !defined(AT_EMPTY_PATH)
4724# error missing definition
4725#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004726int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004727#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304728EOF
4729if compile_prog "" "" ; then
4730 open_by_handle_at=yes
4731fi
4732
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304733########################################
4734# check if we have linux/magic.h
4735
4736linux_magic_h=no
4737cat > $TMPC << EOF
4738#include <linux/magic.h>
4739int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004740 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304741}
4742EOF
4743if compile_prog "" "" ; then
4744 linux_magic_h=yes
4745fi
4746
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004747########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004748# check whether we can disable warning option with a pragma (this is needed
4749# to silence warnings in the headers of some versions of external libraries).
4750# This test has to be compiled with -Werror as otherwise an unknown pragma is
4751# only a warning.
4752#
4753# If we can't selectively disable warning in the code, disable -Werror so that
4754# the build doesn't fail anyway.
4755
Peter Maydell06d71fa2012-07-30 16:13:07 +01004756pragma_disable_unused_but_set=no
4757cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004758#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004759#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004760#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004761#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004762
Peter Maydell06d71fa2012-07-30 16:13:07 +01004763int main(void) {
4764 return 0;
4765}
4766EOF
4767if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004768 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004769else
4770 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004771fi
4772
4773########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004774# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004775
4776valgrind_h=no
4777cat > $TMPC << EOF
4778#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004779int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004780 return 0;
4781}
4782EOF
4783if compile_prog "" "" ; then
4784 valgrind_h=yes
4785fi
4786
4787########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004788# check if environ is declared
4789
4790has_environ=no
4791cat > $TMPC << EOF
4792#include <unistd.h>
4793int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004794 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004795 return 0;
4796}
4797EOF
4798if compile_prog "" "" ; then
4799 has_environ=yes
4800fi
4801
Richard Henderson76a347e2012-12-28 14:17:02 -08004802########################################
4803# check if cpuid.h is usable.
4804
Richard Henderson76a347e2012-12-28 14:17:02 -08004805cat > $TMPC << EOF
4806#include <cpuid.h>
4807int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004808 unsigned a, b, c, d;
4809 int max = __get_cpuid_max(0, 0);
4810
4811 if (max >= 1) {
4812 __cpuid(1, a, b, c, d);
4813 }
4814
4815 if (max >= 7) {
4816 __cpuid_count(7, 0, a, b, c, d);
4817 }
4818
4819 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004820}
4821EOF
4822if compile_prog "" "" ; then
4823 cpuid_h=yes
4824fi
4825
Richard Henderson5dd89902017-07-18 18:40:18 -10004826##########################################
4827# avx2 optimization requirement check
4828#
4829# There is no point enabling this if cpuid.h is not usable,
4830# since we won't be able to select the new routines.
4831
4832if test $cpuid_h = yes; then
4833 cat > $TMPC << EOF
4834#pragma GCC push_options
4835#pragma GCC target("avx2")
4836#include <cpuid.h>
4837#include <immintrin.h>
4838static int bar(void *a) {
4839 __m256i x = *(__m256i *)a;
4840 return _mm256_testz_si256(x, x);
4841}
4842int main(int argc, char *argv[]) { return bar(argv[0]); }
4843EOF
4844 if compile_object "" ; then
4845 avx2_opt="yes"
4846 fi
4847fi
4848
Richard Hendersonf5401662013-02-16 12:46:59 -08004849########################################
4850# check if __[u]int128_t is usable.
4851
4852int128=no
4853cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004854#if defined(__clang_major__) && defined(__clang_minor__)
4855# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4856# error __int128_t does not work in CLANG before 3.2
4857# endif
4858#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004859__int128_t a;
4860__uint128_t b;
4861int main (void) {
4862 a = a + b;
4863 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004864 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004865 return 0;
4866}
4867EOF
4868if compile_prog "" "" ; then
4869 int128=yes
4870fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004871
Richard Henderson7ebee432016-06-29 21:10:59 -07004872#########################################
4873# See if 128-bit atomic operations are supported.
4874
4875atomic128=no
4876if test "$int128" = "yes"; then
4877 cat > $TMPC << EOF
4878int main(void)
4879{
4880 unsigned __int128 x = 0, y = 0;
4881 y = __atomic_load_16(&x, 0);
4882 __atomic_store_16(&x, y, 0);
4883 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4884 return 0;
4885}
4886EOF
4887 if compile_prog "" "" ; then
4888 atomic128=yes
4889 fi
4890fi
4891
Richard Hendersondf79b992016-09-02 12:23:57 -07004892#########################################
4893# See if 64-bit atomic operations are supported.
4894# Note that without __atomic builtins, we can only
4895# assume atomic loads/stores max at pointer size.
4896
4897cat > $TMPC << EOF
4898#include <stdint.h>
4899int main(void)
4900{
4901 uint64_t x = 0, y = 0;
4902#ifdef __ATOMIC_RELAXED
4903 y = __atomic_load_8(&x, 0);
4904 __atomic_store_8(&x, y, 0);
4905 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4906 __atomic_exchange_8(&x, y, 0);
4907 __atomic_fetch_add_8(&x, y, 0);
4908#else
4909 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4910 __sync_lock_test_and_set(&x, y);
4911 __sync_val_compare_and_swap(&x, y, 0);
4912 __sync_fetch_and_add(&x, y);
4913#endif
4914 return 0;
4915}
4916EOF
4917if compile_prog "" "" ; then
4918 atomic64=yes
4919fi
4920
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004921########################################
4922# check if getauxval is available.
4923
4924getauxval=no
4925cat > $TMPC << EOF
4926#include <sys/auxv.h>
4927int main(void) {
4928 return getauxval(AT_HWCAP) == 0;
4929}
4930EOF
4931if compile_prog "" "" ; then
4932 getauxval=yes
4933fi
4934
John Snowfd0e6052015-03-25 18:57:39 -04004935########################################
4936# check if ccache is interfering with
4937# semantic analysis of macros
4938
John Snow5e4dfd32015-10-28 13:56:40 -04004939unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004940ccache_cpp2=no
4941cat > $TMPC << EOF
4942static const int Z = 1;
4943#define fn() ({ Z; })
4944#define TAUT(X) ((X) == Z)
4945#define PAREN(X, Y) (X == Y)
4946#define ID(X) (X)
4947int main(int argc, char *argv[])
4948{
4949 int x = 0, y = 0;
4950 x = ID(x);
4951 x = fn();
4952 fn();
4953 if (PAREN(x, y)) return 0;
4954 if (TAUT(Z)) return 0;
4955 return 0;
4956}
4957EOF
4958
4959if ! compile_object "-Werror"; then
4960 ccache_cpp2=yes
4961fi
4962
John Snowb553a042015-11-03 15:43:42 -05004963#################################################
4964# clang does not support glibc + FORTIFY_SOURCE.
4965
4966if test "$fortify_source" != "no"; then
4967 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4968 fortify_source="no";
Peter Maydelle1890912017-06-26 16:25:24 +01004969 elif test -n "$cxx" && has $cxx &&
John Snowcfcc7c12015-11-12 11:29:49 -05004970 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004971 fortify_source="no";
4972 else
4973 fortify_source="yes"
4974 fi
4975fi
4976
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304977##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04004978# check if struct fsxattr is available via linux/fs.h
4979
4980have_fsxattr=no
4981cat > $TMPC << EOF
4982#include <linux/fs.h>
4983struct fsxattr foo;
4984int main(void) {
4985 return 0;
4986}
4987EOF
4988if compile_prog "" "" ; then
4989 have_fsxattr=yes
4990fi
4991
Peter Maydellb66e10e2016-06-08 18:34:32 +01004992##########################################
4993# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02004994have_rtnetlink=no
4995cat > $TMPC << EOF
4996#include <linux/rtnetlink.h>
4997int main(void) {
4998 return IFLA_PROTO_DOWN;
4999}
5000EOF
5001if compile_prog "" "" ; then
5002 have_rtnetlink=yes
5003fi
5004
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01005005##########################################
5006# check for usable AF_VSOCK environment
5007have_af_vsock=no
5008cat > $TMPC << EOF
5009#include <errno.h>
5010#include <sys/types.h>
5011#include <sys/socket.h>
5012#if !defined(AF_VSOCK)
5013# error missing AF_VSOCK flag
5014#endif
5015#include <linux/vm_sockets.h>
5016int main(void) {
5017 int sock, ret;
5018 struct sockaddr_vm svm;
5019 socklen_t len = sizeof(svm);
5020 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
5021 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
5022 if ((ret == -1) && (errno == ENOTCONN)) {
5023 return 0;
5024 }
5025 return -1;
5026}
5027EOF
5028if compile_prog "" "" ; then
5029 have_af_vsock=yes
5030fi
5031
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005032##########################################
5033# check for usable AF_ALG environment
5034hava_afalg=no
5035cat > $TMPC << EOF
5036#include <errno.h>
5037#include <sys/types.h>
5038#include <sys/socket.h>
5039#include <linux/if_alg.h>
5040int main(void) {
5041 int sock;
5042 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
5043 return sock;
5044}
5045EOF
5046if compile_prog "" "" ; then
5047 have_afalg=yes
5048fi
5049if test "$crypto_afalg" = "yes"
5050then
5051 if test "$have_afalg" != "yes"
5052 then
5053 error_exit "AF_ALG requested but could not be detected"
5054 fi
5055fi
5056
5057
James Clarke6969ec62016-06-06 12:02:50 +01005058#################################################
5059# Sparc implicitly links with --relax, which is
5060# incompatible with -r, so --no-relax should be
5061# given. It does no harm to give it on other
5062# platforms too.
5063
5064# Note: the prototype is needed since QEMU_CFLAGS
5065# contains -Wmissing-prototypes
5066cat > $TMPC << EOF
5067extern int foo(void);
5068int foo(void) { return 0; }
5069EOF
5070if ! compile_object ""; then
5071 error_exit "Failed to compile object file for LD_REL_FLAGS test"
5072fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01005073for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
5074 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
5075 LD_REL_FLAGS=$i
5076 break
5077 fi
5078done
5079if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
5080 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01005081fi
5082
Jan Vesely277abf12016-04-29 13:15:23 -04005083##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05005084# check for sysmacros.h
5085
5086have_sysmacros=no
5087cat > $TMPC << EOF
5088#include <sys/sysmacros.h>
5089int main(void) {
5090 return makedev(0, 0);
5091}
5092EOF
5093if compile_prog "" "" ; then
5094 have_sysmacros=yes
5095fi
5096
5097##########################################
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005098# Veritas HyperScale block driver VxHS
5099# Check if libvxhs is installed
5100
5101if test "$vxhs" != "no" ; then
5102 cat > $TMPC <<EOF
5103#include <stdint.h>
5104#include <qnio/qnio_api.h>
5105
5106void *vxhs_callback;
5107
5108int main(void) {
5109 iio_init(QNIO_VERSION, vxhs_callback);
5110 return 0;
5111}
5112EOF
5113 vxhs_libs="-lvxhs -lssl"
5114 if compile_prog "" "$vxhs_libs" ; then
5115 vxhs=yes
5116 else
5117 if test "$vxhs" = "yes" ; then
5118 feature_not_found "vxhs block device" "Install libvxhs See github"
5119 fi
5120 vxhs=no
5121 fi
5122fi
5123
5124##########################################
Andreas Grapentin49e00a12017-03-14 17:59:53 +01005125# check for _Static_assert()
5126
5127have_static_assert=no
5128cat > $TMPC << EOF
5129_Static_assert(1, "success");
5130int main(void) {
5131 return 0;
5132}
5133EOF
5134if compile_prog "" "" ; then
5135 have_static_assert=yes
5136fi
5137
5138##########################################
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02005139# check for utmpx.h, it is missing e.g. on OpenBSD
5140
5141have_utmpx=no
5142cat > $TMPC << EOF
5143#include <utmpx.h>
5144struct utmpx user_info;
5145int main(void) {
5146 return 0;
5147}
5148EOF
5149if compile_prog "" "" ; then
5150 have_utmpx=yes
5151fi
5152
5153##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02005154# End of CC checks
5155# After here, no more $cc or $ld runs
5156
Blue Swirl1d728c32012-05-01 18:45:39 +00005157if test "$gcov" = "yes" ; then
5158 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
5159 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05005160elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02005161 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00005162elif test "$debug" = "no"; then
5163 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005164fi
Juan Quintelaa316e372009-09-30 01:10:55 +02005165
Peter Lieven6542aa92014-02-03 10:26:13 +01005166##########################################
5167# Do we have libnfs
5168if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01005169 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01005170 libnfs="yes"
5171 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01005172 else
5173 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08005174 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01005175 fi
5176 libnfs="no"
5177 fi
5178fi
Blue Swirl1d728c32012-05-01 18:45:39 +00005179
Peter Maydell6ca026c2012-07-18 15:10:18 +01005180# Now we've finished running tests it's OK to add -Werror to the compiler flags
5181if test "$werror" = "yes"; then
5182 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
5183fi
5184
Juan Quintelae86ecd42009-08-03 14:45:59 +02005185if test "$solaris" = "no" ; then
5186 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02005187 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02005188 fi
5189fi
5190
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005191# test if pod2man has --utf8 option
5192if pod2man --help | grep -q utf8; then
5193 POD2MAN="pod2man --utf8"
5194else
5195 POD2MAN="pod2man"
5196fi
5197
Blue Swirl952afb72010-09-19 08:36:34 +00005198# Use ASLR, no-SEH and DEP if available
5199if test "$mingw32" = "yes" ; then
5200 for flag in --dynamicbase --no-seh --nxcompat; do
Christian Borntraegere9a35912017-08-23 12:16:23 +02005201 if ld_has $flag ; then
Blue Swirl952afb72010-09-19 08:36:34 +00005202 LDFLAGS="-Wl,$flag $LDFLAGS"
5203 fi
5204 done
5205fi
5206
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03005207qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08005208qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03005209qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06005210qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02005211
Kamil Rytarowskie0580342017-07-14 09:33:44 +01005212# We can only support ivshmem if we have eventfd
5213if [ "$eventfd" = "yes" ]; then
5214 ivshmem=yes
5215fi
5216
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005217tools=""
5218if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02005219 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005220 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
5221 tools="qemu-nbd\$(EXESUF) $tools"
Kamil Rytarowskib1449ed2017-07-14 09:33:45 +01005222 fi
5223 if [ "$ivshmem" = "yes" ]; then
David Marchanda75eb032014-09-08 11:17:48 +02005224 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01005225 fi
5226fi
5227if test "$softmmu" = yes ; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005228 if test "$linux" = yes; then
5229 if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02005230 virtfs=yes
5231 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
5232 else
5233 if test "$virtfs" = yes; then
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005234 error_exit "VirtFS requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05305235 fi
Andreas Färber17500372012-05-01 01:12:03 +02005236 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02005237 fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005238 if test "$mpath" != no && test "$mpathpersist" = yes ; then
5239 mpath=yes
5240 else
5241 if test "$mpath" = yes; then
5242 error_exit "Multipath requires libmpathpersist devel"
5243 fi
5244 mpath=no
5245 fi
Paolo Bonzinib855f8d2017-08-22 06:50:18 +02005246 tools="$tools scsi/qemu-pr-helper\$(EXESUF)"
5247 else
5248 if test "$virtfs" = yes; then
5249 error_exit "VirtFS is supported only on Linux"
5250 fi
5251 virtfs=no
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005252 if test "$mpath" = yes; then
5253 error_exit "Multipath is supported only on Linux"
5254 fi
5255 mpath=no
M. Mohan Kumar17bff522011-12-14 13:58:42 +05305256 fi
Laurent Vivierff69fd82017-10-19 21:16:06 +02005257 if test "$xkbcommon" = "yes"; then
5258 tools="qemu-keymap\$(EXESUF) $tools"
5259 fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005260fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005261
5262# Probe for guest agent support/options
5263
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005264if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04005265 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05005266 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04005267 guest_agent=yes
5268 elif [ "$guest_agent" != yes ]; then
5269 guest_agent=no
5270 else
5271 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02005272 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02005273fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005274
Michael Roth9d6bc272015-08-26 10:49:13 -05005275# Guest agent Window MSI package
5276
5277if test "$guest_agent" != yes; then
5278 if test "$guest_agent_msi" = yes; then
5279 error_exit "MSI guest agent package requires guest agent enabled"
5280 fi
5281 guest_agent_msi=no
5282elif test "$mingw32" != "yes"; then
5283 if test "$guest_agent_msi" = "yes"; then
5284 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
5285 fi
5286 guest_agent_msi=no
5287elif ! has wixl; then
5288 if test "$guest_agent_msi" = "yes"; then
5289 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
5290 fi
5291 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05005292else
5293 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
5294 # disabled explicitly
5295 if test "$guest_agent_msi" != "no"; then
5296 guest_agent_msi=yes
5297 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05005298fi
5299
Michael Roth1a349042015-08-26 11:14:31 -05005300if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05005301 if test "$guest_agent_with_vss" = "yes"; then
5302 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
5303 fi
5304
5305 if test "$QEMU_GA_MANUFACTURER" = ""; then
5306 QEMU_GA_MANUFACTURER=QEMU
5307 fi
5308
5309 if test "$QEMU_GA_DISTRO" = ""; then
5310 QEMU_GA_DISTRO=Linux
5311 fi
5312
5313 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02005314 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05005315 fi
5316
Stefan Weil89138852016-05-16 15:10:20 +02005317 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05005318
5319 case "$cpu" in
5320 x86_64)
5321 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
5322 ;;
5323 i386)
5324 QEMU_GA_MSI_ARCH="-D Arch=32"
5325 ;;
5326 *)
5327 error_exit "CPU $cpu not supported for building installation package"
5328 ;;
5329 esac
5330fi
5331
Paolo Bonzinica35f782010-05-26 16:08:29 +02005332# Mac OS X ships with a broken assembler
5333roms=
5334if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5335 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5336 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01005337 # Different host OS linkers have different ideas about the name of the ELF
Brad Smithc65d5e42017-11-07 18:46:11 -05005338 # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd
5339 # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe.
5340 for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do
Peter Maydelle57218b2016-08-08 17:11:28 +01005341 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5342 ld_i386_emulation="$emu"
5343 roms="optionrom"
5344 break
5345 fi
5346 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02005347fi
Andreas Färberd0384d12011-05-01 18:23:56 +02005348if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11005349 roms="$roms spapr-rtas"
5350fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02005351
Christian Borntraeger9933c302013-04-23 01:23:03 +00005352if test "$cpu" = "s390x" ; then
5353 roms="$roms s390-ccw"
5354fi
5355
Richard Henderson964c6fa2013-06-21 19:10:16 -07005356# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005357if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005358 textseg_addr=
5359 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07005360 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5361 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07005362 textseg_addr=0x60000000
5363 ;;
5364 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07005365 # A 256M aligned address, high in the address space, with enough
5366 # room for the code_gen_buffer above it before the stack.
5367 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07005368 ;;
5369 esac
5370 if [ -n "$textseg_addr" ]; then
5371 cat > $TMPC <<EOF
5372 int main(void) { return 0; }
5373EOF
5374 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5375 if ! compile_prog "" "$textseg_ldflags"; then
5376 # In case ld does not support -Ttext-segment, edit the default linker
5377 # script via sed to set the .text start addr. This is needed on FreeBSD
5378 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01005379 if ! $ld --verbose >/dev/null 2>&1; then
5380 error_exit \
5381 "We need to link the QEMU user mode binaries at a" \
5382 "specific text address. Unfortunately your linker" \
5383 "doesn't support either the -Ttext-segment option or" \
5384 "printing the default linker script with --verbose." \
5385 "If you don't want the user mode binaries, pass the" \
5386 "--disable-user option to configure."
5387 fi
5388
Richard Henderson964c6fa2013-06-21 19:10:16 -07005389 $ld --verbose | sed \
5390 -e '1,/==================================================/d' \
5391 -e '/==================================================/,$d' \
5392 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5393 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5394 textseg_ldflags="-Wl,-T../config-host.ld"
5395 fi
5396 fi
5397fi
5398
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005399# Check that the C++ compiler exists and works with the C compiler.
5400# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added.
5401if has $cxx; then
5402 cat > $TMPC <<EOF
5403int c_function(void);
5404int main(void) { return c_function(); }
5405EOF
5406
5407 compile_object
5408
5409 cat > $TMPCXX <<EOF
5410extern "C" {
5411 int c_function(void);
5412}
5413int c_function(void) { return 42; }
5414EOF
5415
5416 update_cxxflags
5417
5418 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
5419 # C++ compiler $cxx works ok with C compiler $cc
5420 :
5421 else
5422 echo "C++ compiler $cxx does not work with C compiler $cc"
5423 echo "Disabling C++ specific optional code"
5424 cxx=
5425 fi
5426else
5427 echo "No C++ compiler available; disabling C++ specific optional code"
5428 cxx=
5429fi
5430
Cole Robinson02d34f62016-05-06 14:03:09 -04005431echo_version() {
5432 if test "$1" = "yes" ; then
5433 echo "($2)"
5434 fi
5435}
5436
Jan Kiszka50e12062014-10-02 10:03:55 +02005437# prepend pixman and ftd flags after all config tests are done
5438QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5439libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005440
bellard43ce4df2003-06-09 19:53:12 +00005441echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005442echo "BIOS directory $(eval echo $qemu_datadir)"
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005443echo "firmware path $(eval echo $firmwarepath)"
Stefan Weil89138852016-05-16 15:10:20 +02005444echo "binary directory $(eval echo $bindir)"
5445echo "library directory $(eval echo $libdir)"
5446echo "module directory $(eval echo $qemu_moddir)"
5447echo "libexec directory $(eval echo $libexecdir)"
5448echo "include directory $(eval echo $includedir)"
5449echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005450if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005451echo "local state directory $(eval echo $local_statedir)"
5452echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005453echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005454else
5455echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005456echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005457fi
bellard5a671352003-10-01 00:13:48 +00005458echo "Source path $source_path"
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005459echo "GIT binary $git"
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005460echo "GIT submodules $git_submodules"
bellard43ce4df2003-06-09 19:53:12 +00005461echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005462echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005463echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005464echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005465echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005466echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005467echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005468echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005469echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005470echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005471echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005472if test "$slirp" = "yes" ; then
5473 echo "smbd $smbd"
5474fi
Fam Zheng17969262014-02-10 14:48:56 +08005475echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00005476echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00005477echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00005478echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +00005479echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00005480echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00005481echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00005482echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00005483echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00005484if test "$darwin" = "yes" ; then
5485 echo "Cocoa support $cocoa"
5486fi
Stefan Weil89138852016-05-16 15:10:20 +02005487echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5488echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005489echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02005490echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005491echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005492echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005493echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005494echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005495echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02005496echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005497echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005498echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00005499echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005500echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02005501echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00005502echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00005503echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005504echo "Block whitelist (rw) $block_drv_rw_whitelist"
5505echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05305506echo "VirtFS support $virtfs"
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005507echo "Multipath support $mpath"
Jes Sorensen821601e2011-03-16 13:33:36 +01005508echo "VNC support $vnc"
5509if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01005510 echo "VNC SASL support $vnc_sasl"
5511 echo "VNC JPEG support $vnc_jpeg"
5512 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01005513fi
blueswir131422552007-04-16 18:27:06 +00005514if test -n "$sparc_cpu"; then
5515 echo "Target Sparc Arch $sparc_cpu"
5516fi
aliguorie37630c2009-04-22 15:19:10 +00005517echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00005518if test "$xen" = "yes" ; then
5519 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00005520 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00005521fi
aurel322e4d9fb2008-04-08 06:01:02 +00005522echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02005523echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02005524echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02005525echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00005526echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01005527echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005528echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005529echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00005530echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02005531echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01005532echo "HAX support $hax"
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02005533echo "TCG support $tcg"
5534if test "$tcg" = "yes" ; then
5535 echo "TCG debug enabled $debug_tcg"
5536 echo "TCG interpreter $tcg_interpreter"
5537fi
Yang Zhong5a22ab72017-12-20 21:16:46 +08005538echo "malloc trim support $malloc_trim"
Michael R. Hines2da776d2013-07-22 10:01:54 -04005539echo "RDMA support $rdma"
aurel32f652e6a2008-12-16 10:43:48 +00005540echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00005541echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005542echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00005543echo "madvise $madvise"
5544echo "posix_madvise $posix_madvise"
Corey Bryant47e98652012-01-26 09:42:26 -05005545echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005546echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005547echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005548echo "vhost-vsock support $vhost_vsock"
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005549echo "vhost-user support $vhost_user"
Lluís Vilanova5b808272014-05-27 15:02:14 +02005550echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01005551if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01005552echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01005553fi
Stefan Weil89138852016-05-16 15:10:20 +02005554echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005555echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005556echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005557echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005558echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02005559echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005560echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005561echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005562echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01005563echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05005564echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005565echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05005566echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05005567echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03005568echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01005569echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005570echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02005571echo "debug stack usage $debug_stack_usage"
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04005572echo "crypto afalg $crypto_afalg"
Bharata B Raoeb100392012-09-24 14:42:45 +05305573echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00005574echo "gcov $gcov_tool"
5575echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05005576echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005577echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005578echo "TPM passthrough $tpm_passthrough"
Amarnath Vallurif4ede812017-09-29 14:10:20 +03005579echo "TPM emulator $tpm_emulator"
Paolo Bonzini3556c232013-05-10 14:16:40 +02005580echo "QOM debugging $qom_cast_debug"
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01005581echo "Live block migration $live_block_migration"
qiaonuohan607dacd2014-02-18 14:11:30 +08005582echo "lzo support $lzo"
5583echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01005584echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005585echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08005586echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02005587echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08005588echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005589echo "replication support $replication"
Ashish Mittalda92c3f2017-04-03 20:48:08 -07005590echo "VxHS block device $vxhs"
Richard Henderson8ca80762017-09-14 09:41:12 -07005591echo "capstone $capstone"
bellard67b915a2004-03-31 23:37:16 +00005592
Stefan Weil1ba16962011-07-29 22:40:45 +02005593if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00005594echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00005595fi
bellard97a847b2003-08-10 21:36:04 +00005596
Peter Maydell898be3e2017-03-21 14:31:57 +00005597if test "$supported_cpu" = "no"; then
5598 echo
5599 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5600 echo
5601 echo "CPU host architecture $cpu support is not currently maintained."
5602 echo "The QEMU project intends to remove support for this host CPU in"
5603 echo "a future release if nobody volunteers to maintain it and to"
5604 echo "provide a build host for our continuous integration setup."
5605 echo "configure has succeeded and you can continue to build, but"
5606 echo "if you care about QEMU on this platform you should contact"
5607 echo "us upstream at qemu-devel@nongnu.org."
5608fi
5609
5610if test "$supported_os" = "no"; then
5611 echo
5612 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5613 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00005614 echo "Host OS $targetos support is not currently maintained."
5615 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00005616 echo "a future release if nobody volunteers to maintain it and to"
5617 echo "provide a build host for our continuous integration setup."
5618 echo "configure has succeeded and you can continue to build, but"
5619 echo "if you care about QEMU on this platform you should contact"
5620 echo "us upstream at qemu-devel@nongnu.org."
5621fi
5622
Juan Quintela98ec69a2009-07-16 18:34:18 +02005623config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00005624
Stefan Weildbd99ae2013-01-01 18:33:44 +01005625echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5626
Juan Quintela98ec69a2009-07-16 18:34:18 +02005627echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005628echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005629
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02005630echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005631echo "prefix=$prefix" >> $config_host_mak
5632echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03005633echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04005634echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02005635echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005636echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005637echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03005638echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005639echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
Gerd Hoffmann3d5eeca2017-09-14 13:42:36 +02005640echo "qemu_firmwarepath=$firmwarepath" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005641echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08005642echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005643if test "$mingw32" = "no" ; then
5644 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5645fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04005646echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005647echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01005648echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005649echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06005650echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02005651echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Daniel P. Berrangecc84d632017-10-20 15:02:43 +01005652echo "GIT=$git" >> $config_host_mak
Daniel P. Berrangeaef45d52017-09-29 11:11:56 +01005653echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
Daniel P. Berrangef62bbee2017-10-26 13:52:26 +01005654echo "GIT_UPDATE=$git_update" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005655
Juan Quintela98ec69a2009-07-16 18:34:18 +02005656echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02005657
aurel32f8393942009-04-13 18:45:38 +00005658if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005659 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00005660fi
aliguori1625af82009-04-05 17:41:02 +00005661if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07005662 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00005663fi
bellard7d132992003-03-06 23:23:54 +00005664if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02005665 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005666fi
bellard67b915a2004-03-31 23:37:16 +00005667if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005668 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02005669 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00005670 version_major=${rc_version%%.*}
5671 rc_version=${rc_version#*.}
5672 version_minor=${rc_version%%.*}
5673 rc_version=${rc_version#*.}
5674 version_subminor=${rc_version%%.*}
5675 version_micro=0
5676 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5677 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005678 if test "$guest_agent_with_vss" = "yes" ; then
5679 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05005680 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005681 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5682 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05005683 if test "$guest_agent_ntddscsi" = "yes" ; then
5684 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5685 fi
Michael Roth1a349042015-08-26 11:14:31 -05005686 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03005687 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5688 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5689 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5690 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5691 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5692 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5693 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5694 fi
pbrook210fa552007-02-27 21:04:49 +00005695else
Juan Quintela35f4df22009-07-27 16:13:07 +02005696 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00005697fi
blueswir1128ab2f2008-08-15 18:33:42 +00005698
Mark McLoughlindffcb712009-10-22 17:49:11 +01005699if test "$linux" = "yes" ; then
5700 echo "CONFIG_LINUX=y" >> $config_host_mak
5701fi
5702
bellard83fb7ad2004-07-05 21:25:26 +00005703if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005704 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00005705fi
malcb29fe3e2008-11-18 01:42:22 +00005706
bellardec530c82006-04-25 22:36:06 +00005707if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005708 echo "CONFIG_SOLARIS=y" >> $config_host_mak
bellardec530c82006-04-25 22:36:06 +00005709fi
Andreas Färber179cf402010-09-20 00:50:43 +02005710if test "$haiku" = "yes" ; then
5711 echo "CONFIG_HAIKU=y" >> $config_host_mak
5712fi
bellard97a847b2003-08-10 21:36:04 +00005713if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005714 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005715fi
Stefan Weil1ba16962011-07-29 22:40:45 +02005716if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005717 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00005718fi
bellardc20709a2004-04-21 23:27:19 +00005719if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005720 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04005721 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00005722fi
ths8a16d272008-07-19 09:56:24 +00005723if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005724 echo "CONFIG_VDE=y" >> $config_host_mak
Fam Zhenge2ad6f12017-09-07 16:35:52 +08005725 echo "VDE_LIBS=$vde_libs" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005726fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005727if test "$netmap" = "yes" ; then
5728 echo "CONFIG_NETMAP=y" >> $config_host_mak
5729fi
Gonglei015a33b2014-07-01 20:58:08 +08005730if test "$l2tpv3" = "yes" ; then
5731 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5732fi
Corey Bryant47e98652012-01-26 09:42:26 -05005733if test "$cap_ng" = "yes" ; then
5734 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5735fi
Juan Quintela2358a492009-07-27 16:13:25 +02005736echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005737for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005738 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005739 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005740done
Fam Zhengb1149912017-09-07 16:29:13 +08005741echo "ALSA_LIBS=$alsa_libs" >> $config_host_mak
5742echo "PULSE_LIBS=$pulse_libs" >> $config_host_mak
5743echo "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak
5744echo "DSOUND_LIBS=$dsound_libs" >> $config_host_mak
5745echo "OSS_LIBS=$oss_libs" >> $config_host_mak
Juan Quintela67f86e82009-08-03 14:46:59 +02005746if test "$audio_pt_int" = "yes" ; then
5747 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5748fi
malcd5631632009-10-10 01:13:41 +04005749if test "$audio_win_int" = "yes" ; then
5750 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5751fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005752echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5753echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005754if test "$vnc" = "yes" ; then
5755 echo "CONFIG_VNC=y" >> $config_host_mak
5756fi
aliguori2f9606b2009-03-06 20:27:28 +00005757if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005758 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005759fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005760if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005761 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005762fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005763if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005764 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005765fi
Gerd Hoffmann6a021532017-10-05 17:33:28 +02005766if test "$xkbcommon" = "yes" ; then
5767 echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
5768 echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
5769fi
aliguori76655d62009-03-06 20:27:37 +00005770if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005771 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005772fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005773if test "$xfs" = "yes" ; then
5774 echo "CONFIG_XFS=y" >> $config_host_mak
5775fi
Stefan Weil89138852016-05-16 15:10:20 +02005776qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005777echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005778echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005779echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005780echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005781if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005782 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005783fi
Fam Zheng17969262014-02-10 14:48:56 +08005784if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005785 # $shacmd can generate a hash started with digit, which the compiler doesn't
5786 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005787 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005788 echo "CONFIG_MODULES=y" >> $config_host_mak
5789fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005790if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005791 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005792 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005793 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
Fam Zheng8ecc89f2017-09-07 16:29:11 +08005794 echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005795fi
5796if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005797 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005798fi
5799if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005800 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005801fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005802if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005803 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005804fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005805if test "$accept4" = "yes" ; then
5806 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5807fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305808if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005809 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305810fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005811if test "$eventfd" = "yes" ; then
5812 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5813fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005814if test "$memfd" = "yes" ; then
5815 echo "CONFIG_MEMFD=y" >> $config_host_mak
5816fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005817if test "$fallocate" = "yes" ; then
5818 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5819fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005820if test "$fallocate_punch_hole" = "yes" ; then
5821 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5822fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005823if test "$fallocate_zero_range" = "yes" ; then
5824 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5825fi
Kevin Wolfed911432014-09-29 17:12:59 +02005826if test "$posix_fallocate" = "yes" ; then
5827 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5828fi
Peter Maydellc727f472011-01-06 11:05:10 +00005829if test "$sync_file_range" = "yes" ; then
5830 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5831fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005832if test "$fiemap" = "yes" ; then
5833 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5834fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005835if test "$dup3" = "yes" ; then
5836 echo "CONFIG_DUP3=y" >> $config_host_mak
5837fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005838if test "$ppoll" = "yes" ; then
5839 echo "CONFIG_PPOLL=y" >> $config_host_mak
5840fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005841if test "$prctl_pr_set_timerslack" = "yes" ; then
5842 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5843fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005844if test "$epoll" = "yes" ; then
5845 echo "CONFIG_EPOLL=y" >> $config_host_mak
5846fi
5847if test "$epoll_create1" = "yes" ; then
5848 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5849fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005850if test "$sendfile" = "yes" ; then
5851 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5852fi
Riku Voipio51834342014-06-22 11:25:42 +01005853if test "$timerfd" = "yes" ; then
5854 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5855fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005856if test "$setns" = "yes" ; then
5857 echo "CONFIG_SETNS=y" >> $config_host_mak
5858fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02005859if test "$clock_adjtime" = "yes" ; then
5860 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5861fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02005862if test "$syncfs" = "yes" ; then
5863 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5864fi
aurel323b3f24a2009-04-15 16:12:13 +00005865if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005866 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005867fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005868if test "$inotify1" = "yes" ; then
5869 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5870fi
Peter Maydell401bc052017-09-05 13:19:32 +01005871if test "$sem_timedwait" = "yes" ; then
5872 echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak
5873fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005874if test "$byteswap_h" = "yes" ; then
5875 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5876fi
5877if test "$bswap_h" = "yes" ; then
5878 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5879fi
Alexander Graf769ce762009-05-11 17:41:42 +02005880if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005881 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005882 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005883 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005884fi
aurel322e4d9fb2008-04-08 06:01:02 +00005885if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005886 echo "CONFIG_BRLAPI=y" >> $config_host_mak
Fam Zheng8eca2882017-09-07 16:47:00 +08005887 echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005888fi
balrogfb599c92008-09-28 23:49:55 +00005889if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005890 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005891 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005892fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005893if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005894 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5895fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005896if test "$gtk" = "yes" ; then
5897 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005898 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005899 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005900 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005901 if test "$gtk_gl" = "yes" ; then
5902 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5903 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005904fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005905echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005906if test "$gnutls" = "yes" ; then
5907 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5908fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005909if test "$gnutls_rnd" = "yes" ; then
5910 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5911fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005912if test "$gcrypt" = "yes" ; then
5913 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08005914 if test "$gcrypt_hmac" = "yes" ; then
5915 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5916 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005917 if test "$gcrypt_kdf" = "yes" ; then
5918 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5919 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005920fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005921if test "$nettle" = "yes" ; then
5922 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005923 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005924 if test "$nettle_kdf" = "yes" ; then
5925 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5926 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005927fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005928if test "$tasn1" = "yes" ; then
5929 echo "CONFIG_TASN1=y" >> $config_host_mak
5930fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005931if test "$have_ifaddrs_h" = "yes" ; then
5932 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5933fi
Eric Blake6b39b062016-10-11 10:46:23 -05005934if test "$have_broken_size_max" = "yes" ; then
5935 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5936fi
Jan Vesely277abf12016-04-29 13:15:23 -04005937
5938# Work around a system header bug with some kernel/XFS header
5939# versions where they both try to define 'struct fsxattr':
5940# xfs headers will not try to redefine structs from linux headers
5941# if this macro is set.
5942if test "$have_fsxattr" = "yes" ; then
5943 echo "HAVE_FSXATTR=y" >> $config_host_mak
5944fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005945if test "$vte" = "yes" ; then
5946 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005947 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5948fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005949if test "$virglrenderer" = "yes" ; then
5950 echo "CONFIG_VIRGL=y" >> $config_host_mak
5951 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5952 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5953fi
aliguorie37630c2009-04-22 15:19:10 +00005954if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005955 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005956 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005957 if test "$xen_pv_domain_build" = "yes" ; then
5958 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5959 fi
aliguorie37630c2009-04-22 15:19:10 +00005960fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005961if test "$linux_aio" = "yes" ; then
5962 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5963fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005964if test "$attr" = "yes" ; then
5965 echo "CONFIG_ATTR=y" >> $config_host_mak
5966fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005967if test "$libattr" = "yes" ; then
5968 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5969fi
Meador Inge983eef52012-02-24 14:00:42 +05305970if test "$virtfs" = "yes" ; then
5971 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005972fi
Paolo Bonzinife8fc5a2017-08-22 06:50:55 +02005973if test "$mpath" = "yes" ; then
5974 echo "CONFIG_MPATH=y" >> $config_host_mak
5975fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005976if test "$vhost_scsi" = "yes" ; then
5977 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5978fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005979if test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005980 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5981fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005982if test "$vhost_vsock" = "yes" ; then
5983 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5984fi
Marc-André Lureaue6a74862017-08-03 11:07:46 +02005985if test "$vhost_user" = "yes" ; then
5986 echo "CONFIG_VHOST_USER=y" >> $config_host_mak
5987fi
ths77755342008-11-27 15:45:16 +00005988if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005989 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005990fi
aliguoribf9298b2008-12-05 20:05:26 +00005991if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005992 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005993fi
aliguoriceb42de2009-04-07 18:43:28 +00005994if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005995 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005996fi
aurel32f652e6a2008-12-16 10:43:48 +00005997if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005998 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005999fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03006000if test "$signalfd" = "yes" ; then
6001 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
6002fi
Paolo Bonzinib3f6ea72017-07-03 16:59:07 +02006003if test "$tcg" = "yes"; then
6004 echo "CONFIG_TCG=y" >> $config_host_mak
6005 if test "$tcg_interpreter" = "yes" ; then
6006 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
6007 fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02006008fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00006009if test "$fdatasync" = "yes" ; then
6010 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
6011fi
Andreas Färbere78815a2010-09-25 11:26:05 +00006012if test "$madvise" = "yes" ; then
6013 echo "CONFIG_MADVISE=y" >> $config_host_mak
6014fi
6015if test "$posix_madvise" = "yes" ; then
6016 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
6017fi
bellard97a847b2003-08-10 21:36:04 +00006018
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01006019if test "$spice" = "yes" ; then
6020 echo "CONFIG_SPICE=y" >> $config_host_mak
6021fi
6022
Marc-André Lureau7b02f542015-08-30 11:48:40 +02006023if test "$smartcard" = "yes" ; then
6024 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Fam Zheng7b62bf52017-09-07 16:29:16 +08006025 echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak
6026 echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02006027fi
6028
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006029if test "$libusb" = "yes" ; then
6030 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
Fam Zhengb878b652017-09-07 16:29:17 +08006031 echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak
6032 echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01006033fi
6034
Hans de Goede69354a82011-07-19 11:04:10 +02006035if test "$usb_redir" = "yes" ; then
6036 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
Fam Zhengcc7923f2017-09-07 16:29:18 +08006037 echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak
6038 echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak
Hans de Goede69354a82011-07-19 11:04:10 +02006039fi
6040
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01006041if test "$opengl" = "yes" ; then
6042 echo "CONFIG_OPENGL=y" >> $config_host_mak
6043 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01006044 if test "$opengl_dmabuf" = "yes" ; then
6045 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
6046 fi
Michael Walle20ff0752011-03-07 23:32:39 +01006047fi
6048
Yang Zhong5a22ab72017-12-20 21:16:46 +08006049if test "$malloc_trim" = "yes" ; then
6050 echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak
6051fi
6052
Liang Li99f2dbd2016-03-08 13:53:16 +08006053if test "$avx2_opt" = "yes" ; then
6054 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
6055fi
6056
qiaonuohan607dacd2014-02-18 14:11:30 +08006057if test "$lzo" = "yes" ; then
6058 echo "CONFIG_LZO=y" >> $config_host_mak
6059fi
6060
6061if test "$snappy" = "yes" ; then
6062 echo "CONFIG_SNAPPY=y" >> $config_host_mak
6063fi
6064
Peter Wu6b383c02015-01-06 18:48:14 +01006065if test "$bzip2" = "yes" ; then
6066 echo "CONFIG_BZIP2=y" >> $config_host_mak
6067 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
6068fi
6069
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006070if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006071 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006072 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
6073 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11006074fi
6075
Peter Lieven6542aa92014-02-03 10:26:13 +01006076if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04006077 echo "CONFIG_LIBNFS=m" >> $config_host_mak
6078 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01006079fi
6080
Eduardo Otubof7945732012-08-14 18:44:05 -03006081if test "$seccomp" = "yes"; then
6082 echo "CONFIG_SECCOMP=y" >> $config_host_mak
Fam Zhengc3883e12017-09-07 16:53:16 +08006083 echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak
6084 echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak
Eduardo Otubof7945732012-08-14 18:44:05 -03006085fi
6086
bellard83fb7ad2004-07-05 21:25:26 +00006087# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00006088if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02006089 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00006090fi
6091
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01006092if test "$localtime_r" = "yes" ; then
6093 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
6094fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02006095if test "$qom_cast_debug" = "yes" ; then
6096 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
6097fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006098if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006099 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006100 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
6101 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01006102fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06006103
Peter Maydell7c2acc72013-04-08 12:11:27 +01006104echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02006105if test "$coroutine_pool" = "yes" ; then
6106 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
6107else
6108 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
6109fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05306110
Peter Lieven7d992e42016-09-27 11:58:45 +02006111if test "$debug_stack_usage" = "yes" ; then
6112 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
6113fi
6114
Longpeng(Mike)f0d92b52017-07-14 14:04:05 -04006115if test "$crypto_afalg" = "yes" ; then
6116 echo "CONFIG_AF_ALG=y" >> $config_host_mak
6117fi
6118
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05306119if test "$open_by_handle_at" = "yes" ; then
6120 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
6121fi
6122
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05306123if test "$linux_magic_h" = "yes" ; then
6124 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
6125fi
6126
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01006127if test "$pragma_diagnostic_available" = "yes" ; then
6128 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01006129fi
6130
Kevin Wolf3f4349d2012-06-29 13:40:27 +02006131if test "$valgrind_h" = "yes" ; then
6132 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
6133fi
6134
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03006135if test "$has_environ" = "yes" ; then
6136 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
6137fi
6138
Richard Henderson76a347e2012-12-28 14:17:02 -08006139if test "$cpuid_h" = "yes" ; then
6140 echo "CONFIG_CPUID_H=y" >> $config_host_mak
6141fi
6142
Richard Hendersonf5401662013-02-16 12:46:59 -08006143if test "$int128" = "yes" ; then
6144 echo "CONFIG_INT128=y" >> $config_host_mak
6145fi
6146
Richard Henderson7ebee432016-06-29 21:10:59 -07006147if test "$atomic128" = "yes" ; then
6148 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
6149fi
6150
Richard Hendersondf79b992016-09-02 12:23:57 -07006151if test "$atomic64" = "yes" ; then
6152 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
6153fi
6154
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08006155if test "$getauxval" = "yes" ; then
6156 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
6157fi
6158
Bharata B Raoeb100392012-09-24 14:42:45 +05306159if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006160 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006161 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
6162 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05306163fi
6164
Jeff Codyd85fa9e2016-04-05 10:40:09 -04006165if test "$glusterfs_xlator_opt" = "yes" ; then
6166 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
6167fi
6168
Bharata B Rao0c14fb42013-07-16 21:47:42 +05306169if test "$glusterfs_discard" = "yes" ; then
6170 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
6171fi
6172
Niels de Vosdf3a4292017-05-28 12:01:14 +05306173if test "$glusterfs_fallocate" = "yes" ; then
6174 echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
6175fi
6176
Bharata B Rao7c815372013-12-21 14:51:25 +05306177if test "$glusterfs_zerofill" = "yes" ; then
6178 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
6179fi
6180
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006181if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08006182 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08006183 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
6184 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01006185fi
6186
Dr. David Alan Gilberted1701c2017-05-15 15:05:29 +01006187if test "$live_block_migration" = "yes" ; then
6188 echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
6189fi
6190
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006191if test "$tpm" = "yes"; then
6192 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006193 # TPM passthrough support?
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006194 if test "$tpm_passthrough" = "yes"; then
6195 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
6196 fi
Amarnath Vallurif4ede812017-09-29 14:10:20 +03006197 # TPM emulator support?
6198 if test "$tpm_emulator" = "yes"; then
6199 echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak
6200 fi
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01006201fi
6202
Lluís Vilanova5b808272014-05-27 15:02:14 +02006203echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
6204if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02006205 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05306206fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006207if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02006208 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
6209 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02006210 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01006211fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03006212if have_backend "log"; then
6213 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02006214fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006215if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02006216 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
6217fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006218if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02006219 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
6220 if test "$trace_backend_stap" = "yes" ; then
6221 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
6222 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00006223fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02006224if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006225 if test "$linux" = "yes" ; then
6226 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006227 else
Stewart Smith21684af2014-01-24 12:39:10 +11006228 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09006229 fi
6230fi
Paul Durrant0a852412016-08-04 14:44:14 +01006231if have_backend "syslog"; then
6232 if test "$posix_syslog" = "yes" ; then
6233 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
6234 else
6235 feature_not_found "syslog(trace backend)" "syslog not available"
6236 fi
6237fi
Prerna Saxena9410b562010-07-13 09:26:32 +01006238echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
6239
Michael R. Hines2da776d2013-07-22 10:01:54 -04006240if test "$rdma" = "yes" ; then
6241 echo "CONFIG_RDMA=y" >> $config_host_mak
Fam Zheng392fb642017-09-07 16:42:30 +08006242 echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak
Michael R. Hines2da776d2013-07-22 10:01:54 -04006243fi
6244
Laurent Vivier575b22b2016-06-02 22:14:15 +02006245if test "$have_rtnetlink" = "yes" ; then
6246 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
6247fi
6248
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08006249if test "$replication" = "yes" ; then
6250 echo "CONFIG_REPLICATION=y" >> $config_host_mak
6251fi
6252
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01006253if test "$have_af_vsock" = "yes" ; then
6254 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
6255fi
6256
Christopher Covington4d043512016-12-28 15:04:33 -05006257if test "$have_sysmacros" = "yes" ; then
6258 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
6259fi
6260
Andreas Grapentin49e00a12017-03-14 17:59:53 +01006261if test "$have_static_assert" = "yes" ; then
6262 echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
6263fi
6264
Tomáš Golembiovskýe6746052017-07-17 15:58:33 +02006265if test "$have_utmpx" = "yes" ; then
6266 echo "HAVE_UTMPX=y" >> $config_host_mak
6267fi
6268
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006269if test "$ivshmem" = "yes" ; then
6270 echo "CONFIG_IVSHMEM=y" >> $config_host_mak
6271fi
Richard Hendersone219c492017-09-28 09:01:23 -07006272if test "$capstone" != "no" ; then
Richard Henderson8ca80762017-09-14 09:41:12 -07006273 echo "CONFIG_CAPSTONE=y" >> $config_host_mak
6274fi
Kamil Rytarowskie0580342017-07-14 09:33:44 +01006275
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00006276# Hold two types of flag:
6277# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
6278# a thread we have a handle to
6279# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
6280# platform
6281if test "$pthread_setname_np" = "yes" ; then
6282 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
6283 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
6284fi
6285
Ashish Mittalda92c3f2017-04-03 20:48:08 -07006286if test "$vxhs" = "yes" ; then
6287 echo "CONFIG_VXHS=y" >> $config_host_mak
6288 echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
6289fi
6290
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006291if test "$tcg_interpreter" = "yes"; then
6292 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
6293elif test "$ARCH" = "sparc64" ; then
6294 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
6295elif test "$ARCH" = "s390x" ; then
6296 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006297elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006298 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07006299elif test "$ARCH" = "ppc64" ; then
6300 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02006301else
6302 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
6303fi
6304QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
6305
Juan Quintela98ec69a2009-07-16 18:34:18 +02006306echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02006307echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006308echo "MAKE=$make" >> $config_host_mak
6309echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04006310echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
6311echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03006312echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
6313echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00006314echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006315echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006316if $iasl -h > /dev/null 2>&1; then
6317 echo "IASL=$iasl" >> $config_host_mak
6318fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02006319echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006320echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04006321echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01006322echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006323echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01006324echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006325echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006326echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006327echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006328echo "OBJCOPY=$objcopy" >> $config_host_mak
6329echo "LD=$ld" >> $config_host_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006330echo "RANLIB=$ranlib" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02006331echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00006332echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006333echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006334echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02006335echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Bruno Dominguez11cde1c2017-06-06 14:07:47 +01006336echo "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01006337echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006338if test "$sparse" = "yes" ; then
6339 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01006340 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02006341 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01006342 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
6343 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
6344fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01006345if test "$cross_prefix" != ""; then
6346 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
6347else
6348 echo "AUTOCONF_HOST := " >> $config_host_mak
6349fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02006350echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05006351echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01006352echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01006353echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02006354echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02006355echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01006356echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02006357echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08006358echo "DSOSUF=$DSOSUF" >> $config_host_mak
6359echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05006360echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01006361echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
6362echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02006363echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01006364echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00006365if test "$gcov" = "yes" ; then
6366 echo "CONFIG_GCOV=y" >> $config_host_mak
6367 echo "GCOV=$gcov_tool" >> $config_host_mak
6368fi
Juan Quintela804edf22009-07-27 16:12:49 +02006369
Peter Maydell6efd7512011-11-30 11:59:04 +00006370# use included Linux headers
6371if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00006372 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00006373 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006374 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01006375 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00006376 ;;
6377 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01006378 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00006379 ;;
6380 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01006381 linux_arch=s390
6382 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01006383 aarch64)
6384 linux_arch=arm64
6385 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01006386 mips64)
6387 linux_arch=mips
6388 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01006389 *)
6390 # For most CPUs the kernel architecture name and QEMU CPU name match.
6391 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00006392 ;;
6393 esac
Peter Maydell08312a62012-08-03 13:51:25 +01006394 # For non-KVM architectures we will not have asm headers
6395 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
6396 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
6397 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00006398fi
6399
bellard1d14ffa2005-10-30 18:58:22 +00006400for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00006401target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02006402config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02006403target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00006404target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02006405
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006406case "$target_name" in
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006407 armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
Juan Quintelaea2d6a32009-07-16 18:34:10 +02006408 target_bigendian=yes
6409 ;;
6410esac
bellard97a847b2003-08-10 21:36:04 +00006411target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00006412target_user_only="no"
ths831b7822007-01-18 20:06:33 +00006413target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00006414target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00006415case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006416 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00006417 target_softmmu="yes"
6418 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006419 ${target_name}-linux-user)
pbrook9e407a82007-05-26 16:38:53 +00006420 target_user_only="yes"
6421 target_linux_user="yes"
6422 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006423 ${target_name}-bsd-user)
blueswir184778502008-10-26 20:33:16 +00006424 target_user_only="yes"
6425 target_bsd_user="yes"
6426 ;;
pbrook9e407a82007-05-26 16:38:53 +00006427 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006428 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00006429 exit 1
6430 ;;
6431esac
ths831b7822007-01-18 20:06:33 +00006432
bellard97a847b2003-08-10 21:36:04 +00006433mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02006434echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006435
pbrooke5fe0c52006-06-11 13:32:59 +00006436bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00006437mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02006438interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00006439gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00006440
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006441TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02006442TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02006443TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02006444
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006445case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00006446 i386)
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006447 gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006448 ;;
6449 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006450 TARGET_BASE_ARCH=i386
Abdallah Bouassidab8158192017-06-01 11:33:15 +02006451 gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml"
aurel322408a522008-04-20 20:19:44 +00006452 ;;
6453 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11006454 mttcg="yes"
aurel322408a522008-04-20 20:19:44 +00006455 ;;
6456 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006457 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00006458 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006459 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00006460 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00006461 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01006462 aarch64)
6463 TARGET_BASE_ARCH=arm
6464 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00006465 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01006466 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 +01006467 ;;
aurel322408a522008-04-20 20:19:44 +00006468 cris)
aurel322408a522008-04-20 20:19:44 +00006469 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08006470 hppa)
6471 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01006472 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01006473 ;;
aurel322408a522008-04-20 20:19:44 +00006474 m68k)
aurel322408a522008-04-20 20:19:44 +00006475 bflt="yes"
Laurent Vivier5a4526b2017-06-20 22:51:19 +02006476 gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml"
aurel322408a522008-04-20 20:19:44 +00006477 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006478 microblaze|microblazeel)
6479 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006480 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02006481 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02006482 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006483 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006484 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006485 ;;
6486 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08006487 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006488 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006489 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08006490 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006491 ;;
6492 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006493 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006494 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02006495 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006496 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006497 moxie)
6498 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006499 nios2)
6500 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006501 or1k)
Jia Liue67db062012-07-20 15:50:39 +08006502 TARGET_ARCH=openrisc
6503 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08006504 ;;
aurel322408a522008-04-20 20:19:44 +00006505 ppc)
aurel32c8b35322009-01-24 15:07:34 +00006506 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006507 ;;
6508 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006509 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006510 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00006511 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006512 ;;
6513 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006514 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006515 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306516 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006517 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006518 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05006519 ppc64le)
6520 TARGET_ARCH=ppc64
6521 TARGET_BASE_ARCH=ppc
6522 TARGET_ABI_DIR=ppc
Nikunj A Dadhaniaf0b06852017-04-27 10:48:23 +05306523 mttcg=yes
Anton Blanchard1438eff2016-01-15 16:00:51 +01006524 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 -05006525 ;;
aurel322408a522008-04-20 20:19:44 +00006526 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006527 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006528 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006529 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02006530 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01006531 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006532 ;;
6533 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006534 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00006535 bflt="yes"
6536 ;;
6537 sparc)
aurel322408a522008-04-20 20:19:44 +00006538 ;;
6539 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006540 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00006541 ;;
6542 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006543 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006544 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006545 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02006546 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006547 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006548 s390x)
Christian Borntraeger86158a22017-03-08 12:41:14 +01006549 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 +01006550 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08006551 tilegx)
6552 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07006553 tricore)
6554 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006555 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006556 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006557 xtensa|xtensaeb)
6558 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04006559 ;;
aurel322408a522008-04-20 20:19:44 +00006560 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006561 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00006562 ;;
6563esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006564# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6565if [ "$TARGET_BASE_ARCH" = "" ]; then
6566 TARGET_BASE_ARCH=$TARGET_ARCH
6567fi
6568
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006569symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6570
Daniel P. Berrange99afc912012-08-20 15:31:38 +01006571upper() {
6572 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6573}
6574
Stefan Weil89138852016-05-16 15:10:20 +02006575target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02006576echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006577echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02006578echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02006579if [ "$TARGET_ABI_DIR" = "" ]; then
6580 TARGET_ABI_DIR=$TARGET_ARCH
6581fi
Juan Quintela25be2102009-10-07 02:41:00 +02006582echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07006583if [ "$HOST_VARIANT_DIR" != "" ]; then
6584 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6585fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006586
6587if supported_xen_target $target; then
6588 echo "CONFIG_XEN=y" >> $config_target_mak
6589 if test "$xen_pci_passthrough" = yes; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00006590 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006591 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006592fi
6593if supported_kvm_target $target; then
6594 echo "CONFIG_KVM=y" >> $config_target_mak
6595 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006596 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureaue6a74862017-08-03 11:07:46 +02006597 if test "$vhost_user" = "yes" ; then
6598 echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak
6599 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02006600 fi
Paolo Bonzini3b6b7552012-09-17 11:59:41 +02006601fi
6602if supported_hax_target $target; then
6603 echo "CONFIG_HAX=y" >> $config_target_mak
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006604fi
bellardde83cd02003-06-15 20:25:43 +00006605if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006606 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006607fi
6608if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006609 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00006610 if test "$mttcg" = "yes" ; then
6611 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6612 fi
bellardde83cd02003-06-15 20:25:43 +00006613fi
bellard997344f2003-10-27 21:10:39 +00006614if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006615 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01006616 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00006617fi
ths831b7822007-01-18 20:06:33 +00006618if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006619 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00006620fi
pbrook56aebc82008-10-11 17:55:29 +00006621list=""
6622if test ! -z "$gdb_xml_files" ; then
6623 for x in $gdb_xml_files; do
6624 list="$list $source_path/gdb-xml/$x"
6625 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02006626 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00006627fi
bellardde83cd02003-06-15 20:25:43 +00006628
pbrooke5fe0c52006-06-11 13:32:59 +00006629if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02006630 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00006631fi
blueswir184778502008-10-26 20:33:16 +00006632if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006633 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00006634fi
bellard5b0753e2005-03-01 21:37:28 +00006635
Juan Quintela4afddb52009-08-03 14:46:45 +02006636# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02006637
Juan Quintela4afddb52009-08-03 14:46:45 +02006638cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02006639ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02006640
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006641disas_config() {
6642 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6643 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6644}
6645
Juan Quintela64656022009-08-03 14:46:53 +02006646for i in $ARCH $TARGET_BASE_ARCH ; do
6647 case "$i" in
6648 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006649 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02006650 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05006651 aarch64)
6652 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006653 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05006654 fi
6655 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006656 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006657 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006658 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006659 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006660 fi
Juan Quintela64656022009-08-03 14:46:53 +02006661 ;;
6662 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006663 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02006664 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07006665 hppa)
6666 disas_config "HPPA"
6667 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006668 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006669 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02006670 ;;
Michael Walle79368f42012-03-31 19:54:20 +02006671 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006672 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02006673 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006674 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006675 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02006676 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006677 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006678 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02006679 ;;
6680 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006681 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02006682 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006683 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006684 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04006685 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006686 nios2)
6687 disas_config "NIOS2"
6688 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006689 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006690 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08006691 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006692 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006693 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02006694 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006695 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006696 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02006697 ;;
6698 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006699 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02006700 ;;
6701 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006702 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02006703 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006704 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006705 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04006706 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006707 esac
6708done
Stefan Weil9195b2c2011-10-19 07:07:18 +02006709if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006710 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02006711fi
Juan Quintela64656022009-08-03 14:46:53 +02006712
Juan Quintela6ee71262009-08-03 14:46:47 +02006713case "$ARCH" in
6714alpha)
6715 # Ensure there's only a single GP
6716 cflags="-msmall-data $cflags"
6717;;
6718esac
6719
Juan Quintelad02c1db2009-08-03 14:46:50 +02006720if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006721 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006722 if test "$target_linux_user" = "yes" ; then
6723 cflags="-p $cflags"
6724 ldflags="-p $ldflags"
6725 fi
6726 if test "$target_softmmu" = "yes" ; then
6727 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02006728 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006729 fi
6730fi
6731
Juan Quintela9b8e1112009-08-03 14:46:46 +02006732if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07006733 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02006734fi
Juan Quintelafa282482009-07-22 22:37:39 +02006735
Christian Borntraegere9a35912017-08-23 12:16:23 +02006736# Newer kernels on s390 check for an S390_PGSTE program header and
6737# enable the pgste page table extensions in that case. This makes
6738# the vm.allocate_pgste sysctl unnecessary. We enable this program
6739# header if
6740# - we build on s390x
6741# - we build the system emulation for s390x (qemu-system-s390x)
6742# - KVM is enabled
6743# - the linker supports --s390-pgste
6744if test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then
6745 if ld_has --s390-pgste ; then
6746 ldflags="-Wl,--s390-pgste $ldflags"
6747 fi
6748fi
6749
Juan Quintela25be2102009-10-07 02:41:00 +02006750echo "LDFLAGS+=$ldflags" >> $config_target_mak
6751echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02006752
bellard97a847b2003-08-10 21:36:04 +00006753done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00006754
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006755if [ "$dtc_internal" = "yes" ]; then
6756 echo "config-host.h: subdir-dtc" >> $config_host_mak
6757fi
Richard Hendersone219c492017-09-28 09:01:23 -07006758if [ "$capstone" = "git" -o "$capstone" = "internal" ]; then
6759 echo "config-host.h: subdir-capstone" >> $config_host_mak
6760fi
6761if test -n "$LIBCAPSTONE"; then
6762 echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak
6763fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006764
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08006765if test "$numa" = "yes"; then
6766 echo "CONFIG_NUMA=y" >> $config_host_mak
6767fi
6768
John Snowfd0e6052015-03-25 18:57:39 -04006769if test "$ccache_cpp2" = "yes"; then
6770 echo "export CCACHE_CPP2=y" >> $config_host_mak
6771fi
6772
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006773# build tree in object directory in case the source is not in the current directory
Fam Zhengb1fb9a62017-09-05 10:11:58 +08006774DIRS="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 +02006775DIRS="$DIRS docs docs/interop fsdev scsi"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006776DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006777DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02006778DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06006779FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6780FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02006781FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006782FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02006783FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006784FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006785FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01006786FILES="$FILES pc-bios/qemu-icon.bmp"
Stefan Hajnoczi3a586d22017-05-17 13:40:42 +01006787FILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit
Richard Henderson753d11f2011-06-24 11:58:37 -07006788for bios_file in \
6789 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11006790 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01006791 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07006792 $source_path/pc-bios/*.rom \
6793 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00006794 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07006795 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01006796 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07006797 $source_path/pc-bios/palcode-*
6798do
Stefan Weil89138852016-05-16 15:10:20 +02006799 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006800done
Stefan Weil89138852016-05-16 15:10:20 +02006801for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006802do
Stefan Weil89138852016-05-16 15:10:20 +02006803 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006804done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006805mkdir -p $DIRS
6806for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03006807 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01006808 symlink "$source_path/$f" "$f"
6809 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006810done
Paul Brook1ad21342009-05-19 16:17:58 +01006811
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006812# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06006813for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006814 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01006815 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006816 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006817 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006818 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006819 echo "CC=$cc" >> $config_mak
6820 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006821 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006822 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006823 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006824 echo "LD=$ld" >> $config_mak
Alistair Francis9f81aeb2017-11-07 17:10:46 -08006825 echo "RANLIB=$ranlib" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006826done
6827
Marc-André Lureaufe310172016-06-15 13:06:00 +02006828# set up tests data directory
6829if [ ! -e tests/data ]; then
6830 symlink "$source_path/tests/data" tests/data
6831fi
6832
Max Reitz76c75602014-05-24 23:24:56 +02006833# set up qemu-iotests in this build directory
6834iotests_common_env="tests/qemu-iotests/common.env"
6835iotests_check="tests/qemu-iotests/check"
6836
6837echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6838echo >> "$iotests_common_env"
6839echo "export PYTHON='$python'" >> "$iotests_common_env"
6840
6841if [ ! -e "$iotests_check" ]; then
6842 symlink "$source_path/$iotests_check" "$iotests_check"
6843fi
6844
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006845# Save the configure command line for later reuse.
6846cat <<EOD >config.status
6847#!/bin/sh
6848# Generated by configure.
6849# Run this file to recreate the current configuration.
6850# Compiler output produced by configure, useful for debugging
6851# configure, is in config.log if it exists.
6852EOD
6853printf "exec" >>config.status
6854printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006855echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006856chmod +x config.status
6857
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006858rm -r "$TMPDIR1"