blob: 6db3044fb03d97b007661ddbc756b673c0f8f6af [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
Peter Maydell76ad07a2013-04-08 12:11:26 +010043error_exit() {
44 echo
45 echo "ERROR: $1"
46 while test -n "$2"; do
47 echo " $2"
48 shift
49 done
50 echo
51 exit 1
52}
53
Peter Maydell9c83ffd2014-02-25 18:27:49 +000054do_compiler() {
55 # Run the compiler, capturing its output to the log. First argument
56 # is compiler binary to execute.
57 local compiler="$1"
58 shift
59 echo $compiler "$@" >> config.log
60 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010061 # Test passed. If this is an --enable-werror build, rerun
62 # the test with -Werror and bail out if it fails. This
63 # makes warning-generating-errors in configure test code
64 # obvious to developers.
65 if test "$werror" != "yes"; then
66 return 0
67 fi
68 # Don't bother rerunning the compile if we were already using -Werror
69 case "$*" in
70 *-Werror*)
71 return 0
72 ;;
73 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000074 echo $compiler -Werror "$@" >> config.log
75 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010076 error_exit "configure test passed without -Werror but failed with -Werror." \
77 "This is probably a bug in the configure script. The failing command" \
78 "will be at the bottom of config.log." \
79 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010080}
81
Peter Maydell9c83ffd2014-02-25 18:27:49 +000082do_cc() {
83 do_compiler "$cc" "$@"
84}
85
86do_cxx() {
87 do_compiler "$cxx" "$@"
88}
89
90update_cxxflags() {
91 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
92 # options which some versions of GCC's C++ compiler complain about
93 # because they only make sense for C programs.
94 QEMU_CXXFLAGS=
95 for arg in $QEMU_CFLAGS; do
96 case $arg in
97 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
98 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
99 ;;
100 *)
101 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
102 ;;
103 esac
104 done
105}
106
Juan Quintela52166aa2009-08-03 14:46:03 +0200107compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400108 local_cflags="$1"
109 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200110}
111
112compile_prog() {
113 local_cflags="$1"
114 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100115 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200116}
117
Paolo Bonzini11568d62010-12-23 11:43:58 +0100118# symbolically link $1 to $2. Portable version of "ln -sf".
119symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100120 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800121 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100122 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100123}
124
Loïc Minier0dba6192010-01-28 21:26:51 +0000125# check whether a command is available to this shell (may be either an
126# executable or a builtin)
127has() {
128 type "$1" >/dev/null 2>&1
129}
130
131# search for an executable in PATH
132path_of() {
133 local_command="$1"
134 local_ifs="$IFS"
135 local_dir=""
136
137 # pathname has a dir component?
138 if [ "${local_command#*/}" != "$local_command" ]; then
139 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
140 echo "$local_command"
141 return 0
142 fi
143 fi
144 if [ -z "$local_command" ]; then
145 return 1
146 fi
147
148 IFS=:
149 for local_dir in $PATH; do
150 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
151 echo "$local_dir/$local_command"
152 IFS="${local_ifs:-$(printf ' \t\n')}"
153 return 0
154 fi
155 done
156 # not found
157 IFS="${local_ifs:-$(printf ' \t\n')}"
158 return 1
159}
160
Lluís Vilanova5b808272014-05-27 15:02:14 +0200161have_backend () {
162 echo "$trace_backends" | grep "$1" >/dev/null
163}
164
bellard7d132992003-03-06 23:23:54 +0000165# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200166source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200167cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300168iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000169interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000170static="no"
bellard7d132992003-03-06 23:23:54 +0000171cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000172audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800173block_drv_rw_whitelist=""
174block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000175host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200176libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200177libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200178audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400179audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200180cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500181libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100182debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100183stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000184
Stefan Weilafb63eb2012-09-26 22:04:38 +0200185# Don't accept a target_list environment variable.
186unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100187
188# Default value for a variable defining feature "foo".
189# * foo="no" feature will only be used if --enable-foo arg is given
190# * foo="" feature will be searched for, and if found, will be used
191# unless --disable-foo is given
192# * foo="yes" this value will only be set by --enable-foo flag.
193# feature will searched for,
194# if not found, configure exits with error
195#
196# Always add --enable-foo and --disable-foo command line args.
197# Distributions want to ensure that several features are compiled in, and it
198# is impossible without a --enable-foo that exits if a feature is not found.
199
200bluez=""
201brlapi=""
202curl=""
203curses=""
204docs=""
205fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100206netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200207pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100208sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400209sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530210virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100211vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100212sparse="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100213vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100214vnc_sasl=""
215vnc_jpeg=""
216vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100217xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000218xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000219xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000220xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100221linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500222cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100223attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200224libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100225xfs=""
226
Bradd41a75a2011-07-26 23:11:26 -0400227vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000228vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100229vhost_vsock="no"
Bradd41a75a2011-07-26 23:11:26 -0400230kvm="no"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100231hax="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400232rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100233gprof="no"
234debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100235debug="no"
John Snowb553a042015-11-03 15:43:42 -0500236fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100237strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200238tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100239bigendian="no"
240mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000241gcov="no"
242gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100243EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800244DSOSUF=".so"
245LDFLAGS_SHARED="-shared"
246modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100247prefix="/usr/local"
248mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300249datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300250qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100251bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300252libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400253libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200254includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100255sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300256local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100257confsuffix="/qemu"
258slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100259oss_lib=""
260bsd="no"
261linux="no"
262solaris="no"
263profiler="no"
264cocoa="no"
265softmmu="yes"
266linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100267bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100268aix="no"
269blobs="yes"
270pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200271pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200272qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300273trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100274trace_file="trace"
275spice=""
276rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200277smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100278libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200279usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100280opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100281opengl_dmabuf="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800282avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300283zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200284lzo=""
285snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100286bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400287guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400288guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500289guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300290guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400291vss_win32_sdk=""
292win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100293want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100294libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100295libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100296coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200297coroutine_pool=""
Peter Lieven7d992e42016-09-27 11:58:45 +0200298debug_stack_usage="no"
Eduardo Otubof7945732012-08-14 18:44:05 -0300299seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530300glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400301glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530302glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530303glusterfs_zerofill="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600304gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200305gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200306gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100307tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100308gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900309gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100310nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100311nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100312gcrypt=""
Longpeng(Mike)1f923c72016-12-13 18:42:55 +0800313gcrypt_hmac="no"
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100314gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100315vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200316virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400317tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100318libssh2=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800319numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800320tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200321jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800322replication="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100323
Peter Maydell898be3e2017-03-21 14:31:57 +0000324supported_cpu="no"
325supported_os="no"
Peter Maydellfb59dab2017-03-28 14:01:52 +0100326bogus_os="no"
Peter Maydell898be3e2017-03-21 14:31:57 +0000327
aliguoriac0df512008-12-29 17:14:15 +0000328# parse CC options first
329for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200330 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000331 case "$opt" in
332 --cross-prefix=*) cross_prefix="$optarg"
333 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100334 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000335 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400336 --cxx=*) CXX="$optarg"
337 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100338 --source-path=*) source_path="$optarg"
339 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200340 --cpu=*) cpu="$optarg"
341 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100342 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100343 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200344 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100345 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100346 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200347 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100348 --enable-debug-info) debug_info="yes"
349 ;;
350 --disable-debug-info) debug_info="no"
351 ;;
aliguoriac0df512008-12-29 17:14:15 +0000352 esac
353done
aliguoriac0df512008-12-29 17:14:15 +0000354# OS specific
355# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100356# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000357
Peter Maydelle49d0212012-12-07 15:39:13 +0000358# Preferred compiler:
359# ${CC} (if set)
360# ${cross_prefix}gcc (if cross-prefix specified)
361# system compiler
362if test -z "${CC}${cross_prefix}"; then
363 cc="$host_cc"
364else
365 cc="${CC-${cross_prefix}gcc}"
366fi
367
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400368if test -z "${CXX}${cross_prefix}"; then
369 cxx="c++"
370else
371 cxx="${CXX-${cross_prefix}g++}"
372fi
373
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500374ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700375as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700376ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000377cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500378objcopy="${OBJCOPY-${cross_prefix}objcopy}"
379ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200380nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500381strip="${STRIP-${cross_prefix}strip}"
382windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300383pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
384query_pkg_config() {
385 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
386}
387pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500388sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000389sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000390
Peter Maydell45d285a2013-10-21 21:03:06 +0100391# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
392ARFLAGS="${ARFLAGS-rv}"
393
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200394# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100395# We use -fwrapv to tell the compiler that we require a C dialect where
396# left shift of signed integers is well defined and has the expected
397# 2s-complement style results. (Both clang and gcc agree that it
398# provides these semantics.)
399QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400400QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100401QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200402QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200403QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100404if test "$debug_info" = "yes"; then
405 CFLAGS="-g $CFLAGS"
406 LDFLAGS="-g $LDFLAGS"
407fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200408
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100409# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200410source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100411
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300412# running configure in the source tree?
413# we know that's the case if configure is there.
414if test -f "./configure"; then
415 pwd_is_source_path="y"
416else
417 pwd_is_source_path="n"
418fi
419
aliguoriac0df512008-12-29 17:14:15 +0000420check_define() {
421cat > $TMPC <<EOF
422#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000423#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000424#endif
425int main(void) { return 0; }
426EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200427 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000428}
429
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200430check_include() {
431cat > $TMPC <<EOF
432#include <$1>
433int main(void) { return 0; }
434EOF
435 compile_object
436}
437
John Snow93b25862015-03-25 18:57:37 -0400438write_c_skeleton() {
439 cat > $TMPC <<EOF
440int main(void) { return 0; }
441EOF
442}
443
Peter Maydellbbea4052012-08-14 15:35:34 +0100444if check_define __linux__ ; then
445 targetos="Linux"
446elif check_define _WIN32 ; then
447 targetos='MINGW32'
448elif check_define __OpenBSD__ ; then
449 targetos='OpenBSD'
450elif check_define __sun__ ; then
451 targetos='SunOS'
452elif check_define __HAIKU__ ; then
453 targetos='Haiku'
454else
Stefan Weil89138852016-05-16 15:10:20 +0200455 targetos=$(uname -s)
Peter Maydellbbea4052012-08-14 15:35:34 +0100456fi
457
458# Some host OSes need non-standard checks for which CPU to use.
459# Note that these checks are broken for cross-compilation: if you're
460# cross-compiling to one of these OSes then you'll need to specify
461# the correct CPU with the --cpu option.
462case $targetos in
463Darwin)
464 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
465 # run 64-bit userspace code.
466 # If the user didn't specify a CPU explicitly and the kernel says this is
467 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
468 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
469 cpu="x86_64"
470 fi
471 ;;
472SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200473 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100474 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
475 cpu="x86_64"
476 fi
477esac
478
Juan Quintela2ff6b912009-08-03 14:45:55 +0200479if test ! -z "$cpu" ; then
480 # command line argument
481 :
482elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000483 cpu="i386"
484elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700485 if check_define __ILP32__ ; then
486 cpu="x32"
487 else
488 cpu="x86_64"
489 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000490elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000491 if check_define __arch64__ ; then
492 cpu="sparc64"
493 else
494 cpu="sparc"
495 fi
malcfdf7ed92009-01-14 18:39:52 +0000496elif check_define _ARCH_PPC ; then
497 if check_define _ARCH_PPC64 ; then
498 cpu="ppc64"
499 else
500 cpu="ppc"
501 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200502elif check_define __mips__ ; then
503 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200504elif check_define __ia64__ ; then
505 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200506elif check_define __s390__ ; then
507 if check_define __s390x__ ; then
508 cpu="s390x"
509 else
510 cpu="s390"
511 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100512elif check_define __arm__ ; then
513 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100514elif check_define __aarch64__ ; then
515 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000516else
Stefan Weil89138852016-05-16 15:10:20 +0200517 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000518fi
519
Peter Maydell359bc952011-12-24 13:07:25 +0000520ARCH=
521# Normalise host CPU name and set ARCH.
522# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000523case "$cpu" in
Peter Maydell6499fd12017-03-28 11:58:38 +0100524 ppc|ppc64|s390|s390x|sparc64|x32)
Peter Maydell898be3e2017-03-21 14:31:57 +0000525 cpu="$cpu"
526 supported_cpu="yes"
527 ;;
Peter Maydell6499fd12017-03-28 11:58:38 +0100528 ia64)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200529 cpu="$cpu"
530 ;;
bellard7d132992003-03-06 23:23:54 +0000531 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000532 cpu="i386"
Peter Maydell898be3e2017-03-21 14:31:57 +0000533 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000534 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000535 x86_64|amd64)
536 cpu="x86_64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000537 supported_cpu="yes"
aurel32aaa5fa12008-04-11 22:04:22 +0000538 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100539 armv*b|armv*l|arm)
540 cpu="arm"
Peter Maydell898be3e2017-03-21 14:31:57 +0000541 supported_cpu="yes"
bellard7d132992003-03-06 23:23:54 +0000542 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100543 aarch64)
544 cpu="aarch64"
Peter Maydell898be3e2017-03-21 14:31:57 +0000545 supported_cpu="yes"
Claudio Fontana1f080312013-06-12 16:20:23 +0100546 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200547 mips*)
548 cpu="mips"
Peter Maydell898be3e2017-03-21 14:31:57 +0000549 supported_cpu="yes"
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200550 ;;
blueswir131422552007-04-16 18:27:06 +0000551 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000552 cpu="sparc"
Peter Maydell6499fd12017-03-28 11:58:38 +0100553 supported_cpu="yes"
bellardae228532003-05-13 18:59:59 +0000554 ;;
bellard7d132992003-03-06 23:23:54 +0000555 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000556 # This will result in either an error or falling back to TCI later
557 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000558 ;;
559esac
Peter Maydell359bc952011-12-24 13:07:25 +0000560if test -z "$ARCH"; then
561 ARCH="$cpu"
562fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200563
bellard7d132992003-03-06 23:23:54 +0000564# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200565
Stacey Sonadfc3e92014-06-08 09:57:22 -0700566# host *BSD for user mode
567HOST_VARIANT_DIR=""
568
bellard7d132992003-03-06 23:23:54 +0000569case $targetos in
bellard67b915a2004-03-31 23:37:16 +0000570MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200571 mingw32="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100572 hax="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200573 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200574 if check_include dsound.h; then
575 audio_drv_list="dsound"
576 else
577 audio_drv_list=""
578 fi
Peter Maydell898be3e2017-03-21 14:31:57 +0000579 supported_os="yes"
bellard67b915a2004-03-31 23:37:16 +0000580;;
ths5c40d2b2007-06-23 16:03:36 +0000581GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100582 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200583 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200584 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000585;;
bellard7d3505c2004-05-12 19:32:15 +0000586FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200587 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100588 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200589 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200590 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100591 # needed for kinfo_getvmmap(3) in libutil.h
592 LIBS="-lutil $LIBS"
Ed Mastea7764f12016-11-21 20:32:45 -0500593 # needed for kinfo_getproc
594 libs_qga="-lutil $libs_qga"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100595 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700596 HOST_VARIANT_DIR="freebsd"
Peter Maydell898be3e2017-03-21 14:31:57 +0000597 supported_os="yes"
bellard7d3505c2004-05-12 19:32:15 +0000598;;
blueswir1c5e97232009-03-07 20:06:23 +0000599DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200600 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100601 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200603 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700604 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000605;;
bellard7d3505c2004-05-12 19:32:15 +0000606NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200607 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100608 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200609 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200610 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200611 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700612 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000613;;
614OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200615 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100616 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400617 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200618 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700619 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000620;;
bellard83fb7ad2004-07-05 21:25:26 +0000621Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200622 bsd="yes"
623 darwin="yes"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100624 hax="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800625 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200626 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200627 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200628 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200629 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200630 cocoa="yes"
631 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200632 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200633 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200634 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100635 # Disable attempts to use ObjectiveC features in os/object.h since they
636 # won't work when we're compiling with gcc as a C compiler.
637 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700638 HOST_VARIANT_DIR="darwin"
Peter Maydell898be3e2017-03-21 14:31:57 +0000639 supported_os="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000640;;
bellardec530c82006-04-25 22:36:06 +0000641SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100643 make="${MAKE-gmake}"
644 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000645 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400646 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200647 needs_libsunmath="no"
Stefan Weil89138852016-05-16 15:10:20 +0200648 solarisrev=$(uname -r | cut -f2 -d.)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200649 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
650 if test "$solarisrev" -le 9 ; then
651 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
652 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200653 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
654 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
655 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200656 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100657 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
658 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
659 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
660 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200661 fi
thsef18c882007-09-16 22:12:39 +0000662 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200663 fi
664 if test -f /usr/include/sys/soundcard.h ; then
665 audio_drv_list="oss"
666 fi
667 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000668# needed for CMSG_ macros in sys/socket.h
669 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
670# needed for TIOCWIN* defines in termios.h
671 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200672 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200673 solarisnetlibs="-lsocket -lnsl -lresolv"
674 LIBS="$solarisnetlibs $LIBS"
675 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000676;;
malcb29fe3e2008-11-18 01:42:22 +0000677AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200678 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100679 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000680;;
Andreas Färber179cf402010-09-20 00:50:43 +0200681Haiku)
682 haiku="yes"
683 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
684 LIBS="-lposix_error_mapper -lnetwork $LIBS"
685;;
Peter Maydell898be3e2017-03-21 14:31:57 +0000686Linux)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200687 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200688 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200689 linux="yes"
690 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200691 kvm="yes"
692 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000693 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100694 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000695 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
Peter Maydell898be3e2017-03-21 14:31:57 +0000696 supported_os="yes"
697;;
698*)
Peter Maydellfb59dab2017-03-28 14:01:52 +0100699 # This is a fatal error, but don't report it yet, because we
700 # might be going to just print the --help text, or it might
701 # be the result of a missing compiler.
702 bogus_os="yes"
bellardfb065182004-11-09 23:09:44 +0000703;;
bellard7d132992003-03-06 23:23:54 +0000704esac
705
bellard7d3505c2004-05-12 19:32:15 +0000706if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000707 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200708 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000709 fi
bellard7d3505c2004-05-12 19:32:15 +0000710fi
711
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100712: ${make=${MAKE-make}}
713: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100714: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400715: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100716
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100717# Default objcc to clang if available, otherwise use CC
718if has clang; then
719 objcc=clang
720else
721 objcc="$cc"
722fi
723
Juan Quintela3457a3f2009-08-03 14:46:07 +0200724if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200725 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800726 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200727 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100728 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
729 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100730 # MinGW needs -mthreads for TLS and macro _MT.
731 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100732 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400733 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100734 if compile_prog "" "-liberty" ; then
735 LIBS="-liberty $LIBS"
736 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200737 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200738 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300739 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300740 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200741 bindir="\${prefix}"
742 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200743 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200744 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200745 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200746fi
747
Anthony Liguori487fefd2009-06-11 13:28:25 -0500748werror=""
bellard85aa5182007-11-11 20:17:03 +0000749
bellard7d132992003-03-06 23:23:54 +0000750for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200751 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000752 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000753 --help|-h) show_help=yes
754 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400755 --version|-V) exec cat $source_path/VERSION
756 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000757 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000758 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000759 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000760 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100761 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000762 ;;
aliguoriac0df512008-12-29 17:14:15 +0000763 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000764 ;;
aliguoriac0df512008-12-29 17:14:15 +0000765 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000766 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000767 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000768 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400769 --cxx=*)
770 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200771 --iasl=*) iasl="$optarg"
772 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100773 --objcc=*) objcc="$optarg"
774 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000775 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000776 ;;
pbrook6a882642006-04-17 13:57:12 +0000777 --install=*) install="$optarg"
778 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000779 --python=*) python="$optarg"
780 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000781 --gcov=*) gcov_tool="$optarg"
782 ;;
Brade2d88302011-09-02 16:53:28 -0400783 --smbd=*) smbd="$optarg"
784 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200785 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000786 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200787 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000788 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100789 --enable-debug-info)
790 ;;
791 --disable-debug-info)
792 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800793 --enable-modules)
794 modules="yes"
795 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000796 --disable-modules)
797 modules="no"
798 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200799 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000800 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000801 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000802 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200803 --enable-trace-backends=*) trace_backends="$optarg"
804 ;;
805 # XXX: backwards compatibility
806 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100807 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100808 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100809 ;;
bellard7d132992003-03-06 23:23:54 +0000810 --enable-gprof) gprof="yes"
811 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000812 --enable-gcov) gcov="yes"
813 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100814 --static)
815 static="yes"
816 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300817 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000818 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200819 --mandir=*) mandir="$optarg"
820 ;;
821 --bindir=*) bindir="$optarg"
822 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300823 --libdir=*) libdir="$optarg"
824 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400825 --libexecdir=*) libexecdir="$optarg"
826 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200827 --includedir=*) includedir="$optarg"
828 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300829 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200830 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300831 --with-confsuffix=*) confsuffix="$optarg"
832 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300833 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200834 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100835 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600836 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300837 --localstatedir=*) local_statedir="$optarg"
838 ;;
839 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400840 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
841 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
842 # These switches are silently ignored, for compatibility with
843 # autoconf-generated configure scripts. This allows QEMU's
844 # configure to be used by RPM and similar macros that set
845 # lots of directory switches by default.
846 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200847 --with-system-pixman) pixman="system"
848 ;;
849 --without-system-pixman) pixman="internal"
850 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100851 --without-pixman) pixman="none"
852 ;;
bellard97a847b2003-08-10 21:36:04 +0000853 --disable-sdl) sdl="no"
854 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200855 --enable-sdl) sdl="yes"
856 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000857 --with-sdlabi=*) sdlabi="$optarg"
858 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200859 --disable-qom-cast-debug) qom_cast_debug="no"
860 ;;
861 --enable-qom-cast-debug) qom_cast_debug="yes"
862 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530863 --disable-virtfs) virtfs="no"
864 ;;
865 --enable-virtfs) virtfs="yes"
866 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100867 --disable-vnc) vnc="no"
868 ;;
869 --enable-vnc) vnc="yes"
870 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000871 --oss-lib=*) oss_lib="$optarg"
872 ;;
malc0c58ac12008-06-25 21:04:05 +0000873 --audio-drv-list=*) audio_drv_list="$optarg"
874 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200875 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800876 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200877 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100878 ;;
aurel32f8393942009-04-13 18:45:38 +0000879 --enable-debug-tcg) debug_tcg="yes"
880 ;;
881 --disable-debug-tcg) debug_tcg="no"
882 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100883 --enable-debug)
884 # Enable debugging options that aren't excessively noisy
885 debug_tcg="yes"
886 debug="yes"
887 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500888 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100889 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000890 --enable-sparse) sparse="yes"
891 ;;
892 --disable-sparse) sparse="no"
893 ;;
aliguori1625af82009-04-05 17:41:02 +0000894 --disable-strip) strip_opt="no"
895 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000896 --disable-vnc-sasl) vnc_sasl="no"
897 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200898 --enable-vnc-sasl) vnc_sasl="yes"
899 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200900 --disable-vnc-jpeg) vnc_jpeg="no"
901 ;;
902 --enable-vnc-jpeg) vnc_jpeg="yes"
903 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200904 --disable-vnc-png) vnc_png="no"
905 ;;
906 --enable-vnc-png) vnc_png="yes"
907 ;;
bellard443f1372004-06-04 11:13:20 +0000908 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000909 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000910 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000911 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200912 --enable-vde) vde="yes"
913 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100914 --disable-netmap) netmap="no"
915 ;;
916 --enable-netmap) netmap="yes"
917 ;;
aliguorie37630c2009-04-22 15:19:10 +0000918 --disable-xen) xen="no"
919 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200920 --enable-xen) xen="yes"
921 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000922 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
923 ;;
924 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
925 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +0000926 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
927 ;;
928 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
929 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000930 --disable-brlapi) brlapi="no"
931 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200932 --enable-brlapi) brlapi="yes"
933 ;;
balrogfb599c92008-09-28 23:49:55 +0000934 --disable-bluez) bluez="no"
935 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200936 --enable-bluez) bluez="yes"
937 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000938 --disable-kvm) kvm="no"
939 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200940 --enable-kvm) kvm="yes"
941 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100942 --disable-hax) hax="no"
zhanghailiang180fb752016-10-27 14:43:08 +0800943 ;;
Vincent Palatinb0cb0a62017-01-10 11:59:57 +0100944 --enable-hax) hax="yes"
zhanghailiang180fb752016-10-27 14:43:08 +0800945 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200946 --disable-tcg-interpreter) tcg_interpreter="no"
947 ;;
948 --enable-tcg-interpreter) tcg_interpreter="yes"
949 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500950 --disable-cap-ng) cap_ng="no"
951 ;;
952 --enable-cap-ng) cap_ng="yes"
953 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100954 --disable-spice) spice="no"
955 ;;
956 --enable-spice) spice="yes"
957 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100958 --disable-libiscsi) libiscsi="no"
959 ;;
960 --enable-libiscsi) libiscsi="yes"
961 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100962 --disable-libnfs) libnfs="no"
963 ;;
964 --enable-libnfs) libnfs="yes"
965 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000966 --enable-profiler) profiler="yes"
967 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400968 --disable-cocoa) cocoa="no"
969 ;;
malcc2de5c92008-06-28 19:13:06 +0000970 --enable-cocoa)
971 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +0200972 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +0000973 ;;
pbrookcad25d62006-03-19 16:31:11 +0000974 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000975 ;;
pbrookcad25d62006-03-19 16:31:11 +0000976 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000977 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000978 --disable-user)
979 linux_user="no" ;
980 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000981 ;;
982 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000983 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000984 ;;
ths831b7822007-01-18 20:06:33 +0000985 --enable-linux-user) linux_user="yes"
986 ;;
blueswir184778502008-10-26 20:33:16 +0000987 --disable-bsd-user) bsd_user="no"
988 ;;
989 --enable-bsd-user) bsd_user="yes"
990 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200991 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300992 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200993 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300994 ;;
bellard85aa5182007-11-11 20:17:03 +0000995 --enable-werror) werror="yes"
996 ;;
997 --disable-werror) werror="no"
998 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100999 --enable-stack-protector) stack_protector="yes"
1000 ;;
1001 --disable-stack-protector) stack_protector="no"
1002 ;;
balrog4d3b6f62008-02-10 16:33:14 +00001003 --disable-curses) curses="no"
1004 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +02001005 --enable-curses) curses="yes"
1006 ;;
Alexander Graf769ce762009-05-11 17:41:42 +02001007 --disable-curl) curl="no"
1008 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001009 --enable-curl) curl="yes"
1010 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001011 --disable-fdt) fdt="no"
1012 ;;
1013 --enable-fdt) fdt="yes"
1014 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001015 --disable-linux-aio) linux_aio="no"
1016 ;;
1017 --enable-linux-aio) linux_aio="yes"
1018 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001019 --disable-attr) attr="no"
1020 ;;
1021 --enable-attr) attr="yes"
1022 ;;
ths77755342008-11-27 15:45:16 +00001023 --disable-blobs) blobs="no"
1024 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001025 --with-pkgversion=*) pkgversion=" ($optarg)"
1026 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001027 --with-coroutine=*) coroutine="$optarg"
1028 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001029 --disable-coroutine-pool) coroutine_pool="no"
1030 ;;
1031 --enable-coroutine-pool) coroutine_pool="yes"
1032 ;;
Peter Lieven7d992e42016-09-27 11:58:45 +02001033 --enable-debug-stack-usage) debug_stack_usage="yes"
1034 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001035 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001036 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001037 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001038 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001039 --disable-vhost-net) vhost_net="no"
1040 ;;
1041 --enable-vhost-net) vhost_net="yes"
1042 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001043 --disable-vhost-scsi) vhost_scsi="no"
1044 ;;
1045 --enable-vhost-scsi) vhost_scsi="yes"
1046 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001047 --disable-vhost-vsock) vhost_vsock="no"
1048 ;;
1049 --enable-vhost-vsock) vhost_vsock="yes"
1050 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001051 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001052 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001053 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001054 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001055 --disable-rbd) rbd="no"
1056 ;;
1057 --enable-rbd) rbd="yes"
1058 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001059 --disable-xfsctl) xfs="no"
1060 ;;
1061 --enable-xfsctl) xfs="yes"
1062 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001063 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001064 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001065 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001066 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001067 --disable-libusb) libusb="no"
1068 ;;
1069 --enable-libusb) libusb="yes"
1070 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001071 --disable-usb-redir) usb_redir="no"
1072 ;;
1073 --enable-usb-redir) usb_redir="yes"
1074 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001075 --disable-zlib-test) zlib="no"
1076 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001077 --disable-lzo) lzo="no"
1078 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001079 --enable-lzo) lzo="yes"
1080 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001081 --disable-snappy) snappy="no"
1082 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001083 --enable-snappy) snappy="yes"
1084 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001085 --disable-bzip2) bzip2="no"
1086 ;;
1087 --enable-bzip2) bzip2="yes"
1088 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001089 --enable-guest-agent) guest_agent="yes"
1090 ;;
1091 --disable-guest-agent) guest_agent="no"
1092 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001093 --enable-guest-agent-msi) guest_agent_msi="yes"
1094 ;;
1095 --disable-guest-agent-msi) guest_agent_msi="no"
1096 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001097 --with-vss-sdk) vss_win32_sdk=""
1098 ;;
1099 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1100 ;;
1101 --without-vss-sdk) vss_win32_sdk="no"
1102 ;;
1103 --with-win-sdk) win_sdk=""
1104 ;;
1105 --with-win-sdk=*) win_sdk="$optarg"
1106 ;;
1107 --without-win-sdk) win_sdk="no"
1108 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001109 --enable-tools) want_tools="yes"
1110 ;;
1111 --disable-tools) want_tools="no"
1112 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001113 --enable-seccomp) seccomp="yes"
1114 ;;
1115 --disable-seccomp) seccomp="no"
1116 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301117 --disable-glusterfs) glusterfs="no"
1118 ;;
1119 --enable-glusterfs) glusterfs="yes"
1120 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001121 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1122 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001123 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001124 --enable-vhdx|--disable-vhdx)
1125 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1126 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001127 --enable-uuid|--disable-uuid)
1128 echo "$0: $opt is obsolete, UUID support is always built" >&2
1129 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001130 --disable-gtk) gtk="no"
1131 ;;
1132 --enable-gtk) gtk="yes"
1133 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001134 --tls-priority=*) tls_priority="$optarg"
1135 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001136 --disable-gnutls) gnutls="no"
1137 ;;
1138 --enable-gnutls) gnutls="yes"
1139 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001140 --disable-nettle) nettle="no"
1141 ;;
1142 --enable-nettle) nettle="yes"
1143 ;;
1144 --disable-gcrypt) gcrypt="no"
1145 ;;
1146 --enable-gcrypt) gcrypt="yes"
1147 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001148 --enable-rdma) rdma="yes"
1149 ;;
1150 --disable-rdma) rdma="no"
1151 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001152 --with-gtkabi=*) gtkabi="$optarg"
1153 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001154 --disable-vte) vte="no"
1155 ;;
1156 --enable-vte) vte="yes"
1157 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001158 --disable-virglrenderer) virglrenderer="no"
1159 ;;
1160 --enable-virglrenderer) virglrenderer="yes"
1161 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001162 --disable-tpm) tpm="no"
1163 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001164 --enable-tpm) tpm="yes"
1165 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001166 --disable-libssh2) libssh2="no"
1167 ;;
1168 --enable-libssh2) libssh2="yes"
1169 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001170 --disable-numa) numa="no"
1171 ;;
1172 --enable-numa) numa="yes"
1173 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001174 --disable-tcmalloc) tcmalloc="no"
1175 ;;
1176 --enable-tcmalloc) tcmalloc="yes"
1177 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001178 --disable-jemalloc) jemalloc="no"
1179 ;;
1180 --enable-jemalloc) jemalloc="yes"
1181 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001182 --disable-replication) replication="no"
1183 ;;
1184 --enable-replication) replication="yes"
1185 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001186 *)
1187 echo "ERROR: unknown option $opt"
1188 echo "Try '$0 --help' for more information"
1189 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001190 ;;
bellard7d132992003-03-06 23:23:54 +00001191 esac
1192done
1193
bellard40293e52008-01-31 11:32:10 +00001194case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001195 ppc)
1196 CPU_CFLAGS="-m32"
1197 LDFLAGS="-m32 $LDFLAGS"
1198 ;;
1199 ppc64)
1200 CPU_CFLAGS="-m64"
1201 LDFLAGS="-m64 $LDFLAGS"
1202 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001203 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001204 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001205 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001206 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001207 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001208 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001209 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001210 ;;
ths76d83bd2007-11-18 21:22:10 +00001211 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001212 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001213 LDFLAGS="-m31 $LDFLAGS"
1214 ;;
1215 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001216 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001217 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001218 ;;
bellard40293e52008-01-31 11:32:10 +00001219 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001220 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001221 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001222 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001223 ;;
1224 x86_64)
Richard Henderson7ebee432016-06-29 21:10:59 -07001225 # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1226 # If we truly care, we should simply detect this case at
1227 # runtime and generate the fallback to serial emulation.
1228 CPU_CFLAGS="-m64 -mcx16"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001229 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001230 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001231 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001232 x32)
1233 CPU_CFLAGS="-mx32"
1234 LDFLAGS="-mx32 $LDFLAGS"
1235 cc_i386='$(CC) -m32'
1236 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001237 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001238esac
1239
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001240QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1241EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1242
Peter Maydellaffc88c2016-06-13 11:32:24 +01001243# For user-mode emulation the host arch has to be one we explicitly
1244# support, even if we're using TCI.
1245if [ "$ARCH" = "unknown" ]; then
1246 bsd_user="no"
1247 linux_user="no"
1248fi
1249
Peter Maydell60e0df22011-05-03 14:50:13 +01001250default_target_list=""
1251
Peter Maydell6e92f822013-05-20 16:16:15 +01001252mak_wilds=""
1253
1254if [ "$softmmu" = "yes" ]; then
1255 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001256fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001257if [ "$linux_user" = "yes" ]; then
1258 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001259fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001260if [ "$bsd_user" = "yes" ]; then
1261 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001262fi
1263
Peter Maydell6e92f822013-05-20 16:16:15 +01001264for config in $mak_wilds; do
1265 default_target_list="${default_target_list} $(basename "$config" .mak)"
1266done
1267
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001268# Enumerate public trace backends for --help output
1269trace_backend_list=$(echo $(grep -le '^PUBLIC = True$' scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1270
pbrookaf5db582006-04-08 14:26:41 +00001271if test x"$show_help" = x"yes" ; then
1272cat << EOF
1273
1274Usage: configure [options]
1275Options: [defaults in brackets after descriptions]
1276
Stefan Weil08fb77e2013-12-18 22:09:39 +01001277Standard options:
1278 --help print this message
1279 --prefix=PREFIX install in PREFIX [$prefix]
1280 --interp-prefix=PREFIX where to find shared libraries, etc.
1281 use %M for cpu name [$interp_prefix]
1282 --target-list=LIST set target list (default: build everything)
1283$(echo Available targets: $default_target_list | \
1284 fold -s -w 53 | sed -e 's/^/ /')
1285
1286Advanced options (experts only):
1287 --source-path=PATH path of source code [$source_path]
1288 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1289 --cc=CC use C compiler CC [$cc]
1290 --iasl=IASL use ACPI compiler IASL [$iasl]
1291 --host-cc=CC use C compiler CC [$host_cc] for code run at
1292 build time
1293 --cxx=CXX use C++ compiler CXX [$cxx]
1294 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1295 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1296 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1297 --make=MAKE use specified make [$make]
1298 --install=INSTALL use specified install [$install]
1299 --python=PYTHON use specified python [$python]
1300 --smbd=SMBD use specified smbd [$smbd]
1301 --static enable static build [$static]
1302 --mandir=PATH install man pages in PATH
1303 --datadir=PATH install firmware in PATH$confsuffix
1304 --docdir=PATH install documentation in PATH$confsuffix
1305 --bindir=PATH install binaries in PATH
1306 --libdir=PATH install libraries in PATH
1307 --sysconfdir=PATH install config in PATH$confsuffix
1308 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001309 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001310 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001311 --disable-strip disable stripping binaries
1312 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001313 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001314 --audio-drv-list=LIST set audio drivers list:
1315 Available drivers: $audio_possible_drivers
1316 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1317 --block-drv-rw-whitelist=L
1318 set block driver read-write whitelist
1319 (affects only QEMU, not qemu-img)
1320 --block-drv-ro-whitelist=L
1321 set block driver read-only whitelist
1322 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001323 --enable-trace-backends=B Set trace backend
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001324 Available backends: $trace_backend_list
Stefan Weil08fb77e2013-12-18 22:09:39 +01001325 --with-trace-file=NAME Full PATH,NAME of file to store traces
1326 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001327 --disable-slirp disable SLIRP userspace network connectivity
1328 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1329 --oss-lib path to OSS library
1330 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001331 --with-coroutine=BACKEND coroutine backend. Supported options:
1332 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001333 --enable-gcov enable test coverage analysis with gcov
1334 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001335 --disable-blobs disable installing provided firmware blobs
1336 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1337 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001338 --tls-priority default TLS protocol/cipher priority string
Lin Mac12d66a2017-03-10 18:14:05 +08001339 --enable-gprof QEMU profiling with gprof
1340 --enable-profiler profiler support
1341 --enable-xen-pv-domain-build
1342 xen pv domain builder
1343 --enable-debug-stack-usage
1344 track the maximum stack usage of stacks created by qemu_alloc_stack
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001345
1346Optional features, enabled with --enable-FEATURE and
1347disabled with --disable-FEATURE, default is enabled if available:
1348
1349 system all system emulation targets
1350 user supported user emulation targets
1351 linux-user all linux usermode emulation targets
1352 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001353 docs build documentation
1354 guest-agent build the QEMU Guest Agent
1355 guest-agent-msi build guest agent Windows MSI installation package
1356 pie Position Independent Executables
1357 modules modules support
1358 debug-tcg TCG debugging (default is disabled)
1359 debug-info debugging information
1360 sparse sparse checker
1361
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001362 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001363 nettle nettle cryptography support
1364 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001365 sdl SDL UI
1366 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1367 gtk gtk UI
1368 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1369 vte vte support for the gtk UI
1370 curses curses UI
1371 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001372 vnc-sasl SASL encryption for VNC server
1373 vnc-jpeg JPEG lossy compression for VNC server
1374 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001375 cocoa Cocoa UI (Mac OS X only)
1376 virtfs VirtFS
1377 xen xen backend driver support
1378 xen-pci-passthrough
1379 brlapi BrlAPI (Braile)
1380 curl curl connectivity
1381 fdt fdt device tree
1382 bluez bluez stack connectivity
1383 kvm KVM acceleration support
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01001384 hax HAX acceleration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001385 rdma RDMA-based migration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001386 vde support for vde network
1387 netmap support for netmap network
1388 linux-aio Linux AIO support
1389 cap-ng libcap-ng support
1390 attr attr and xattr support
1391 vhost-net vhost-net acceleration support
1392 spice spice
1393 rbd rados block device (rbd)
1394 libiscsi iscsi support
1395 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001396 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001397 libusb libusb (for usb passthrough)
1398 usb-redir usb network redirection support
1399 lzo support of lzo compression library
1400 snappy support of snappy compression library
1401 bzip2 support of bzip2 compression library
1402 (for reading bzip2-compressed dmg images)
1403 seccomp seccomp support
1404 coroutine-pool coroutine freelist (better performance)
1405 glusterfs GlusterFS backend
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001406 tpm TPM support
1407 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001408 numa libnuma support
1409 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001410 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001411 replication replication support
Lin Mac12d66a2017-03-10 18:14:05 +08001412 vhost-vsock virtio sockets device support
1413 opengl opengl support
1414 virglrenderer virgl rendering support
1415 xfsctl xfsctl support
1416 qom-cast-debug cast debugging support
1417 tools build qemu-io, qemu-nbd and qemu-image tools
Stefan Weil08fb77e2013-12-18 22:09:39 +01001418
1419NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001420EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001421exit 0
pbrookaf5db582006-04-08 14:26:41 +00001422fi
1423
Stefan Hajnoczic53eeaf2017-03-28 14:44:18 +01001424if ! has $python; then
1425 error_exit "Python not found. Use --python=/path/to/python"
1426fi
1427
1428# Note that if the Python conditional here evaluates True we will exit
1429# with status 1 which is a shell 'false' value.
1430if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1431 error_exit "Cannot use '$python', Python 2.6 or later is required." \
1432 "Note that Python 3 or later is not yet supported." \
1433 "Use --python=/path/to/python to specify a supported Python."
1434fi
1435
1436# Suppress writing compiled files
1437python="$python -B"
1438
Peter Maydell359bc952011-12-24 13:07:25 +00001439# Now we have handled --enable-tcg-interpreter and know we're not just
1440# printing the help message, bail out if the host CPU isn't supported.
1441if test "$ARCH" = "unknown"; then
1442 if test "$tcg_interpreter" = "yes" ; then
1443 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001444 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001445 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001446 fi
1447fi
1448
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001449# Consult white-list to determine whether to enable werror
1450# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001451if test -z "$werror" ; then
1452 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001453 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001454 werror="yes"
1455 else
1456 werror="no"
1457 fi
1458fi
1459
Paolo Bonzini8d050952010-12-23 11:43:52 +01001460# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001461write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001462if compile_object ; then
1463 : C compiler works ok
1464else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001465 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001466fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001467if ! compile_prog ; then
1468 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1469fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001470
Peter Maydellfb59dab2017-03-28 14:01:52 +01001471if test "$bogus_os" = "yes"; then
1472 # Now that we know that we're not printing the help and that
1473 # the compiler works (so the results of the check_defines we used
1474 # to identify the OS are reliable), if we didn't recognize the
1475 # host OS we should stop now.
1476 error_exit "Unrecognized host OS $targetos"
1477fi
1478
Peter Maydell98b21dc2014-02-20 15:10:16 +00001479# Check that the C++ compiler exists and works with the C compiler
1480if has $cxx; then
1481 cat > $TMPC <<EOF
1482int c_function(void);
1483int main(void) { return c_function(); }
1484EOF
1485
1486 compile_object
1487
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001488 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001489extern "C" {
1490 int c_function(void);
1491}
1492int c_function(void) { return 42; }
1493EOF
1494
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001495 update_cxxflags
1496
1497 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001498 # C++ compiler $cxx works ok with C compiler $cc
1499 :
1500 else
1501 echo "C++ compiler $cxx does not work with C compiler $cc"
1502 echo "Disabling C++ specific optional code"
1503 cxx=
1504 fi
1505else
1506 echo "No C++ compiler available; disabling C++ specific optional code"
1507 cxx=
1508fi
1509
Paolo Bonzini8d050952010-12-23 11:43:52 +01001510gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1511gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
Daniel P. Berrangeac7568b2017-02-06 11:29:53 +00001512gcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001513gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001514gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001515gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001516# Note that we do not add -Werror to gcc_flags here, because that would
1517# enable it for all configure tests. If a configure test failed due
1518# to -Werror this would just silently disable some features,
1519# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001520
1521cc_has_warning_flag() {
1522 write_c_skeleton;
1523
Peter Maydella1d29d62012-10-27 22:19:07 +01001524 # Use the positive sense of the flag when testing for -Wno-wombat
1525 # support (gcc will happily accept the -Wno- form of unknown
1526 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001527 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1528 compile_prog "-Werror $optflag" ""
1529}
1530
1531for flag in $gcc_flags; do
1532 if cc_has_warning_flag $flag ; then
1533 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001534 fi
1535done
1536
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001537if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001538 cat > $TMPC << EOF
1539int main(int argc, char *argv[])
1540{
1541 char arr[64], *p = arr, *c = argv[0];
1542 while (*c) {
1543 *p++ = *c++;
1544 }
1545 return 0;
1546}
1547EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001548 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001549 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001550 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001551 # We need to check both a compile and a link, since some compiler
1552 # setups fail only on a .c->.o compile and some only at link time
1553 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1554 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001555 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001556 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001557 break
1558 fi
1559 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001560 if test "$stack_protector" = yes; then
1561 if test $sp_on = 0; then
1562 error_exit "Stack protector not supported"
1563 fi
1564 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001565fi
1566
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001567# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1568# large functions that use global variables. The bug is in all releases of
1569# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1570# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1571cat > $TMPC << EOF
1572#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1573int main(void) { return 0; }
1574#else
1575#error No bug in this compiler.
1576#endif
1577EOF
1578if compile_prog "-Werror -fno-gcse" "" ; then
1579 TRANSLATE_OPT_CFLAGS=-fno-gcse
1580fi
1581
Avi Kivity40d64442011-11-15 20:12:17 +02001582if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001583 if test "$modules" = "yes" ; then
1584 error_exit "static and modules are mutually incompatible"
1585 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001586 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001587 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001588 else
1589 pie="no"
1590 fi
1591fi
1592
Emilio G. Cota768b7852015-04-29 13:09:02 +02001593# Unconditional check for compiler __thread support
1594 cat > $TMPC << EOF
1595static __thread int tls_var;
1596int main(void) { return tls_var; }
1597EOF
1598
1599if ! compile_prog "-Werror" "" ; then
1600 error_exit "Your compiler does not support the __thread specifier for " \
1601 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1602fi
1603
Avi Kivity40d64442011-11-15 20:12:17 +02001604if test "$pie" = ""; then
1605 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001606 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001607 ;;
1608 *)
1609 pie="no"
1610 ;;
1611 esac
1612fi
1613
1614if test "$pie" != "no" ; then
1615 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001616
1617#ifdef __linux__
1618# define THREAD __thread
1619#else
1620# define THREAD
1621#endif
1622
1623static THREAD int tls_var;
1624
1625int main(void) { return tls_var; }
1626
Avi Kivity40d64442011-11-15 20:12:17 +02001627EOF
1628 if compile_prog "-fPIE -DPIE" "-pie"; then
1629 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1630 LDFLAGS="-pie $LDFLAGS"
1631 pie="yes"
1632 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1633 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1634 fi
1635 else
1636 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001637 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001638 else
1639 echo "Disabling PIE due to missing toolchain support"
1640 pie="no"
1641 fi
1642 fi
Brad46eef332013-12-10 19:49:08 -05001643
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001644 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001645 CFLAGS_NOPIE="-fno-pie"
1646 LDFLAGS_NOPIE="-nopie"
1647 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001648fi
1649
Paolo Bonzini09dada42013-04-17 16:26:47 +02001650##########################################
1651# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1652# use i686 as default anyway, but for those that don't, an explicit
1653# specification is necessary
1654
1655if test "$cpu" = "i386"; then
1656 cat > $TMPC << EOF
1657static int sfaa(int *ptr)
1658{
1659 return __sync_fetch_and_and(ptr, 0);
1660}
1661
1662int main(void)
1663{
1664 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001665 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001666 sfaa(&val);
1667 return val;
1668}
1669EOF
1670 if ! compile_prog "" "" ; then
1671 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1672 fi
1673fi
1674
1675#########################################
bellardec530c82006-04-25 22:36:06 +00001676# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001677
bellardec530c82006-04-25 22:36:06 +00001678if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001679 if has $install; then
1680 :
1681 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001682 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1683 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1684 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001685 fi
Stefan Weil89138852016-05-16 15:10:20 +02001686 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001687 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1688 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1689 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001690 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001691 if has ar; then
1692 :
1693 else
bellardec530c82006-04-25 22:36:06 +00001694 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001695 error_exit "No path includes ar" \
1696 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001697 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001698 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001699 fi
ths5fafdf22007-09-16 21:08:06 +00001700fi
bellardec530c82006-04-25 22:36:06 +00001701
Stefan Weilafb63eb2012-09-26 22:04:38 +02001702if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001703 target_list="$default_target_list"
1704else
Stefan Weil89138852016-05-16 15:10:20 +02001705 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
bellard5327cf42005-01-10 23:18:50 +00001706fi
Peter Maydell25b48332013-05-20 16:16:16 +01001707
1708# Check that we recognised the target name; this allows a more
1709# friendly error message than if we let it fall through.
1710for target in $target_list; do
1711 case " $default_target_list " in
1712 *" $target "*)
1713 ;;
1714 *)
1715 error_exit "Unknown target name '$target'"
1716 ;;
1717 esac
1718done
1719
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001720# see if system emulation was really requested
1721case " $target_list " in
1722 *"-softmmu "*) softmmu=yes
1723 ;;
1724 *) softmmu=no
1725 ;;
1726esac
bellard5327cf42005-01-10 23:18:50 +00001727
Juan Quintela249247c2009-08-12 18:20:25 +02001728feature_not_found() {
1729 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001730 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001731
Peter Maydell76ad07a2013-04-08 12:11:26 +01001732 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001733 "configure was not able to find it." \
1734 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001735}
1736
bellard7d132992003-03-06 23:23:54 +00001737# ---
1738# big/little endian test
1739cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001740short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1741short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1742extern int foo(short *, short *);
1743int main(int argc, char *argv[]) {
1744 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001745}
1746EOF
1747
Mike Frysinger61cc9192013-06-30 23:30:18 -04001748if compile_object ; then
1749 if grep -q BiGeNdIaN $TMPO ; then
1750 bigendian="yes"
1751 elif grep -q LiTtLeEnDiAn $TMPO ; then
1752 bigendian="no"
1753 else
1754 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001755 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001756else
1757 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001758fi
1759
Juan Quintelab0a47e72009-08-12 18:29:49 +02001760##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001761# cocoa implies not SDL or GTK
1762# (the cocoa UI code currently assumes it is always the active UI
1763# and doesn't interact well with other UI frontend code)
1764if test "$cocoa" = "yes"; then
1765 if test "$sdl" = "yes"; then
1766 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1767 fi
1768 if test "$gtk" = "yes"; then
1769 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1770 fi
1771 gtk=no
1772 sdl=no
1773fi
1774
Eric Blake6b39b062016-10-11 10:46:23 -05001775# Some versions of Mac OS X incorrectly define SIZE_MAX
1776cat > $TMPC << EOF
1777#include <stdint.h>
1778#include <stdio.h>
1779int main(int argc, char *argv[]) {
1780 return printf("%zu", SIZE_MAX);
1781}
1782EOF
1783have_broken_size_max=no
1784if ! compile_object -Werror ; then
1785 have_broken_size_max=yes
1786fi
1787
Peter Maydella30878e2015-08-14 16:10:52 +01001788##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001789# L2TPV3 probe
1790
1791cat > $TMPC <<EOF
1792#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001793#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001794int main(void) { return sizeof(struct mmsghdr); }
1795EOF
1796if compile_prog "" "" ; then
1797 l2tpv3=yes
1798else
1799 l2tpv3=no
1800fi
1801
1802##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001803# MinGW / Mingw-w64 localtime_r/gmtime_r check
1804
1805if test "$mingw32" = "yes"; then
1806 # Some versions of MinGW / Mingw-w64 lack localtime_r
1807 # and gmtime_r entirely.
1808 #
1809 # Some versions of Mingw-w64 define a macro for
1810 # localtime_r/gmtime_r.
1811 #
1812 # Some versions of Mingw-w64 will define functions
1813 # for localtime_r/gmtime_r, but only if you have
1814 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1815 # though, unistd.h and pthread.h both define
1816 # that for you.
1817 #
1818 # So this #undef localtime_r and #include <unistd.h>
1819 # are not in fact redundant.
1820cat > $TMPC << EOF
1821#include <unistd.h>
1822#include <time.h>
1823#undef localtime_r
1824int main(void) { localtime_r(NULL, NULL); return 0; }
1825EOF
1826 if compile_prog "" "" ; then
1827 localtime_r="yes"
1828 else
1829 localtime_r="no"
1830 fi
1831fi
1832
1833##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001834# pkg-config probe
1835
1836if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001837 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001838fi
1839
1840##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001841# NPTL probe
1842
Peter Maydell24cb36a2013-07-16 18:45:00 +01001843if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001844 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001845#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001846#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001847int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001848#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1849#error bork
1850#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001851 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001852}
1853EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001854 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001855 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001856 fi
pbrookbd0c5662008-05-29 14:34:11 +00001857fi
1858
bellard11d9f692004-04-02 20:55:59 +00001859##########################################
Liang Li99f2dbd2016-03-08 13:53:16 +08001860# avx2 optimization requirement check
1861
Richard Henderson5e33a872016-08-29 11:46:15 -07001862cat > $TMPC << EOF
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001863#pragma GCC push_options
1864#pragma GCC target("avx2")
1865#include <cpuid.h>
1866#include <immintrin.h>
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001867static int bar(void *a) {
Richard Henderson5e33a872016-08-29 11:46:15 -07001868 __m256i x = *(__m256i *)a;
1869 return _mm256_testz_si256(x, x);
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001870}
Richard Henderson5e33a872016-08-29 11:46:15 -07001871int main(int argc, char *argv[]) { return bar(argv[0]); }
Liang Li99f2dbd2016-03-08 13:53:16 +08001872EOF
Richard Henderson5e33a872016-08-29 11:46:15 -07001873if compile_object "" ; then
1874 avx2_opt="yes"
Liang Li99f2dbd2016-03-08 13:53:16 +08001875fi
1876
1877#########################################
balrogac629222008-10-11 09:56:04 +00001878# zlib check
1879
Alon Levy1ece9902011-07-26 12:30:40 +03001880if test "$zlib" != "no" ; then
1881 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001882#include <zlib.h>
1883int main(void) { zlibVersion(); return 0; }
1884EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001885 if compile_prog "" "-lz" ; then
1886 :
1887 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001888 error_exit "zlib check failed" \
1889 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001890 fi
balrogac629222008-10-11 09:56:04 +00001891fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001892LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001893
1894##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001895# lzo check
1896
1897if test "$lzo" != "no" ; then
1898 cat > $TMPC << EOF
1899#include <lzo/lzo1x.h>
1900int main(void) { lzo_version(); return 0; }
1901EOF
1902 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001903 libs_softmmu="$libs_softmmu -llzo2"
1904 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001905 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001906 if test "$lzo" = "yes"; then
1907 feature_not_found "liblzo2" "Install liblzo2 devel"
1908 fi
1909 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001910 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001911fi
1912
1913##########################################
1914# snappy check
1915
1916if test "$snappy" != "no" ; then
1917 cat > $TMPC << EOF
1918#include <snappy-c.h>
1919int main(void) { snappy_max_compressed_length(4096); return 0; }
1920EOF
1921 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001922 libs_softmmu="$libs_softmmu -lsnappy"
1923 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001924 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001925 if test "$snappy" = "yes"; then
1926 feature_not_found "libsnappy" "Install libsnappy devel"
1927 fi
1928 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001929 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001930fi
1931
1932##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001933# bzip2 check
1934
1935if test "$bzip2" != "no" ; then
1936 cat > $TMPC << EOF
1937#include <bzlib.h>
1938int main(void) { BZ2_bzlibVersion(); return 0; }
1939EOF
1940 if compile_prog "" "-lbz2" ; then
1941 bzip2="yes"
1942 else
1943 if test "$bzip2" = "yes"; then
1944 feature_not_found "libbzip2" "Install libbzip2 devel"
1945 fi
1946 bzip2="no"
1947 fi
1948fi
1949
1950##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001951# libseccomp check
1952
1953if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04001954 case "$cpu" in
1955 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06001956 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04001957 ;;
James Hogan5ce43972016-04-08 14:16:34 +01001958 mips)
1959 libseccomp_minver="2.2.0"
1960 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001961 arm|aarch64)
1962 libseccomp_minver="2.2.3"
1963 ;;
Michael Strosaker3e684452016-06-01 18:30:18 -05001964 ppc|ppc64)
1965 libseccomp_minver="2.3.0"
1966 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001967 *)
1968 libseccomp_minver=""
1969 ;;
1970 esac
1971
1972 if test "$libseccomp_minver" != "" &&
1973 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Stefan Weil89138852016-05-16 15:10:20 +02001974 libs_softmmu="$libs_softmmu $($pkg_config --libs libseccomp)"
1975 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04001976 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03001977 else
Andrew Jones693e5912015-09-30 11:59:18 -04001978 if test "$seccomp" = "yes" ; then
1979 if test "$libseccomp_minver" != "" ; then
1980 feature_not_found "libseccomp" \
1981 "Install libseccomp devel >= $libseccomp_minver"
1982 else
1983 feature_not_found "libseccomp" \
1984 "libseccomp is not supported for host cpu $cpu"
1985 fi
1986 fi
1987 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001988 fi
1989fi
1990##########################################
aliguorie37630c2009-04-22 15:19:10 +00001991# xen probe
1992
Juan Quintelafc321b42009-08-12 18:29:55 +02001993if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001994 xen_libs="-lxenstore -lxenctrl -lxenguest"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001995 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001996
Stefan Weil50ced5b2011-12-17 09:27:39 +01001997 # First we test whether Xen headers and libraries are available.
1998 # If no, we are done and there is no Xen support.
1999 # If yes, more tests are run to detect the Xen version.
2000
2001 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02002002 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00002003#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01002004int main(void) {
2005 return 0;
2006}
2007EOF
2008 if ! compile_prog "" "$xen_libs" ; then
2009 # Xen not found
2010 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002011 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01002012 fi
2013 xen=no
2014
2015 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01002016 elif
2017 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002018/*
2019 * If we have stable libs the we don't want the libxc compat
2020 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02002021 *
2022 * Also, check if xengnttab_grant_copy_segment_t is defined and
2023 * grant copy operation is implemented.
2024 */
2025#undef XC_WANT_COMPAT_EVTCHN_API
2026#undef XC_WANT_COMPAT_GNTTAB_API
2027#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2028#include <xenctrl.h>
2029#include <xenstore.h>
2030#include <xenevtchn.h>
2031#include <xengnttab.h>
2032#include <xenforeignmemory.h>
2033#include <stdint.h>
2034#include <xen/hvm/hvm_info_table.h>
2035#if !defined(HVM_MAX_VCPUS)
2036# error HVM_MAX_VCPUS not defined
2037#endif
2038int main(void) {
2039 xc_interface *xc = NULL;
2040 xenforeignmemory_handle *xfmem;
2041 xenevtchn_handle *xe;
2042 xengnttab_handle *xg;
2043 xen_domain_handle_t handle;
2044 xengnttab_grant_copy_segment_t* seg = NULL;
2045
2046 xs_daemon_open();
2047
2048 xc = xc_interface_open(0, 0, 0);
2049 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2050 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2051 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2052 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2053 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2054
2055 xfmem = xenforeignmemory_open(0, 0);
2056 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2057
2058 xe = xenevtchn_open(0, 0);
2059 xenevtchn_fd(xe);
2060
2061 xg = xengnttab_open(0, 0);
2062 xengnttab_grant_copy(xg, 0, seg);
2063
2064 return 0;
2065}
2066EOF
2067 compile_prog "" "$xen_libs $xen_stable_libs"
2068 then
2069 xen_ctrl_version=480
2070 xen=yes
2071 elif
2072 cat > $TMPC <<EOF &&
2073/*
2074 * If we have stable libs the we don't want the libxc compat
2075 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002076 */
2077#undef XC_WANT_COMPAT_EVTCHN_API
2078#undef XC_WANT_COMPAT_GNTTAB_API
2079#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2080#include <xenctrl.h>
2081#include <xenstore.h>
2082#include <xenevtchn.h>
2083#include <xengnttab.h>
2084#include <xenforeignmemory.h>
2085#include <stdint.h>
2086#include <xen/hvm/hvm_info_table.h>
2087#if !defined(HVM_MAX_VCPUS)
2088# error HVM_MAX_VCPUS not defined
2089#endif
2090int main(void) {
2091 xc_interface *xc = NULL;
2092 xenforeignmemory_handle *xfmem;
2093 xenevtchn_handle *xe;
2094 xengnttab_handle *xg;
2095 xen_domain_handle_t handle;
2096
2097 xs_daemon_open();
2098
2099 xc = xc_interface_open(0, 0, 0);
2100 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2101 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2102 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2103 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2104 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2105
2106 xfmem = xenforeignmemory_open(0, 0);
2107 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2108
2109 xe = xenevtchn_open(0, 0);
2110 xenevtchn_fd(xe);
2111
2112 xg = xengnttab_open(0, 0);
2113 xengnttab_map_grant_ref(xg, 0, 0, 0);
2114
2115 return 0;
2116}
2117EOF
2118 compile_prog "" "$xen_libs $xen_stable_libs"
2119 then
2120 xen_ctrl_version=471
2121 xen=yes
2122 elif
2123 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002124#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002125#include <stdint.h>
2126int main(void) {
2127 xc_interface *xc = NULL;
2128 xen_domain_handle_t handle;
2129 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2130 return 0;
2131}
2132EOF
2133 compile_prog "" "$xen_libs"
2134 then
2135 xen_ctrl_version=470
2136 xen=yes
2137
2138 # Xen 4.6
2139 elif
2140 cat > $TMPC <<EOF &&
2141#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002142#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002143#include <stdint.h>
2144#include <xen/hvm/hvm_info_table.h>
2145#if !defined(HVM_MAX_VCPUS)
2146# error HVM_MAX_VCPUS not defined
2147#endif
2148int main(void) {
2149 xc_interface *xc;
2150 xs_daemon_open();
2151 xc = xc_interface_open(0, 0, 0);
2152 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2153 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002154 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002155 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002156 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002157 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002158 return 0;
2159}
2160EOF
2161 compile_prog "" "$xen_libs"
2162 then
2163 xen_ctrl_version=460
2164 xen=yes
2165
2166 # Xen 4.5
2167 elif
2168 cat > $TMPC <<EOF &&
2169#include <xenctrl.h>
2170#include <xenstore.h>
2171#include <stdint.h>
2172#include <xen/hvm/hvm_info_table.h>
2173#if !defined(HVM_MAX_VCPUS)
2174# error HVM_MAX_VCPUS not defined
2175#endif
2176int main(void) {
2177 xc_interface *xc;
2178 xs_daemon_open();
2179 xc = xc_interface_open(0, 0, 0);
2180 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2181 xc_gnttab_open(NULL, 0);
2182 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2183 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002184 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2185 return 0;
2186}
2187EOF
2188 compile_prog "" "$xen_libs"
2189 then
2190 xen_ctrl_version=450
2191 xen=yes
2192
2193 elif
2194 cat > $TMPC <<EOF &&
2195#include <xenctrl.h>
2196#include <xenstore.h>
2197#include <stdint.h>
2198#include <xen/hvm/hvm_info_table.h>
2199#if !defined(HVM_MAX_VCPUS)
2200# error HVM_MAX_VCPUS not defined
2201#endif
2202int main(void) {
2203 xc_interface *xc;
2204 xs_daemon_open();
2205 xc = xc_interface_open(0, 0, 0);
2206 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2207 xc_gnttab_open(NULL, 0);
2208 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2209 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002210 return 0;
2211}
2212EOF
2213 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002214 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002215 xen_ctrl_version=420
2216 xen=yes
2217
Juan Quintelab2266be2009-07-27 16:13:16 +02002218 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002219 if test "$xen" = "yes" ; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002220 feature_not_found "xen (unsupported version)" \
2221 "Install a supported xen (xen 4.2 or newer)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002222 fi
2223 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002224 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002225
2226 if test "$xen" = yes; then
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002227 if test $xen_ctrl_version -ge 471 ; then
2228 libs_softmmu="$xen_stable_libs $libs_softmmu"
2229 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002230 libs_softmmu="$xen_libs $libs_softmmu"
2231 fi
aliguorie37630c2009-04-22 15:19:10 +00002232fi
2233
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002234if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002235 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002236 xen_pci_passthrough=yes
2237 else
2238 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002239 error_exit "User requested feature Xen PCI Passthrough" \
2240 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002241 fi
2242 xen_pci_passthrough=no
2243 fi
2244fi
2245
Ian Campbell64a7ad62016-01-15 13:23:44 +00002246if test "$xen_pv_domain_build" = "yes" &&
2247 test "$xen" != "yes"; then
2248 error_exit "User requested Xen PV domain builder support" \
2249 "which requires Xen support."
2250fi
2251
aliguorie37630c2009-04-22 15:19:10 +00002252##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002253# Sparse probe
2254if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002255 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002256 sparse=yes
2257 else
2258 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002259 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002260 fi
2261 sparse=no
2262 fi
2263fi
2264
2265##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002266# X11 probe
2267x11_cflags=
2268x11_libs=-lX11
2269if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002270 x11_cflags=$($pkg_config --cflags x11)
2271 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002272fi
2273
2274##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002275# GTK probe
2276
Stefan Weil9e04c682014-05-17 16:29:18 +02002277if test "$gtkabi" = ""; then
2278 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2279 # Use 3.0 as a fallback if that is available.
2280 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2281 gtkabi=2.0
2282 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2283 gtkabi=3.0
2284 else
2285 gtkabi=2.0
2286 fi
2287fi
2288
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002289if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002290 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002291 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002292 if test "$gtkabi" = "3.0" ; then
2293 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002294 else
2295 gtkversion="2.18.0"
2296 fi
2297 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002298 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2299 gtk_libs=$($pkg_config --libs $gtkpackage)
2300 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002301 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002302 gtk_cflags="$gtk_cflags $x11_cflags"
2303 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002304 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002305 libs_softmmu="$gtk_libs $libs_softmmu"
2306 gtk="yes"
2307 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002308 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002309 else
2310 gtk="no"
2311 fi
2312fi
2313
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002314
2315##########################################
2316# GNUTLS probe
2317
Peter Maydell37371292015-07-24 18:28:08 +01002318gnutls_works() {
2319 # Unfortunately some distros have bad pkg-config information for gnutls
2320 # such that it claims to exist but you get a compiler error if you try
2321 # to use the options returned by --libs. Specifically, Ubuntu for --static
2322 # builds doesn't work:
2323 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2324 #
2325 # So sanity check the cflags/libs before assuming gnutls can be used.
2326 if ! $pkg_config --exists "gnutls"; then
2327 return 1
2328 fi
2329
2330 write_c_skeleton
2331 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2332}
2333
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002334gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002335gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002336if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002337 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002338 gnutls_cflags=$($pkg_config --cflags gnutls)
2339 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002340 libs_softmmu="$gnutls_libs $libs_softmmu"
2341 libs_tools="$gnutls_libs $libs_tools"
2342 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2343 gnutls="yes"
2344
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002345 # gnutls_rnd requires >= 2.11.0
2346 if $pkg_config --exists "gnutls >= 2.11.0"; then
2347 gnutls_rnd="yes"
2348 else
2349 gnutls_rnd="no"
2350 fi
2351
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002352 if $pkg_config --exists 'gnutls >= 3.0'; then
2353 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002354 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002355 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002356 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002357 *gcrypt*)
2358 gnutls_gcrypt=yes
2359 gnutls_nettle=no
2360 ;;
2361 *nettle*)
2362 gnutls_gcrypt=no
2363 gnutls_nettle=yes
2364 ;;
2365 *)
2366 gnutls_gcrypt=yes
2367 gnutls_nettle=no
2368 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002369 esac
2370 else
2371 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002372 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002373 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002374 elif test "$gnutls" = "yes"; then
2375 feature_not_found "gnutls" "Install gnutls devel"
2376 else
2377 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002378 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002379 fi
2380else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002381 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002382fi
2383
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002384
2385# If user didn't give a --disable/enable-gcrypt flag,
2386# then mark as disabled if user requested nettle
2387# explicitly, or if gnutls links to nettle
2388if test -z "$gcrypt"
2389then
2390 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2391 then
2392 gcrypt="no"
2393 fi
2394fi
2395
2396# If user didn't give a --disable/enable-nettle flag,
2397# then mark as disabled if user requested gcrypt
2398# explicitly, or if gnutls links to gcrypt
2399if test -z "$nettle"
2400then
2401 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2402 then
2403 nettle="no"
2404 fi
2405fi
2406
2407has_libgcrypt_config() {
2408 if ! has "libgcrypt-config"
2409 then
2410 return 1
2411 fi
2412
2413 if test -n "$cross_prefix"
2414 then
Stefan Weil89138852016-05-16 15:10:20 +02002415 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002416 if test "$host-" != $cross_prefix
2417 then
2418 return 1
2419 fi
2420 fi
2421
2422 return 0
2423}
2424
2425if test "$gcrypt" != "no"; then
2426 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002427 gcrypt_cflags=$(libgcrypt-config --cflags)
2428 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002429 # Debian has remove -lgpg-error from libgcrypt-config
2430 # as it "spreads unnecessary dependencies" which in
2431 # turn breaks static builds...
2432 if test "$static" = "yes"
2433 then
2434 gcrypt_libs="$gcrypt_libs -lgpg-error"
2435 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002436 libs_softmmu="$gcrypt_libs $libs_softmmu"
2437 libs_tools="$gcrypt_libs $libs_tools"
2438 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002439 gcrypt="yes"
2440 if test -z "$nettle"; then
2441 nettle="no"
2442 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002443
2444 cat > $TMPC << EOF
2445#include <gcrypt.h>
2446int main(void) {
2447 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2448 GCRY_MD_SHA256,
2449 NULL, 0, 0, 0, NULL);
2450 return 0;
2451}
2452EOF
2453 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2454 gcrypt_kdf=yes
2455 fi
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08002456
2457 cat > $TMPC << EOF
2458#include <gcrypt.h>
2459int main(void) {
2460 gcry_mac_hd_t handle;
2461 gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2462 GCRY_MAC_FLAG_SECURE, NULL);
2463 return 0;
2464}
2465EOF
2466 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2467 gcrypt_hmac=yes
2468 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002469 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002470 if test "$gcrypt" = "yes"; then
2471 feature_not_found "gcrypt" "Install gcrypt devel"
2472 else
2473 gcrypt="no"
2474 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002475 fi
2476fi
2477
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002478
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002479if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002480 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002481 nettle_cflags=$($pkg_config --cflags nettle)
2482 nettle_libs=$($pkg_config --libs nettle)
2483 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002484 libs_softmmu="$nettle_libs $libs_softmmu"
2485 libs_tools="$nettle_libs $libs_tools"
2486 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002487 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002488
2489 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002490#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002491#include <nettle/pbkdf2.h>
2492int main(void) {
2493 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2494 return 0;
2495}
2496EOF
2497 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2498 nettle_kdf=yes
2499 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002500 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002501 if test "$nettle" = "yes"; then
2502 feature_not_found "nettle" "Install nettle devel"
2503 else
2504 nettle="no"
2505 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002506 fi
2507fi
2508
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002509if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2510then
2511 error_exit "Only one of gcrypt & nettle can be enabled"
2512fi
2513
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002514##########################################
2515# libtasn1 - only for the TLS creds/session test suite
2516
2517tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002518tasn1_cflags=""
2519tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002520if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002521 tasn1_cflags=$($pkg_config --cflags libtasn1)
2522 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002523else
2524 tasn1=no
2525fi
2526
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002527
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002528##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002529# getifaddrs (for tests/test-io-channel-socket )
2530
2531have_ifaddrs_h=yes
2532if ! check_include "ifaddrs.h" ; then
2533 have_ifaddrs_h=no
2534fi
2535
2536##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002537# VTE probe
2538
2539if test "$vte" != "no"; then
2540 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002541 vteminversion="0.32.0"
2542 if $pkg_config --exists "vte-2.91"; then
2543 vtepackage="vte-2.91"
2544 else
2545 vtepackage="vte-2.90"
2546 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002547 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002548 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002549 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002550 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002551 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002552 vte_cflags=$($pkg_config --cflags $vtepackage)
2553 vte_libs=$($pkg_config --libs $vtepackage)
2554 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002555 libs_softmmu="$vte_libs $libs_softmmu"
2556 vte="yes"
2557 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002558 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002559 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002560 else
2561 feature_not_found "vte" "Install libvte devel"
2562 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002563 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002564 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002565 fi
2566fi
2567
2568##########################################
bellard11d9f692004-04-02 20:55:59 +00002569# SDL probe
2570
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002571# Look for sdl configuration program (pkg-config or sdl-config). Try
2572# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002573
Cole Robinsonee8466d2016-05-06 14:03:07 -04002574if test "$sdlabi" = ""; then
2575 if $pkg_config --exists "sdl"; then
2576 sdlabi=1.2
2577 elif $pkg_config --exists "sdl2"; then
2578 sdlabi=2.0
2579 else
2580 sdlabi=1.2
2581 fi
2582fi
2583
Dave Airlie47c03742013-12-10 14:05:51 +10002584if test $sdlabi = "2.0"; then
2585 sdl_config=$sdl2_config
2586 sdlname=sdl2
2587 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002588elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002589 sdlname=sdl
2590 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002591else
2592 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002593fi
2594
Stefan Weil89138852016-05-16 15:10:20 +02002595if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002596 sdl_config=$sdlconfigname
2597fi
2598
2599if $pkg_config $sdlname --exists; then
2600 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002601 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002602elif has ${sdl_config}; then
2603 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002604 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002605else
2606 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002607 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002608 fi
2609 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002610fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002611if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002612 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2613fi
bellard11d9f692004-04-02 20:55:59 +00002614
Paolo Bonzini9316f802010-01-13 09:52:55 +01002615sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002616if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002617 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002618#include <SDL.h>
2619#undef main /* We don't want SDL to override our main() */
2620int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2621EOF
Stefan Weil89138852016-05-16 15:10:20 +02002622 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002623 if test "$static" = "yes" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002624 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002625 else
Stefan Weil89138852016-05-16 15:10:20 +02002626 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002627 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002628 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002629 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002630 sdl_too_old=yes
2631 else
Peter Maydella30878e2015-08-14 16:10:52 +01002632 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002633 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002634
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002635 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002636 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002637 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002638 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2639 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002640 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002641 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002642 :
2643 else
2644 sdl=no
2645 fi
2646 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002647 else # sdl not found
2648 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002649 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002650 fi
2651 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002652 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002653fi
bellard11d9f692004-04-02 20:55:59 +00002654
aliguori5368a422009-03-03 17:37:21 +00002655if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002656 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002657#include <SDL.h>
2658#if defined(SDL_VIDEO_DRIVER_X11)
2659#include <X11/XKBlib.h>
2660#else
2661#error No x11 support
2662#endif
2663int main(void) { return 0; }
2664EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002665 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2666 sdl_cflags="$sdl_cflags $x11_cflags"
2667 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002668 fi
Juan Quintela07056672009-08-03 14:46:27 +02002669 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002670fi
2671
ths8f28f3f2007-01-05 21:25:54 +00002672##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002673# RDMA needs OpenFabrics libraries
2674if test "$rdma" != "no" ; then
2675 cat > $TMPC <<EOF
2676#include <rdma/rdma_cma.h>
2677int main(void) { return 0; }
2678EOF
2679 rdma_libs="-lrdmacm -libverbs"
2680 if compile_prog "" "$rdma_libs" ; then
2681 rdma="yes"
2682 libs_softmmu="$libs_softmmu $rdma_libs"
2683 else
2684 if test "$rdma" = "yes" ; then
2685 error_exit \
2686 " OpenFabrics librdmacm/libibverbs not present." \
2687 " Your options:" \
2688 " (1) Fast: Install infiniband packages from your distro." \
2689 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2690 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2691 fi
2692 rdma="no"
2693 fi
2694fi
2695
ths8d5d2d42007-08-25 01:37:51 +00002696
2697##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002698# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002699if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002700 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002701#include <sasl/sasl.h>
2702#include <stdio.h>
2703int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2704EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002705 # Assuming Cyrus-SASL installed in /usr prefix
2706 vnc_sasl_cflags=""
2707 vnc_sasl_libs="-lsasl2"
2708 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2709 vnc_sasl=yes
2710 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002711 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002712 else
2713 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002714 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002715 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002716 vnc_sasl=no
2717 fi
aliguori2f9606b2009-03-06 20:27:28 +00002718fi
2719
2720##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002721# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002722if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002723cat > $TMPC <<EOF
2724#include <stdio.h>
2725#include <jpeglib.h>
2726int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2727EOF
2728 vnc_jpeg_cflags=""
2729 vnc_jpeg_libs="-ljpeg"
2730 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2731 vnc_jpeg=yes
2732 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002733 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002734 else
2735 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002736 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002737 fi
2738 vnc_jpeg=no
2739 fi
2740fi
2741
2742##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002743# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002744if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002745cat > $TMPC <<EOF
2746//#include <stdio.h>
2747#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002748#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002749int main(void) {
2750 png_structp png_ptr;
2751 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002752 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002753}
2754EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002755 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002756 vnc_png_cflags=$($pkg_config libpng --cflags)
2757 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002758 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002759 vnc_png_cflags=""
2760 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002761 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002762 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2763 vnc_png=yes
2764 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002765 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002766 else
2767 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002768 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002769 fi
2770 vnc_png=no
2771 fi
2772fi
2773
2774##########################################
aliguori76655d62009-03-06 20:27:37 +00002775# fnmatch() probe, used for ACL routines
2776fnmatch="no"
2777cat > $TMPC << EOF
2778#include <fnmatch.h>
2779int main(void)
2780{
2781 fnmatch("foo", "foo", 0);
2782 return 0;
2783}
2784EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002785if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002786 fnmatch="yes"
2787fi
2788
2789##########################################
Eric Blakec1bb86c2016-12-02 13:48:54 -06002790# xfsctl() probe, used for file-posix.c
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002791if test "$xfs" != "no" ; then
2792 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002793#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002794#include <xfs/xfs.h>
2795int main(void)
2796{
2797 xfsctl(NULL, 0, 0, NULL);
2798 return 0;
2799}
2800EOF
2801 if compile_prog "" "" ; then
2802 xfs="yes"
2803 else
2804 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002805 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002806 fi
2807 xfs=no
2808 fi
2809fi
2810
2811##########################################
ths8a16d272008-07-19 09:56:24 +00002812# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002813if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002814 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002815 cat > $TMPC << EOF
2816#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002817int main(void)
2818{
2819 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002820 char s[] = "";
2821 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002822 return 0;
2823}
ths8a16d272008-07-19 09:56:24 +00002824EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002825 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002826 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002827 libs_softmmu="$vde_libs $libs_softmmu"
2828 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002829 else
2830 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002831 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002832 fi
2833 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002834 fi
ths8a16d272008-07-19 09:56:24 +00002835fi
2836
2837##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002838# netmap support probe
2839# Apart from looking for netmap headers, we make sure that the host API version
2840# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2841# a minor/major version number. Minor new features will be marked with values up
2842# to 15, and if something happens that requires a change to the backend we will
2843# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002844if test "$netmap" != "no" ; then
2845 cat > $TMPC << EOF
2846#include <inttypes.h>
2847#include <net/if.h>
2848#include <net/netmap.h>
2849#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002850#if (NETMAP_API < 11) || (NETMAP_API > 15)
2851#error
2852#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002853int main(void) { return 0; }
2854EOF
2855 if compile_prog "" "" ; then
2856 netmap=yes
2857 else
2858 if test "$netmap" = "yes" ; then
2859 feature_not_found "netmap"
2860 fi
2861 netmap=no
2862 fi
2863fi
2864
2865##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002866# libcap-ng library probe
2867if test "$cap_ng" != "no" ; then
2868 cap_libs="-lcap-ng"
2869 cat > $TMPC << EOF
2870#include <cap-ng.h>
2871int main(void)
2872{
2873 capng_capability_to_name(CAPNG_EFFECTIVE);
2874 return 0;
2875}
2876EOF
2877 if compile_prog "" "$cap_libs" ; then
2878 cap_ng=yes
2879 libs_tools="$cap_libs $libs_tools"
2880 else
2881 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002882 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002883 fi
2884 cap_ng=no
2885 fi
2886fi
2887
2888##########################################
malcc2de5c92008-06-28 19:13:06 +00002889# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002890
malcc2de5c92008-06-28 19:13:06 +00002891audio_drv_probe()
2892{
2893 drv=$1
2894 hdr=$2
2895 lib=$3
2896 exp=$4
2897 cfl=$5
2898 cat > $TMPC << EOF
2899#include <$hdr>
2900int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002901EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002902 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002903 :
2904 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002905 error_exit "$drv check failed" \
2906 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002907 fi
2908}
2909
Stefan Weil89138852016-05-16 15:10:20 +02002910audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00002911for drv in $audio_drv_list; do
2912 case $drv in
2913 alsa)
2914 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002915 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002916 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002917 ;;
2918
malcb8e59f12008-07-02 21:03:08 +00002919 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02002920 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
2921 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002922 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002923 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002924 ;;
2925
Gerd Hoffmann373967b2017-03-20 10:05:43 +01002926 sdl)
2927 if test "$sdl" = "no"; then
2928 error_exit "sdl not found or disabled, can not use sdl audio driver"
2929 fi
2930 ;;
2931
Juan Quintela997e6902009-08-03 14:46:29 +02002932 coreaudio)
2933 libs_softmmu="-framework CoreAudio $libs_softmmu"
2934 ;;
2935
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002936 dsound)
2937 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002938 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002939 ;;
2940
2941 oss)
2942 libs_softmmu="$oss_lib $libs_softmmu"
2943 ;;
2944
Gerd Hoffmann373967b2017-03-20 10:05:43 +01002945 wav)
2946 # XXX: Probes for CoreAudio, DirectSound
blueswir12f6a1ab2008-08-21 18:00:53 +00002947 ;;
2948
malce4c63a62008-07-19 16:15:16 +00002949 *)
malc1c9b2a52008-07-19 16:57:30 +00002950 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002951 error_exit "Unknown driver '$drv' selected" \
2952 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002953 }
2954 ;;
malcc2de5c92008-06-28 19:13:06 +00002955 esac
2956done
ths8f28f3f2007-01-05 21:25:54 +00002957
balrog4d3b6f62008-02-10 16:33:14 +00002958##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002959# BrlAPI probe
2960
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002961if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002962 brlapi_libs="-lbrlapi"
2963 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002964#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002965#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002966int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2967EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002968 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002969 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002970 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002971 else
2972 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002973 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002974 fi
2975 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002976 fi
2977fi
aurel322e4d9fb2008-04-08 06:01:02 +00002978
2979##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002980# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002981if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002982 if test "$mingw32" = "yes" ; then
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02002983 curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
2984 curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002985 else
Samuel Thibault7c703002016-11-09 11:27:52 +01002986 curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02002987 curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002988 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002989 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002990 cat > $TMPC << EOF
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02002991#include <locale.h>
balrog4d3b6f62008-02-10 16:33:14 +00002992#include <curses.h>
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02002993#include <wchar.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002994int main(void) {
2995 const char *s = curses_version();
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02002996 wchar_t wch = L'w';
2997 setlocale(LC_ALL, "");
Stefan Weilef9a2522011-12-17 17:46:02 +01002998 resize_term(0, 0);
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02002999 addwstr(L"wide chars\n");
3000 addnwstr(&wch, 1);
Samuel Thibault7c703002016-11-09 11:27:52 +01003001 add_wch(WACS_DEGREE);
Stefan Weilef9a2522011-12-17 17:46:02 +01003002 return s != 0;
3003}
balrog4d3b6f62008-02-10 16:33:14 +00003004EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04003005 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003006 for curses_inc in $curses_inc_list; do
Samuel Thibault7c703002016-11-09 11:27:52 +01003007 IFS=:
Samuel Thibault8ddc5bf2016-10-15 21:53:05 +02003008 for curses_lib in $curses_lib_list; do
3009 unset IFS
3010 if compile_prog "$curses_inc" "$curses_lib" ; then
3011 curses_found=yes
3012 QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3013 libs_softmmu="$curses_lib $libs_softmmu"
3014 break
3015 fi
3016 done
Samuel Thibault7c703002016-11-09 11:27:52 +01003017 if test "$curses_found" = yes ; then
3018 break
3019 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003020 done
Vadim Evardecbe2512013-01-15 16:17:24 +04003021 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02003022 if test "$curses_found" = "yes" ; then
3023 curses=yes
3024 else
3025 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003026 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02003027 fi
3028 curses=no
3029 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02003030fi
balrog4d3b6f62008-02-10 16:33:14 +00003031
blueswir1414f0da2008-08-15 18:20:52 +00003032##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02003033# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02003034if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003035 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04003036 curlconfig="$pkg_config libcurl"
3037 else
3038 curlconfig=curl-config
3039 fi
Alexander Graf769ce762009-05-11 17:41:42 +02003040 cat > $TMPC << EOF
3041#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01003042int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02003043EOF
Stefan Weil89138852016-05-16 15:10:20 +02003044 curl_cflags=$($curlconfig --cflags 2>/dev/null)
3045 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02003046 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02003047 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02003048 else
3049 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003050 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02003051 fi
3052 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02003053 fi
3054fi # test "$curl"
3055
3056##########################################
balrogfb599c92008-09-28 23:49:55 +00003057# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003058if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00003059 cat > $TMPC << EOF
3060#include <bluetooth/bluetooth.h>
3061int main(void) { return bt_error(0); }
3062EOF
Stefan Weil89138852016-05-16 15:10:20 +02003063 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3064 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02003065 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003066 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02003067 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00003068 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003069 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003070 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02003071 fi
balroge820e3f2008-09-30 02:27:44 +00003072 bluez="no"
3073 fi
balrogfb599c92008-09-28 23:49:55 +00003074fi
3075
3076##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05003077# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02003078
Peter Maydellad04d8c2017-04-03 14:04:15 +01003079if test "$mingw32" = yes; then
3080 glib_req_ver=2.30
3081else
3082 glib_req_ver=2.22
3083fi
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003084glib_modules=gthread-2.0
3085if test "$modules" = yes; then
3086 glib_modules="$glib_modules gmodule-2.0"
3087fi
Fam Zhenge26110c2014-02-10 14:48:57 +08003088
Sameeh Jubran4eaf7202017-03-26 12:56:22 +03003089# This workaround is required due to a bug in pkg-config file for glib as it
3090# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3091
3092if test "$static" = yes -a "$mingw32" = yes; then
3093 QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3094fi
3095
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01003096for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08003097 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02003098 glib_cflags=$($pkg_config --cflags $i)
3099 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04003100 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08003101 LIBS="$glib_libs $LIBS"
3102 libs_qga="$glib_libs $libs_qga"
3103 else
3104 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3105 fi
3106done
3107
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003108# Sanity check that the current size_t matches the
3109# size that glib thinks it should be. This catches
3110# problems on multi-arch where people try to build
3111# 32-bit QEMU while pointing at 64-bit glib headers
3112cat > $TMPC <<EOF
3113#include <glib.h>
3114#include <unistd.h>
3115
3116#define QEMU_BUILD_BUG_ON(x) \
3117 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3118
3119int main(void) {
3120 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3121 return 0;
3122}
3123EOF
3124
Stefan Weil5919e032016-04-28 23:33:41 +02003125if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003126 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3127 "You probably need to set PKG_CONFIG_LIBDIR"\
3128 "to point to the right pkg-config files for your"\
3129 "build target"
3130fi
3131
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003132# g_test_trap_subprocess added in 2.38. Used by some tests.
3133glib_subprocess=yes
Marc-André Lureaua0492232017-01-04 21:57:22 +01003134if ! $pkg_config --atleast-version=2.38 glib-2.0; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003135 glib_subprocess=no
3136fi
3137
John Snowbbbf2e02015-03-25 18:57:38 -04003138# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3139cat > $TMPC << EOF
3140#include <glib.h>
3141int main(void) { return 0; }
3142EOF
3143if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3144 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3145 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3146 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3147 fi
3148fi
3149
Fam Zhenge26110c2014-02-10 14:48:57 +08003150##########################################
3151# SHA command probe for modules
3152if test "$modules" = yes; then
3153 shacmd_probe="sha1sum sha1 shasum"
3154 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003155 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003156 shacmd="$c"
3157 break
3158 fi
3159 done
3160 if test "$shacmd" = ""; then
3161 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3162 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003163fi
3164
3165##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003166# pixman support probe
3167
3168if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003169 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3170 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08003171 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003172 pixman="system"
3173 else
3174 pixman="internal"
3175 fi
3176fi
Robert Schiele74880fe2012-12-04 16:58:08 +01003177if test "$pixman" = "none"; then
3178 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003179 error_exit "pixman disabled but system emulation or tools build" \
3180 "enabled. You can turn off pixman only if you also" \
3181 "disable all system emulation targets and the tools" \
3182 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01003183 fi
3184 pixman_cflags=
3185 pixman_libs=
3186elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08003187 # pixman version has been checked above
Stefan Weil89138852016-05-16 15:10:20 +02003188 pixman_cflags=$($pkg_config --cflags pixman-1)
3189 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003190else
3191 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003192 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003193 " (1) Preferred: Install the pixman devel package (any recent" \
3194 " distro should have packages as Xorg needs pixman too)." \
3195 " (2) Fetch the pixman submodule, using:" \
3196 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003197 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003198 mkdir -p pixman/pixman
3199 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3200 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003201fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003202
3203##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303204# libcap probe
3205
3206if test "$cap" != "no" ; then
3207 cat > $TMPC <<EOF
3208#include <stdio.h>
3209#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003210int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303211EOF
3212 if compile_prog "" "-lcap" ; then
3213 cap=yes
3214 else
3215 cap=no
3216 fi
3217fi
3218
3219##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003220# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003221PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003222
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003223pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003224cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003225#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003226static void *f(void *p) { return NULL; }
3227int main(void) {
3228 pthread_t thread;
3229 pthread_create(&thread, 0, f, 0);
3230 return 0;
3231}
blueswir1414f0da2008-08-15 18:20:52 +00003232EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003233if compile_prog "" "" ; then
3234 pthread=yes
3235else
3236 for pthread_lib in $PTHREADLIBS_LIST; do
3237 if compile_prog "" "$pthread_lib" ; then
3238 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003239 found=no
3240 for lib_entry in $LIBS; do
3241 if test "$lib_entry" = "$pthread_lib"; then
3242 found=yes
3243 break
3244 fi
3245 done
3246 if test "$found" = "no"; then
3247 LIBS="$pthread_lib $LIBS"
3248 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003249 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003250 break
3251 fi
3252 done
3253fi
blueswir1414f0da2008-08-15 18:20:52 +00003254
Anthony Liguori4617e592009-08-25 17:21:56 -05003255if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003256 error_exit "pthread check failed" \
3257 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003258fi
3259
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003260# check for pthread_setname_np
3261pthread_setname_np=no
3262cat > $TMPC << EOF
3263#include <pthread.h>
3264
3265static void *f(void *p) { return NULL; }
3266int main(void)
3267{
3268 pthread_t thread;
3269 pthread_create(&thread, 0, f, 0);
3270 pthread_setname_np(thread, "QEMU");
3271 return 0;
3272}
3273EOF
3274if compile_prog "" "$pthread_lib" ; then
3275 pthread_setname_np=yes
3276fi
3277
aliguoribf9298b2008-12-05 20:05:26 +00003278##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003279# rbd probe
3280if test "$rbd" != "no" ; then
3281 cat > $TMPC <<EOF
3282#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003283#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003284int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003285 rados_t cluster;
3286 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003287 return 0;
3288}
3289EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003290 rbd_libs="-lrbd -lrados"
3291 if compile_prog "" "$rbd_libs" ; then
3292 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003293 else
3294 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003295 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003296 fi
3297 rbd=no
3298 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003299fi
3300
3301##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003302# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003303min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003304if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003305 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003306 libssh2_cflags=$($pkg_config libssh2 --cflags)
3307 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003308 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003309 else
3310 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003311 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003312 fi
3313 libssh2=no
3314 fi
3315fi
3316
3317##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003318# libssh2_sftp_fsync probe
3319
3320if test "$libssh2" = "yes"; then
3321 cat > $TMPC <<EOF
3322#include <stdio.h>
3323#include <libssh2.h>
3324#include <libssh2_sftp.h>
3325int main(void) {
3326 LIBSSH2_SESSION *session;
3327 LIBSSH2_SFTP *sftp;
3328 LIBSSH2_SFTP_HANDLE *sftp_handle;
3329 session = libssh2_session_init ();
3330 sftp = libssh2_sftp_init (session);
3331 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3332 libssh2_sftp_fsync (sftp_handle);
3333 return 0;
3334}
3335EOF
3336 # libssh2_cflags/libssh2_libs defined in previous test.
3337 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3338 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3339 fi
3340fi
3341
3342##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003343# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003344
3345if test "$linux_aio" != "no" ; then
3346 cat > $TMPC <<EOF
3347#include <libaio.h>
3348#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003349#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003350int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3351EOF
3352 if compile_prog "" "-laio" ; then
3353 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003354 else
3355 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003356 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003357 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003358 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003359 fi
3360fi
3361
3362##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003363# TPM passthrough is only on x86 Linux
3364
3365if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3366 tpm_passthrough=$tpm
3367else
3368 tpm_passthrough=no
3369fi
3370
3371##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003372# attr probe
3373
3374if test "$attr" != "no" ; then
3375 cat > $TMPC <<EOF
3376#include <stdio.h>
3377#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003378#ifdef CONFIG_LIBATTR
3379#include <attr/xattr.h>
3380#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003381#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003382#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003383int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3384EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003385 if compile_prog "" "" ; then
3386 attr=yes
3387 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003388 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003389 attr=yes
3390 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003391 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003392 else
3393 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003394 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003395 fi
3396 attr=no
3397 fi
3398fi
3399
3400##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003401# iovec probe
3402cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003403#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003404#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003405#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003406int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003407EOF
3408iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003409if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003410 iovec=yes
3411fi
3412
aurel32f652e6a2008-12-16 10:43:48 +00003413##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003414# preadv probe
3415cat > $TMPC <<EOF
3416#include <sys/types.h>
3417#include <sys/uio.h>
3418#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003419int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003420EOF
3421preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003422if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003423 preadv=yes
3424fi
3425
3426##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003427# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003428# fdt support is mandatory for at least some target architectures,
3429# so insist on it if we're building those system emulators.
3430fdt_required=no
3431for target in $target_list; do
3432 case $target in
Paul Burtondf1d8a12016-09-08 15:51:58 +01003433 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003434 fdt_required=yes
3435 ;;
3436 esac
3437done
3438
3439if test "$fdt_required" = "yes"; then
3440 if test "$fdt" = "no"; then
3441 error_exit "fdt disabled but some requested targets require it." \
3442 "You can turn off fdt only if you also disable all the system emulation" \
3443 "targets which need it (by specifying a cut down --target-list)."
3444 fi
3445 fdt=yes
3446fi
3447
Juan Quintela2df87df2009-08-12 18:29:54 +02003448if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003449 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003450 # explicitly check for libfdt_env.h as it is missing in some stable installs
Paul Burton6e85fce2016-09-08 15:51:55 +01003451 # and test for required functions to make sure we are on a version >= 1.4.2
Juan Quintelab41af4b2009-07-27 16:13:20 +02003452 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003453#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003454#include <libfdt_env.h>
Paul Burton6e85fce2016-09-08 15:51:55 +01003455int main(void) { fdt_first_subnode(0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003456EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003457 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003458 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003459 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003460 elif test -d ${source_path}/dtc/libfdt ; then
3461 # have submodule DTC - use it
3462 fdt=yes
3463 dtc_internal="yes"
3464 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003465 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003466 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3467 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003468 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003469 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3470 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3471 elif test "$fdt" = "yes" ; then
3472 # have neither and want - prompt for system/submodule install
Paul Burton6e85fce2016-09-08 15:51:55 +01003473 error_exit "DTC (libfdt) version >= 1.4.2 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003474 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003475 " (2) Fetch the DTC submodule, using:" \
3476 " git submodule update --init dtc"
3477 else
3478 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003479 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003480 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003481 fi
3482fi
3483
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003484libs_softmmu="$libs_softmmu $fdt_libs"
3485
Michael Walle20ff0752011-03-07 23:32:39 +01003486##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003487# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003488
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003489if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003490 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003491 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003492 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3493 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003494 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003495 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3496 gtk_gl="yes"
3497 fi
Gerd Hoffmanncc720a52017-03-21 08:04:48 +01003498 QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
Michael Walle20ff0752011-03-07 23:32:39 +01003499 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003500 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003501 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003502 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003503 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003504 opengl_libs=""
3505 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003506 fi
3507fi
3508
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003509if test "$opengl" = "yes"; then
3510 cat > $TMPC << EOF
3511#include <epoxy/egl.h>
3512#ifndef EGL_MESA_image_dma_buf_export
3513# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3514#endif
3515int main(void) { return 0; }
3516EOF
3517 if compile_prog "" "" ; then
3518 opengl_dmabuf=yes
3519 fi
3520fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003521
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003522
Bharata B Raoeb100392012-09-24 14:42:45 +05303523##########################################
3524# glusterfs probe
3525if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003526 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303527 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003528 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3529 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003530 if $pkg_config --atleast-version=4 glusterfs-api; then
3531 glusterfs_xlator_opt="yes"
3532 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003533 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303534 glusterfs_discard="yes"
3535 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303536 if $pkg_config --atleast-version=6 glusterfs-api; then
3537 glusterfs_zerofill="yes"
3538 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303539 else
3540 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003541 feature_not_found "GlusterFS backend support" \
3542 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303543 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303544 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303545 fi
3546fi
3547
aurel3239386ac2009-04-15 19:48:17 +00003548# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003549# emulator. This is done because older glibc versions don't
3550# have syscall stubs for these implemented. In that case we
3551# don't provide them even if kernel supports them.
3552#
3553inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003554cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003555#include <sys/inotify.h>
3556
3557int
3558main(void)
3559{
3560 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003561 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003562}
3563EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003564if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003565 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003566fi
3567
Riku Voipioc05c7a72010-03-26 15:25:11 +00003568inotify1=no
3569cat > $TMPC << EOF
3570#include <sys/inotify.h>
3571
3572int
3573main(void)
3574{
3575 /* try to start inotify */
3576 return inotify_init1(0);
3577}
3578EOF
3579if compile_prog "" "" ; then
3580 inotify1=yes
3581fi
3582
Riku Voipioebc996f2009-04-21 15:01:51 +03003583# check if utimensat and futimens are supported
3584utimens=no
3585cat > $TMPC << EOF
3586#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003587#include <stddef.h>
3588#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003589#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003590
3591int main(void)
3592{
3593 utimensat(AT_FDCWD, "foo", NULL, 0);
3594 futimens(0, NULL);
3595 return 0;
3596}
3597EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003598if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003599 utimens=yes
3600fi
3601
Riku Voipio099d6b02009-05-05 12:10:04 +03003602# check if pipe2 is there
3603pipe2=no
3604cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003605#include <unistd.h>
3606#include <fcntl.h>
3607
3608int main(void)
3609{
3610 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003611 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003612}
3613EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003614if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003615 pipe2=yes
3616fi
3617
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003618# check if accept4 is there
3619accept4=no
3620cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003621#include <sys/socket.h>
3622#include <stddef.h>
3623
3624int main(void)
3625{
3626 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3627 return 0;
3628}
3629EOF
3630if compile_prog "" "" ; then
3631 accept4=yes
3632fi
3633
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303634# check if tee/splice is there. vmsplice was added same time.
3635splice=no
3636cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303637#include <unistd.h>
3638#include <fcntl.h>
3639#include <limits.h>
3640
3641int main(void)
3642{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003643 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303644 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3645 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3646 return 0;
3647}
3648EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003649if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303650 splice=yes
3651fi
3652
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003653##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003654# libnuma probe
3655
3656if test "$numa" != "no" ; then
3657 cat > $TMPC << EOF
3658#include <numa.h>
3659int main(void) { return numa_available(); }
3660EOF
3661
3662 if compile_prog "" "-lnuma" ; then
3663 numa=yes
3664 libs_softmmu="-lnuma $libs_softmmu"
3665 else
3666 if test "$numa" = "yes" ; then
3667 feature_not_found "numa" "install numactl devel"
3668 fi
3669 numa=no
3670 fi
3671fi
3672
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003673if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3674 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3675 exit 1
3676fi
3677
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003678##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003679# tcmalloc probe
3680
3681if test "$tcmalloc" = "yes" ; then
3682 cat > $TMPC << EOF
3683#include <stdlib.h>
3684int main(void) { malloc(1); return 0; }
3685EOF
3686
3687 if compile_prog "" "-ltcmalloc" ; then
3688 LIBS="-ltcmalloc $LIBS"
3689 else
3690 feature_not_found "tcmalloc" "install gperftools devel"
3691 fi
3692fi
3693
3694##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003695# jemalloc probe
3696
3697if test "$jemalloc" = "yes" ; then
3698 cat > $TMPC << EOF
3699#include <stdlib.h>
3700int main(void) { malloc(1); return 0; }
3701EOF
3702
3703 if compile_prog "" "-ljemalloc" ; then
3704 LIBS="-ljemalloc $LIBS"
3705 else
3706 feature_not_found "jemalloc" "install jemalloc devel"
3707 fi
3708fi
3709
3710##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003711# signalfd probe
3712signalfd="no"
3713cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003714#include <unistd.h>
3715#include <sys/syscall.h>
3716#include <signal.h>
3717int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3718EOF
3719
3720if compile_prog "" "" ; then
3721 signalfd=yes
3722fi
3723
Riku Voipioc2882b92009-08-12 15:08:24 +03003724# check if eventfd is supported
3725eventfd=no
3726cat > $TMPC << EOF
3727#include <sys/eventfd.h>
3728
3729int main(void)
3730{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003731 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003732}
3733EOF
3734if compile_prog "" "" ; then
3735 eventfd=yes
3736fi
3737
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003738# check if memfd is supported
3739memfd=no
3740cat > $TMPC << EOF
3741#include <sys/memfd.h>
3742
3743int main(void)
3744{
3745 return memfd_create("foo", MFD_ALLOW_SEALING);
3746}
3747EOF
3748if compile_prog "" "" ; then
3749 memfd=yes
3750fi
3751
3752
3753
Ulrich Hechtd0927932009-09-17 20:22:14 +03003754# check for fallocate
3755fallocate=no
3756cat > $TMPC << EOF
3757#include <fcntl.h>
3758
3759int main(void)
3760{
3761 fallocate(0, 0, 0, 0);
3762 return 0;
3763}
3764EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003765if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003766 fallocate=yes
3767fi
3768
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003769# check for fallocate hole punching
3770fallocate_punch_hole=no
3771cat > $TMPC << EOF
3772#include <fcntl.h>
3773#include <linux/falloc.h>
3774
3775int main(void)
3776{
3777 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3778 return 0;
3779}
3780EOF
3781if compile_prog "" "" ; then
3782 fallocate_punch_hole=yes
3783fi
3784
Denis V. Lunevb953f072015-01-30 11:42:14 +03003785# check that fallocate supports range zeroing inside the file
3786fallocate_zero_range=no
3787cat > $TMPC << EOF
3788#include <fcntl.h>
3789#include <linux/falloc.h>
3790
3791int main(void)
3792{
3793 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3794 return 0;
3795}
3796EOF
3797if compile_prog "" "" ; then
3798 fallocate_zero_range=yes
3799fi
3800
Kevin Wolfed911432014-09-29 17:12:59 +02003801# check for posix_fallocate
3802posix_fallocate=no
3803cat > $TMPC << EOF
3804#include <fcntl.h>
3805
3806int main(void)
3807{
3808 posix_fallocate(0, 0, 0);
3809 return 0;
3810}
3811EOF
3812if compile_prog "" "" ; then
3813 posix_fallocate=yes
3814fi
3815
Peter Maydellc727f472011-01-06 11:05:10 +00003816# check for sync_file_range
3817sync_file_range=no
3818cat > $TMPC << EOF
3819#include <fcntl.h>
3820
3821int main(void)
3822{
3823 sync_file_range(0, 0, 0, 0);
3824 return 0;
3825}
3826EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003827if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003828 sync_file_range=yes
3829fi
3830
Peter Maydelldace20d2011-01-10 13:11:24 +00003831# check for linux/fiemap.h and FS_IOC_FIEMAP
3832fiemap=no
3833cat > $TMPC << EOF
3834#include <sys/ioctl.h>
3835#include <linux/fs.h>
3836#include <linux/fiemap.h>
3837
3838int main(void)
3839{
3840 ioctl(0, FS_IOC_FIEMAP, 0);
3841 return 0;
3842}
3843EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003844if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003845 fiemap=yes
3846fi
3847
Ulrich Hechtd0927932009-09-17 20:22:14 +03003848# check for dup3
3849dup3=no
3850cat > $TMPC << EOF
3851#include <unistd.h>
3852
3853int main(void)
3854{
3855 dup3(0, 0, 0);
3856 return 0;
3857}
3858EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003859if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003860 dup3=yes
3861fi
3862
Alex Bligh4e0c6522013-08-21 16:02:43 +01003863# check for ppoll support
3864ppoll=no
3865cat > $TMPC << EOF
3866#include <poll.h>
3867
3868int main(void)
3869{
3870 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3871 ppoll(&pfd, 1, 0, 0);
3872 return 0;
3873}
3874EOF
3875if compile_prog "" "" ; then
3876 ppoll=yes
3877fi
3878
Alex Blighcd758dd2013-08-21 16:02:44 +01003879# check for prctl(PR_SET_TIMERSLACK , ... ) support
3880prctl_pr_set_timerslack=no
3881cat > $TMPC << EOF
3882#include <sys/prctl.h>
3883
3884int main(void)
3885{
3886 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3887 return 0;
3888}
3889EOF
3890if compile_prog "" "" ; then
3891 prctl_pr_set_timerslack=yes
3892fi
3893
Peter Maydell3b6edd12011-02-15 18:35:05 +00003894# check for epoll support
3895epoll=no
3896cat > $TMPC << EOF
3897#include <sys/epoll.h>
3898
3899int main(void)
3900{
3901 epoll_create(0);
3902 return 0;
3903}
3904EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003905if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003906 epoll=yes
3907fi
3908
Peter Maydell227f0212016-06-06 19:58:11 +01003909# epoll_create1 is a later addition
3910# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00003911epoll_create1=no
3912cat > $TMPC << EOF
3913#include <sys/epoll.h>
3914
3915int main(void)
3916{
Peter Maydell19e83f62011-04-26 16:56:40 +01003917 /* Note that we use epoll_create1 as a value, not as
3918 * a function being called. This is necessary so that on
3919 * old SPARC glibc versions where the function was present in
3920 * the library but not declared in the header file we will
3921 * fail the configure check. (Otherwise we will get a compiler
3922 * warning but not an error, and will proceed to fail the
3923 * qemu compile where we compile with -Werror.)
3924 */
Blue Swirlc075a722012-08-09 20:21:25 +00003925 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003926}
3927EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003928if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003929 epoll_create1=yes
3930fi
3931
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003932# check for sendfile support
3933sendfile=no
3934cat > $TMPC << EOF
3935#include <sys/sendfile.h>
3936
3937int main(void)
3938{
3939 return sendfile(0, 0, 0, 0);
3940}
3941EOF
3942if compile_prog "" "" ; then
3943 sendfile=yes
3944fi
3945
Riku Voipio51834342014-06-22 11:25:42 +01003946# check for timerfd support (glibc 2.8 and newer)
3947timerfd=no
3948cat > $TMPC << EOF
3949#include <sys/timerfd.h>
3950
3951int main(void)
3952{
3953 return(timerfd_create(CLOCK_REALTIME, 0));
3954}
3955EOF
3956if compile_prog "" "" ; then
3957 timerfd=yes
3958fi
3959
Riku Voipio9af5c902014-08-12 15:58:57 +03003960# check for setns and unshare support
3961setns=no
3962cat > $TMPC << EOF
3963#include <sched.h>
3964
3965int main(void)
3966{
3967 int ret;
3968 ret = setns(0, 0);
3969 ret = unshare(0);
3970 return ret;
3971}
3972EOF
3973if compile_prog "" "" ; then
3974 setns=yes
3975fi
3976
Aleksandar Markovic38860a02016-10-10 13:23:29 +02003977# clock_adjtime probe
3978clock_adjtime=no
3979cat > $TMPC <<EOF
3980#include <time.h>
3981
3982int main(void)
3983{
3984 return clock_adjtime(0, 0);
3985}
3986EOF
3987clock_adjtime=no
3988if compile_prog "" "" ; then
3989 clock_adjtime=yes
3990fi
3991
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02003992# syncfs probe
3993syncfs=no
3994cat > $TMPC <<EOF
3995#include <unistd.h>
3996
3997int main(void)
3998{
3999 return syncfs(0);
4000}
4001EOF
4002syncfs=no
4003if compile_prog "" "" ; then
4004 syncfs=yes
4005fi
4006
pbrookcc8ae6d2006-04-23 17:57:59 +00004007# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02004008if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01004009 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02004010 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02004011 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02004012 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11004013 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02004014 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02004015 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02004016 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00004017fi
4018
Stefan Weilf514f412009-10-11 12:44:07 +02004019# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004020byteswap_h=no
4021cat > $TMPC << EOF
4022#include <byteswap.h>
4023int main(void) { return bswap_32(0); }
4024EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004025if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004026 byteswap_h=yes
4027fi
4028
Stefan Weil75f13592013-01-05 12:17:38 +01004029# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004030bswap_h=no
4031cat > $TMPC << EOF
4032#include <sys/endian.h>
4033#include <sys/types.h>
4034#include <machine/bswap.h>
4035int main(void) { return bswap32(0); }
4036EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02004037if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004038 bswap_h=yes
4039fi
4040
aliguorida93a1f2008-12-12 20:02:52 +00004041##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02004042# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004043if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004044 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01004045 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004046 libiscsi_cflags=$($pkg_config --cflags libiscsi)
4047 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004048 else
4049 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02004050 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004051 fi
4052 libiscsi="no"
4053 fi
4054fi
4055
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004056##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00004057# Do we need libm
4058cat > $TMPC << EOF
4059#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10004060int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00004061EOF
4062if compile_prog "" "" ; then
4063 :
4064elif compile_prog "" "-lm" ; then
4065 LIBS="-lm $LIBS"
4066 libs_qga="-lm $libs_qga"
4067else
Peter Maydell76ad07a2013-04-08 12:11:26 +01004068 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00004069fi
4070
4071##########################################
aliguorida93a1f2008-12-12 20:02:52 +00004072# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00004073# uClibc provides 2 versions of clock_gettime(), one with realtime
4074# support and one without. This means that the clock_gettime() don't
4075# need -lrt. We still need it for timer_create() so we check for this
4076# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00004077cat > $TMPC <<EOF
4078#include <signal.h>
4079#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00004080int main(void) {
4081 timer_create(CLOCK_REALTIME, NULL, NULL);
4082 return clock_gettime(CLOCK_REALTIME, NULL);
4083}
aliguorida93a1f2008-12-12 20:02:52 +00004084EOF
4085
Juan Quintela52166aa2009-08-03 14:46:03 +02004086if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02004087 :
Natanael Copa8bacde82012-09-12 09:06:51 +00004088# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07004089elif compile_prog "" "$pthread_lib -lrt" ; then
4090 LIBS="$LIBS -lrt"
4091 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00004092fi
4093
Blue Swirl31ff5042009-09-12 12:33:07 +00004094if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02004095 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02004096 libs_softmmu="-lutil $libs_softmmu"
4097fi
4098
Blue Swirlde5071c2009-09-12 09:58:46 +00004099##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004100# spice probe
4101if test "$spice" != "no" ; then
4102 cat > $TMPC << EOF
4103#include <spice.h>
4104int main(void) { spice_server_new(); return 0; }
4105EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004106 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4107 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004108 if $pkg_config --atleast-version=0.12.0 spice-server && \
4109 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004110 compile_prog "$spice_cflags" "$spice_libs" ; then
4111 spice="yes"
4112 libs_softmmu="$libs_softmmu $spice_libs"
4113 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004114 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4115 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004116 else
4117 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004118 feature_not_found "spice" \
4119 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004120 fi
4121 spice="no"
4122 fi
4123fi
4124
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004125# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004126smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004127if test "$smartcard" != "no"; then
4128 if $pkg_config libcacard; then
4129 libcacard_cflags=$($pkg_config --cflags libcacard)
4130 libcacard_libs=$($pkg_config --libs libcacard)
4131 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4132 libs_softmmu="$libs_softmmu $libcacard_libs"
4133 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004134 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004135 if test "$smartcard" = "yes"; then
4136 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004137 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004138 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004139 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004140fi
4141
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004142# check for libusb
4143if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004144 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004145 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004146 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4147 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004148 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4149 libs_softmmu="$libs_softmmu $libusb_libs"
4150 else
4151 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004152 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004153 fi
4154 libusb="no"
4155 fi
4156fi
4157
Hans de Goede69354a82011-07-19 11:04:10 +02004158# check for usbredirparser for usb network redirection support
4159if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004160 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004161 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004162 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4163 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004164 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02004165 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02004166 else
4167 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004168 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004169 fi
4170 usb_redir="no"
4171 fi
4172fi
4173
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004174##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004175# check if we have VSS SDK headers for win
4176
4177if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4178 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004179 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004180 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4181 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004182 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004183 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4184 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004185 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004186 esac
4187 cat > $TMPC << EOF
4188#define __MIDL_user_allocate_free_DEFINED__
4189#include <inc/win2003/vss.h>
4190int main(void) { return VSS_CTX_BACKUP; }
4191EOF
4192 if compile_prog "$vss_win32_include" "" ; then
4193 guest_agent_with_vss="yes"
4194 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004195 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004196 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004197 else
4198 if test "$vss_win32_sdk" != "" ; then
4199 echo "ERROR: Please download and install Microsoft VSS SDK:"
4200 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4201 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4202 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4203 echo "ERROR: The headers are extracted in the directory \`inc'."
4204 feature_not_found "VSS support"
4205 fi
4206 guest_agent_with_vss="no"
4207 fi
4208fi
4209
4210##########################################
4211# lookup Windows platform SDK (if not specified)
4212# The SDK is needed only to build .tlb (type library) file of guest agent
4213# VSS provider from the source. It is usually unnecessary because the
4214# pre-compiled .tlb file is included.
4215
4216if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4217 if test -z "$win_sdk"; then
4218 programfiles="$PROGRAMFILES"
4219 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4220 if test -n "$programfiles"; then
4221 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4222 else
4223 feature_not_found "Windows SDK"
4224 fi
4225 elif test "$win_sdk" = "no"; then
4226 win_sdk=""
4227 fi
4228fi
4229
4230##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004231# check if mingw environment provides a recent ntddscsi.h
4232if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4233 cat > $TMPC << EOF
4234#include <windows.h>
4235#include <ntddscsi.h>
4236int main(void) {
4237#if !defined(IOCTL_SCSI_GET_ADDRESS)
4238#error Missing required ioctl definitions
4239#endif
4240 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4241 return addr.Lun;
4242}
4243EOF
4244 if compile_prog "" "" ; then
4245 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004246 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004247 fi
4248fi
4249
4250##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004251# virgl renderer probe
4252
4253if test "$virglrenderer" != "no" ; then
4254 cat > $TMPC << EOF
4255#include <virglrenderer.h>
4256int main(void) { virgl_renderer_poll(); return 0; }
4257EOF
4258 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4259 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4260 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4261 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4262 virglrenderer="yes"
4263 else
4264 if test "$virglrenderer" = "yes" ; then
4265 feature_not_found "virglrenderer"
4266 fi
4267 virglrenderer="no"
4268 fi
4269fi
4270
4271##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004272# check if we have fdatasync
4273
4274fdatasync=no
4275cat > $TMPC << EOF
4276#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004277int main(void) {
4278#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4279return fdatasync(0);
4280#else
Stefan Weile172fe12012-04-06 21:33:20 +02004281#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004282#endif
4283}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004284EOF
4285if compile_prog "" "" ; then
4286 fdatasync=yes
4287fi
4288
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004289##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004290# check if we have madvise
4291
4292madvise=no
4293cat > $TMPC << EOF
4294#include <sys/types.h>
4295#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004296#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004297int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4298EOF
4299if compile_prog "" "" ; then
4300 madvise=yes
4301fi
4302
4303##########################################
4304# check if we have posix_madvise
4305
4306posix_madvise=no
4307cat > $TMPC << EOF
4308#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004309#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004310int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4311EOF
4312if compile_prog "" "" ; then
4313 posix_madvise=yes
4314fi
4315
4316##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004317# check if we have posix_syslog
4318
4319posix_syslog=no
4320cat > $TMPC << EOF
4321#include <syslog.h>
4322int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4323EOF
4324if compile_prog "" "" ; then
4325 posix_syslog=yes
4326fi
4327
4328##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004329# check if trace backend exists
4330
Lluís Vilanova5b808272014-05-27 15:02:14 +02004331$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004332if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004333 error_exit "invalid trace backends" \
4334 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004335fi
4336
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004337##########################################
4338# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004339if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004340 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004341#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004342int main(void) { return 0; }
4343EOF
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004344 if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004345 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004346 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004347 else
Francis Deslauriersc79ed232016-11-28 10:52:17 -05004348 lttng_ust_libs="-llttng-ust -ldl"
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004349 fi
4350 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004351 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004352 else
4353 urcu_bp_libs="-lurcu-bp"
4354 fi
4355
4356 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4357 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004358 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004359 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004360 fi
4361fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004362
4363##########################################
4364# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004365if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004366 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004367 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004368 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004369 trace_backend_stap="no"
4370 if has 'stap' ; then
4371 trace_backend_stap="yes"
4372 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004373fi
4374
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004375##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004376# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304377
Peter Maydell7c2acc72013-04-08 12:11:27 +01004378# We prefer ucontext, but it's not always possible. The fallback
4379# is sigcontext. gthread is not selectable except explicitly, because
4380# it is not functional enough to run QEMU proper. (It is occasionally
4381# useful for debugging purposes.) On Windows the only valid backend
4382# is the Windows-specific one.
4383
4384ucontext_works=no
4385if test "$darwin" != "yes"; then
4386 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304387#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004388#ifdef __stub_makecontext
4389#error Ignoring glibc stub makecontext which will always fail
4390#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004391int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304392EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004393 if compile_prog "" "" ; then
4394 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304395 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004396fi
4397
4398if test "$coroutine" = ""; then
4399 if test "$mingw32" = "yes"; then
4400 coroutine=win32
4401 elif test "$ucontext_works" = "yes"; then
4402 coroutine=ucontext
4403 else
4404 coroutine=sigaltstack
4405 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004406else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004407 case $coroutine in
4408 windows)
4409 if test "$mingw32" != "yes"; then
4410 error_exit "'windows' coroutine backend only valid for Windows"
4411 fi
4412 # Unfortunately the user visible backend name doesn't match the
4413 # coroutine-*.c filename for this case, so we have to adjust it here.
4414 coroutine=win32
4415 ;;
4416 ucontext)
4417 if test "$ucontext_works" != "yes"; then
4418 feature_not_found "ucontext"
4419 fi
4420 ;;
4421 gthread|sigaltstack)
4422 if test "$mingw32" = "yes"; then
4423 error_exit "only the 'windows' coroutine backend is valid for Windows"
4424 fi
4425 ;;
4426 *)
4427 error_exit "unknown coroutine backend $coroutine"
4428 ;;
4429 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304430fi
4431
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004432if test "$coroutine_pool" = ""; then
4433 if test "$coroutine" = "gthread"; then
4434 coroutine_pool=no
4435 else
4436 coroutine_pool=yes
4437 fi
4438fi
4439if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4440 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4441fi
4442
Peter Lieven7d992e42016-09-27 11:58:45 +02004443if test "$debug_stack_usage" = "yes"; then
4444 if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4445 error_exit "stack usage debugging is not supported for $cpu"
4446 fi
4447 if test "$coroutine_pool" = "yes"; then
4448 echo "WARN: disabling coroutine pool for stack usage debugging"
4449 coroutine_pool=no
4450 fi
4451fi
4452
4453
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304454##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304455# check if we have open_by_handle_at
4456
Stefan Weil4e1797f2012-06-18 22:11:06 +02004457open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304458cat > $TMPC << EOF
4459#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004460#if !defined(AT_EMPTY_PATH)
4461# error missing definition
4462#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004463int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004464#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304465EOF
4466if compile_prog "" "" ; then
4467 open_by_handle_at=yes
4468fi
4469
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304470########################################
4471# check if we have linux/magic.h
4472
4473linux_magic_h=no
4474cat > $TMPC << EOF
4475#include <linux/magic.h>
4476int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004477 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304478}
4479EOF
4480if compile_prog "" "" ; then
4481 linux_magic_h=yes
4482fi
4483
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004484########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004485# check whether we can disable warning option with a pragma (this is needed
4486# to silence warnings in the headers of some versions of external libraries).
4487# This test has to be compiled with -Werror as otherwise an unknown pragma is
4488# only a warning.
4489#
4490# If we can't selectively disable warning in the code, disable -Werror so that
4491# the build doesn't fail anyway.
4492
Peter Maydell06d71fa2012-07-30 16:13:07 +01004493pragma_disable_unused_but_set=no
4494cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004495#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004496#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004497#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004498#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004499
Peter Maydell06d71fa2012-07-30 16:13:07 +01004500int main(void) {
4501 return 0;
4502}
4503EOF
4504if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004505 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004506else
4507 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004508fi
4509
4510########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004511# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004512
4513valgrind_h=no
4514cat > $TMPC << EOF
4515#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004516int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004517 return 0;
4518}
4519EOF
4520if compile_prog "" "" ; then
4521 valgrind_h=yes
4522fi
4523
4524########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004525# check if environ is declared
4526
4527has_environ=no
4528cat > $TMPC << EOF
4529#include <unistd.h>
4530int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004531 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004532 return 0;
4533}
4534EOF
4535if compile_prog "" "" ; then
4536 has_environ=yes
4537fi
4538
Richard Henderson76a347e2012-12-28 14:17:02 -08004539########################################
4540# check if cpuid.h is usable.
4541
4542cpuid_h=no
4543cat > $TMPC << EOF
4544#include <cpuid.h>
4545int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004546 unsigned a, b, c, d;
4547 int max = __get_cpuid_max(0, 0);
4548
4549 if (max >= 1) {
4550 __cpuid(1, a, b, c, d);
4551 }
4552
4553 if (max >= 7) {
4554 __cpuid_count(7, 0, a, b, c, d);
4555 }
4556
4557 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004558}
4559EOF
4560if compile_prog "" "" ; then
4561 cpuid_h=yes
4562fi
4563
Richard Hendersonf5401662013-02-16 12:46:59 -08004564########################################
4565# check if __[u]int128_t is usable.
4566
4567int128=no
4568cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004569#if defined(__clang_major__) && defined(__clang_minor__)
4570# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4571# error __int128_t does not work in CLANG before 3.2
4572# endif
4573#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004574__int128_t a;
4575__uint128_t b;
4576int main (void) {
4577 a = a + b;
4578 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004579 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004580 return 0;
4581}
4582EOF
4583if compile_prog "" "" ; then
4584 int128=yes
4585fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004586
Richard Henderson7ebee432016-06-29 21:10:59 -07004587#########################################
4588# See if 128-bit atomic operations are supported.
4589
4590atomic128=no
4591if test "$int128" = "yes"; then
4592 cat > $TMPC << EOF
4593int main(void)
4594{
4595 unsigned __int128 x = 0, y = 0;
4596 y = __atomic_load_16(&x, 0);
4597 __atomic_store_16(&x, y, 0);
4598 __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4599 return 0;
4600}
4601EOF
4602 if compile_prog "" "" ; then
4603 atomic128=yes
4604 fi
4605fi
4606
Richard Hendersondf79b992016-09-02 12:23:57 -07004607#########################################
4608# See if 64-bit atomic operations are supported.
4609# Note that without __atomic builtins, we can only
4610# assume atomic loads/stores max at pointer size.
4611
4612cat > $TMPC << EOF
4613#include <stdint.h>
4614int main(void)
4615{
4616 uint64_t x = 0, y = 0;
4617#ifdef __ATOMIC_RELAXED
4618 y = __atomic_load_8(&x, 0);
4619 __atomic_store_8(&x, y, 0);
4620 __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4621 __atomic_exchange_8(&x, y, 0);
4622 __atomic_fetch_add_8(&x, y, 0);
4623#else
4624 typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4625 __sync_lock_test_and_set(&x, y);
4626 __sync_val_compare_and_swap(&x, y, 0);
4627 __sync_fetch_and_add(&x, y);
4628#endif
4629 return 0;
4630}
4631EOF
4632if compile_prog "" "" ; then
4633 atomic64=yes
4634fi
4635
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004636########################################
4637# check if getauxval is available.
4638
4639getauxval=no
4640cat > $TMPC << EOF
4641#include <sys/auxv.h>
4642int main(void) {
4643 return getauxval(AT_HWCAP) == 0;
4644}
4645EOF
4646if compile_prog "" "" ; then
4647 getauxval=yes
4648fi
4649
John Snowfd0e6052015-03-25 18:57:39 -04004650########################################
4651# check if ccache is interfering with
4652# semantic analysis of macros
4653
John Snow5e4dfd32015-10-28 13:56:40 -04004654unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004655ccache_cpp2=no
4656cat > $TMPC << EOF
4657static const int Z = 1;
4658#define fn() ({ Z; })
4659#define TAUT(X) ((X) == Z)
4660#define PAREN(X, Y) (X == Y)
4661#define ID(X) (X)
4662int main(int argc, char *argv[])
4663{
4664 int x = 0, y = 0;
4665 x = ID(x);
4666 x = fn();
4667 fn();
4668 if (PAREN(x, y)) return 0;
4669 if (TAUT(Z)) return 0;
4670 return 0;
4671}
4672EOF
4673
4674if ! compile_object "-Werror"; then
4675 ccache_cpp2=yes
4676fi
4677
John Snowb553a042015-11-03 15:43:42 -05004678#################################################
4679# clang does not support glibc + FORTIFY_SOURCE.
4680
4681if test "$fortify_source" != "no"; then
4682 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4683 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004684 elif test -n "$cxx" &&
4685 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004686 fortify_source="no";
4687 else
4688 fortify_source="yes"
4689 fi
4690fi
4691
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304692##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04004693# check if struct fsxattr is available via linux/fs.h
4694
4695have_fsxattr=no
4696cat > $TMPC << EOF
4697#include <linux/fs.h>
4698struct fsxattr foo;
4699int main(void) {
4700 return 0;
4701}
4702EOF
4703if compile_prog "" "" ; then
4704 have_fsxattr=yes
4705fi
4706
Peter Maydellb66e10e2016-06-08 18:34:32 +01004707##########################################
4708# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02004709have_rtnetlink=no
4710cat > $TMPC << EOF
4711#include <linux/rtnetlink.h>
4712int main(void) {
4713 return IFLA_PROTO_DOWN;
4714}
4715EOF
4716if compile_prog "" "" ; then
4717 have_rtnetlink=yes
4718fi
4719
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01004720##########################################
4721# check for usable AF_VSOCK environment
4722have_af_vsock=no
4723cat > $TMPC << EOF
4724#include <errno.h>
4725#include <sys/types.h>
4726#include <sys/socket.h>
4727#if !defined(AF_VSOCK)
4728# error missing AF_VSOCK flag
4729#endif
4730#include <linux/vm_sockets.h>
4731int main(void) {
4732 int sock, ret;
4733 struct sockaddr_vm svm;
4734 socklen_t len = sizeof(svm);
4735 sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4736 ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4737 if ((ret == -1) && (errno == ENOTCONN)) {
4738 return 0;
4739 }
4740 return -1;
4741}
4742EOF
4743if compile_prog "" "" ; then
4744 have_af_vsock=yes
4745fi
4746
James Clarke6969ec62016-06-06 12:02:50 +01004747#################################################
4748# Sparc implicitly links with --relax, which is
4749# incompatible with -r, so --no-relax should be
4750# given. It does no harm to give it on other
4751# platforms too.
4752
4753# Note: the prototype is needed since QEMU_CFLAGS
4754# contains -Wmissing-prototypes
4755cat > $TMPC << EOF
4756extern int foo(void);
4757int foo(void) { return 0; }
4758EOF
4759if ! compile_object ""; then
4760 error_exit "Failed to compile object file for LD_REL_FLAGS test"
4761fi
Paolo Bonzini7ecf44a2016-11-29 16:37:20 +01004762for i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
4763 if do_cc -nostdlib $i -o $TMPMO $TMPO; then
4764 LD_REL_FLAGS=$i
4765 break
4766 fi
4767done
4768if test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
4769 feature_not_found "modules" "Cannot find how to build relocatable objects"
James Clarke6969ec62016-06-06 12:02:50 +01004770fi
4771
Jan Vesely277abf12016-04-29 13:15:23 -04004772##########################################
Christopher Covington4d043512016-12-28 15:04:33 -05004773# check for sysmacros.h
4774
4775have_sysmacros=no
4776cat > $TMPC << EOF
4777#include <sys/sysmacros.h>
4778int main(void) {
4779 return makedev(0, 0);
4780}
4781EOF
4782if compile_prog "" "" ; then
4783 have_sysmacros=yes
4784fi
4785
4786##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004787# End of CC checks
4788# After here, no more $cc or $ld runs
4789
Blue Swirl1d728c32012-05-01 18:45:39 +00004790if test "$gcov" = "yes" ; then
4791 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4792 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004793elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004794 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004795elif test "$debug" = "no"; then
4796 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004797fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004798
Peter Lieven6542aa92014-02-03 10:26:13 +01004799##########################################
4800# Do we have libnfs
4801if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004802 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004803 libnfs="yes"
4804 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01004805 else
4806 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004807 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004808 fi
4809 libnfs="no"
4810 fi
4811fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004812
Peter Maydell6ca026c2012-07-18 15:10:18 +01004813# Now we've finished running tests it's OK to add -Werror to the compiler flags
4814if test "$werror" = "yes"; then
4815 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4816fi
4817
Juan Quintelae86ecd42009-08-03 14:45:59 +02004818if test "$solaris" = "no" ; then
4819 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004820 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004821 fi
4822fi
4823
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004824# test if pod2man has --utf8 option
4825if pod2man --help | grep -q utf8; then
4826 POD2MAN="pod2man --utf8"
4827else
4828 POD2MAN="pod2man"
4829fi
4830
Blue Swirl952afb72010-09-19 08:36:34 +00004831# Use ASLR, no-SEH and DEP if available
4832if test "$mingw32" = "yes" ; then
4833 for flag in --dynamicbase --no-seh --nxcompat; do
4834 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4835 LDFLAGS="-Wl,$flag $LDFLAGS"
4836 fi
4837 done
4838fi
4839
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004840qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004841qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004842qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004843qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004844
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004845tools=""
4846if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004847 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004848 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4849 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004850 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004851 fi
4852fi
4853if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304854 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004855 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4856 virtfs=yes
4857 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4858 else
4859 if test "$virtfs" = yes; then
Stefan Weil3f3b5382016-04-08 18:11:13 +02004860 error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05304861 fi
Andreas Färber17500372012-05-01 01:12:03 +02004862 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004863 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304864 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004865fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004866
4867# Probe for guest agent support/options
4868
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004869if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004870 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004871 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004872 guest_agent=yes
4873 elif [ "$guest_agent" != yes ]; then
4874 guest_agent=no
4875 else
4876 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004877 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004878fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004879
Michael Roth9d6bc272015-08-26 10:49:13 -05004880# Guest agent Window MSI package
4881
4882if test "$guest_agent" != yes; then
4883 if test "$guest_agent_msi" = yes; then
4884 error_exit "MSI guest agent package requires guest agent enabled"
4885 fi
4886 guest_agent_msi=no
4887elif test "$mingw32" != "yes"; then
4888 if test "$guest_agent_msi" = "yes"; then
4889 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4890 fi
4891 guest_agent_msi=no
4892elif ! has wixl; then
4893 if test "$guest_agent_msi" = "yes"; then
4894 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4895 fi
4896 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004897else
4898 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4899 # disabled explicitly
4900 if test "$guest_agent_msi" != "no"; then
4901 guest_agent_msi=yes
4902 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004903fi
4904
Michael Roth1a349042015-08-26 11:14:31 -05004905if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004906 if test "$guest_agent_with_vss" = "yes"; then
4907 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4908 fi
4909
4910 if test "$QEMU_GA_MANUFACTURER" = ""; then
4911 QEMU_GA_MANUFACTURER=QEMU
4912 fi
4913
4914 if test "$QEMU_GA_DISTRO" = ""; then
4915 QEMU_GA_DISTRO=Linux
4916 fi
4917
4918 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02004919 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05004920 fi
4921
Stefan Weil89138852016-05-16 15:10:20 +02004922 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05004923
4924 case "$cpu" in
4925 x86_64)
4926 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4927 ;;
4928 i386)
4929 QEMU_GA_MSI_ARCH="-D Arch=32"
4930 ;;
4931 *)
4932 error_exit "CPU $cpu not supported for building installation package"
4933 ;;
4934 esac
4935fi
4936
Paolo Bonzinica35f782010-05-26 16:08:29 +02004937# Mac OS X ships with a broken assembler
4938roms=
4939if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4940 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4941 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01004942 # Different host OS linkers have different ideas about the name of the ELF
4943 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4944 # variant; and Windows uses i386pe.
4945 for emu in elf_i386 elf_i386_fbsd i386pe; do
4946 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4947 ld_i386_emulation="$emu"
4948 roms="optionrom"
4949 break
4950 fi
4951 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02004952fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004953if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004954 roms="$roms spapr-rtas"
4955fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004956
Christian Borntraeger9933c302013-04-23 01:23:03 +00004957if test "$cpu" = "s390x" ; then
4958 roms="$roms s390-ccw"
4959fi
4960
Richard Henderson964c6fa2013-06-21 19:10:16 -07004961# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004962if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07004963 textseg_addr=
4964 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004965 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4966 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004967 textseg_addr=0x60000000
4968 ;;
4969 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004970 # A 256M aligned address, high in the address space, with enough
4971 # room for the code_gen_buffer above it before the stack.
4972 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004973 ;;
4974 esac
4975 if [ -n "$textseg_addr" ]; then
4976 cat > $TMPC <<EOF
4977 int main(void) { return 0; }
4978EOF
4979 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4980 if ! compile_prog "" "$textseg_ldflags"; then
4981 # In case ld does not support -Ttext-segment, edit the default linker
4982 # script via sed to set the .text start addr. This is needed on FreeBSD
4983 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004984 if ! $ld --verbose >/dev/null 2>&1; then
4985 error_exit \
4986 "We need to link the QEMU user mode binaries at a" \
4987 "specific text address. Unfortunately your linker" \
4988 "doesn't support either the -Ttext-segment option or" \
4989 "printing the default linker script with --verbose." \
4990 "If you don't want the user mode binaries, pass the" \
4991 "--disable-user option to configure."
4992 fi
4993
Richard Henderson964c6fa2013-06-21 19:10:16 -07004994 $ld --verbose | sed \
4995 -e '1,/==================================================/d' \
4996 -e '/==================================================/,$d' \
4997 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4998 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4999 textseg_ldflags="-Wl,-T../config-host.ld"
5000 fi
5001 fi
5002fi
5003
Cole Robinson02d34f62016-05-06 14:03:09 -04005004echo_version() {
5005 if test "$1" = "yes" ; then
5006 echo "($2)"
5007 fi
5008}
5009
Jan Kiszka50e12062014-10-02 10:03:55 +02005010# prepend pixman and ftd flags after all config tests are done
5011QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5012libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01005013
bellard43ce4df2003-06-09 19:53:12 +00005014echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02005015echo "BIOS directory $(eval echo $qemu_datadir)"
5016echo "binary directory $(eval echo $bindir)"
5017echo "library directory $(eval echo $libdir)"
5018echo "module directory $(eval echo $qemu_moddir)"
5019echo "libexec directory $(eval echo $libexecdir)"
5020echo "include directory $(eval echo $includedir)"
5021echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00005022if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02005023echo "local state directory $(eval echo $local_statedir)"
5024echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00005025echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005026else
5027echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005028echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00005029fi
bellard5a671352003-10-01 00:13:48 +00005030echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00005031echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00005032echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005033echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005034echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01005035echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005036echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02005037echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02005038echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00005039echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00005040echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00005041echo "python $python"
Brade2d88302011-09-02 16:53:28 -04005042if test "$slirp" = "yes" ; then
5043 echo "smbd $smbd"
5044fi
Fam Zheng17969262014-02-10 14:48:56 +08005045echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00005046echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00005047echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00005048echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00005049echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00005050echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00005051echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00005052echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00005053echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00005054echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00005055if test "$darwin" = "yes" ; then
5056 echo "Cocoa support $cocoa"
5057fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02005058echo "pixman $pixman"
Stefan Weil89138852016-05-16 15:10:20 +02005059echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
5060echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005061echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02005062echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005063echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005064echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005065echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005066echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005067echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02005068echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005069echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005070echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00005071echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005072echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02005073echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00005074echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00005075echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005076echo "Block whitelist (rw) $block_drv_rw_whitelist"
5077echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05305078echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01005079echo "VNC support $vnc"
5080if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01005081 echo "VNC SASL support $vnc_sasl"
5082 echo "VNC JPEG support $vnc_jpeg"
5083 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01005084fi
blueswir131422552007-04-16 18:27:06 +00005085if test -n "$sparc_cpu"; then
5086 echo "Target Sparc Arch $sparc_cpu"
5087fi
aliguorie37630c2009-04-22 15:19:10 +00005088echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00005089if test "$xen" = "yes" ; then
5090 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00005091 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00005092fi
aurel322e4d9fb2008-04-08 06:01:02 +00005093echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02005094echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02005095echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02005096echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00005097echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01005098echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005099echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005100echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00005101echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02005102echo "KVM support $kvm"
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01005103echo "HAX support $hax"
Michael R. Hines2da776d2013-07-22 10:01:54 -04005104echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005105echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00005106echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00005107echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005108echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00005109echo "madvise $madvise"
5110echo "posix_madvise $posix_madvise"
Corey Bryant47e98652012-01-26 09:42:26 -05005111echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005112echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005113echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005114echo "vhost-vsock support $vhost_vsock"
Lluís Vilanova5b808272014-05-27 15:02:14 +02005115echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01005116if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01005117echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01005118fi
Stefan Weil89138852016-05-16 15:10:20 +02005119echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005120echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005121echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005122echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005123echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02005124echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005125echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005126echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005127echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01005128echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05005129echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005130echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05005131echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05005132echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03005133echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01005134echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005135echo "coroutine pool $coroutine_pool"
Peter Lieven7d992e42016-09-27 11:58:45 +02005136echo "debug stack usage $debug_stack_usage"
Bharata B Raoeb100392012-09-24 14:42:45 +05305137echo "GlusterFS support $glusterfs"
Blue Swirl1d728c32012-05-01 18:45:39 +00005138echo "gcov $gcov_tool"
5139echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05005140echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005141echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005142echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02005143echo "QOM debugging $qom_cast_debug"
qiaonuohan607dacd2014-02-18 14:11:30 +08005144echo "lzo support $lzo"
5145echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01005146echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005147echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08005148echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02005149echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08005150echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005151echo "replication support $replication"
bellard67b915a2004-03-31 23:37:16 +00005152
Stefan Weil1ba16962011-07-29 22:40:45 +02005153if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00005154echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00005155fi
bellard97a847b2003-08-10 21:36:04 +00005156
Peter Maydell898be3e2017-03-21 14:31:57 +00005157if test "$supported_cpu" = "no"; then
5158 echo
5159 echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5160 echo
5161 echo "CPU host architecture $cpu support is not currently maintained."
5162 echo "The QEMU project intends to remove support for this host CPU in"
5163 echo "a future release if nobody volunteers to maintain it and to"
5164 echo "provide a build host for our continuous integration setup."
5165 echo "configure has succeeded and you can continue to build, but"
5166 echo "if you care about QEMU on this platform you should contact"
5167 echo "us upstream at qemu-devel@nongnu.org."
5168fi
5169
5170if test "$supported_os" = "no"; then
5171 echo
5172 echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5173 echo
Peter Maydellc50126a2017-03-21 18:08:49 +00005174 echo "Host OS $targetos support is not currently maintained."
5175 echo "The QEMU project intends to remove support for this host OS in"
Peter Maydell898be3e2017-03-21 14:31:57 +00005176 echo "a future release if nobody volunteers to maintain it and to"
5177 echo "provide a build host for our continuous integration setup."
5178 echo "configure has succeeded and you can continue to build, but"
5179 echo "if you care about QEMU on this platform you should contact"
5180 echo "us upstream at qemu-devel@nongnu.org."
5181fi
5182
Juan Quintela98ec69a2009-07-16 18:34:18 +02005183config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00005184
Stefan Weildbd99ae2013-01-01 18:33:44 +01005185echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
5186
Juan Quintela98ec69a2009-07-16 18:34:18 +02005187echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005188echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005189
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02005190echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005191echo "prefix=$prefix" >> $config_host_mak
5192echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03005193echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04005194echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02005195echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005196echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02005197echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03005198echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03005199echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
5200echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08005201echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02005202if test "$mingw32" = "no" ; then
5203 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5204fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04005205echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01005206echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5207echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06005208echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02005209echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005210
Juan Quintela98ec69a2009-07-16 18:34:18 +02005211echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02005212
aurel32f8393942009-04-13 18:45:38 +00005213if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005214 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00005215fi
aliguori1625af82009-04-05 17:41:02 +00005216if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07005217 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00005218fi
bellard7d132992003-03-06 23:23:54 +00005219if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02005220 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005221fi
bellard67b915a2004-03-31 23:37:16 +00005222if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005223 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02005224 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00005225 version_major=${rc_version%%.*}
5226 rc_version=${rc_version#*.}
5227 version_minor=${rc_version%%.*}
5228 rc_version=${rc_version#*.}
5229 version_subminor=${rc_version%%.*}
5230 version_micro=0
5231 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5232 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005233 if test "$guest_agent_with_vss" = "yes" ; then
5234 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05005235 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04005236 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5237 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05005238 if test "$guest_agent_ntddscsi" = "yes" ; then
5239 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5240 fi
Michael Roth1a349042015-08-26 11:14:31 -05005241 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03005242 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5243 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5244 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5245 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5246 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5247 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5248 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5249 fi
pbrook210fa552007-02-27 21:04:49 +00005250else
Juan Quintela35f4df22009-07-27 16:13:07 +02005251 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00005252fi
blueswir1128ab2f2008-08-15 18:33:42 +00005253
Mark McLoughlindffcb712009-10-22 17:49:11 +01005254if test "$linux" = "yes" ; then
5255 echo "CONFIG_LINUX=y" >> $config_host_mak
5256fi
5257
bellard83fb7ad2004-07-05 21:25:26 +00005258if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005259 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00005260fi
malcb29fe3e2008-11-18 01:42:22 +00005261
5262if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005263 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00005264fi
5265
bellardec530c82006-04-25 22:36:06 +00005266if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005267 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005268 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00005269 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02005270 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00005271 fi
bellardec530c82006-04-25 22:36:06 +00005272fi
Andreas Färber179cf402010-09-20 00:50:43 +02005273if test "$haiku" = "yes" ; then
5274 echo "CONFIG_HAIKU=y" >> $config_host_mak
5275fi
bellard97a847b2003-08-10 21:36:04 +00005276if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005277 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005278fi
Stefan Weil1ba16962011-07-29 22:40:45 +02005279if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005280 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00005281fi
bellardc20709a2004-04-21 23:27:19 +00005282if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005283 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04005284 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00005285fi
ths8a16d272008-07-19 09:56:24 +00005286if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005287 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005288fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005289if test "$netmap" = "yes" ; then
5290 echo "CONFIG_NETMAP=y" >> $config_host_mak
5291fi
Gonglei015a33b2014-07-01 20:58:08 +08005292if test "$l2tpv3" = "yes" ; then
5293 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5294fi
Corey Bryant47e98652012-01-26 09:42:26 -05005295if test "$cap_ng" = "yes" ; then
5296 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5297fi
Juan Quintela2358a492009-07-27 16:13:25 +02005298echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005299for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005300 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005301 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005302done
Juan Quintela67f86e82009-08-03 14:46:59 +02005303if test "$audio_pt_int" = "yes" ; then
5304 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5305fi
malcd5631632009-10-10 01:13:41 +04005306if test "$audio_win_int" = "yes" ; then
5307 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5308fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005309echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5310echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005311if test "$vnc" = "yes" ; then
5312 echo "CONFIG_VNC=y" >> $config_host_mak
5313fi
aliguori2f9606b2009-03-06 20:27:28 +00005314if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005315 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005316fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005317if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005318 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005319fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005320if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005321 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005322fi
aliguori76655d62009-03-06 20:27:37 +00005323if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005324 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005325fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005326if test "$xfs" = "yes" ; then
5327 echo "CONFIG_XFS=y" >> $config_host_mak
5328fi
Stefan Weil89138852016-05-16 15:10:20 +02005329qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005330echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005331echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005332echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005333echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005334if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005335 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005336fi
Fam Zheng17969262014-02-10 14:48:56 +08005337if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005338 # $shacmd can generate a hash started with digit, which the compiler doesn't
5339 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005340 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005341 echo "CONFIG_MODULES=y" >> $config_host_mak
5342fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005343if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005344 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005345 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005346 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005347fi
5348if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005349 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005350fi
5351if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005352 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005353fi
Riku Voipioebc996f2009-04-21 15:01:51 +03005354if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005355 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03005356fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005357if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005358 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005359fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005360if test "$accept4" = "yes" ; then
5361 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5362fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305363if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005364 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305365fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005366if test "$eventfd" = "yes" ; then
5367 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5368fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005369if test "$memfd" = "yes" ; then
5370 echo "CONFIG_MEMFD=y" >> $config_host_mak
5371fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005372if test "$fallocate" = "yes" ; then
5373 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5374fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005375if test "$fallocate_punch_hole" = "yes" ; then
5376 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5377fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005378if test "$fallocate_zero_range" = "yes" ; then
5379 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5380fi
Kevin Wolfed911432014-09-29 17:12:59 +02005381if test "$posix_fallocate" = "yes" ; then
5382 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5383fi
Peter Maydellc727f472011-01-06 11:05:10 +00005384if test "$sync_file_range" = "yes" ; then
5385 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5386fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005387if test "$fiemap" = "yes" ; then
5388 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5389fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005390if test "$dup3" = "yes" ; then
5391 echo "CONFIG_DUP3=y" >> $config_host_mak
5392fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005393if test "$ppoll" = "yes" ; then
5394 echo "CONFIG_PPOLL=y" >> $config_host_mak
5395fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005396if test "$prctl_pr_set_timerslack" = "yes" ; then
5397 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5398fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005399if test "$epoll" = "yes" ; then
5400 echo "CONFIG_EPOLL=y" >> $config_host_mak
5401fi
5402if test "$epoll_create1" = "yes" ; then
5403 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5404fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005405if test "$sendfile" = "yes" ; then
5406 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5407fi
Riku Voipio51834342014-06-22 11:25:42 +01005408if test "$timerfd" = "yes" ; then
5409 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5410fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005411if test "$setns" = "yes" ; then
5412 echo "CONFIG_SETNS=y" >> $config_host_mak
5413fi
Aleksandar Markovic38860a02016-10-10 13:23:29 +02005414if test "$clock_adjtime" = "yes" ; then
5415 echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5416fi
Aleksandar Markovic5a03cd02016-10-10 13:23:30 +02005417if test "$syncfs" = "yes" ; then
5418 echo "CONFIG_SYNCFS=y" >> $config_host_mak
5419fi
aurel323b3f24a2009-04-15 16:12:13 +00005420if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005421 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005422fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005423if test "$inotify1" = "yes" ; then
5424 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5425fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005426if test "$byteswap_h" = "yes" ; then
5427 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5428fi
5429if test "$bswap_h" = "yes" ; then
5430 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5431fi
Alexander Graf769ce762009-05-11 17:41:42 +02005432if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005433 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005434 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005435 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005436fi
aurel322e4d9fb2008-04-08 06:01:02 +00005437if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005438 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005439fi
balrogfb599c92008-09-28 23:49:55 +00005440if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005441 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005442 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005443fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005444if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005445 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5446fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005447if test "$gtk" = "yes" ; then
5448 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005449 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005450 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005451 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005452 if test "$gtk_gl" = "yes" ; then
5453 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5454 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005455fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005456echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005457if test "$gnutls" = "yes" ; then
5458 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5459fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005460if test "$gnutls_rnd" = "yes" ; then
5461 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5462fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005463if test "$gcrypt" = "yes" ; then
5464 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Longpeng(Mike)1f923c72016-12-13 18:42:55 +08005465 if test "$gcrypt_hmac" = "yes" ; then
5466 echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5467 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005468 if test "$gcrypt_kdf" = "yes" ; then
5469 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5470 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005471fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005472if test "$nettle" = "yes" ; then
5473 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005474 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005475 if test "$nettle_kdf" = "yes" ; then
5476 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5477 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005478fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005479if test "$tasn1" = "yes" ; then
5480 echo "CONFIG_TASN1=y" >> $config_host_mak
5481fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005482if test "$have_ifaddrs_h" = "yes" ; then
5483 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5484fi
Eric Blake6b39b062016-10-11 10:46:23 -05005485if test "$have_broken_size_max" = "yes" ; then
5486 echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5487fi
Jan Vesely277abf12016-04-29 13:15:23 -04005488
5489# Work around a system header bug with some kernel/XFS header
5490# versions where they both try to define 'struct fsxattr':
5491# xfs headers will not try to redefine structs from linux headers
5492# if this macro is set.
5493if test "$have_fsxattr" = "yes" ; then
5494 echo "HAVE_FSXATTR=y" >> $config_host_mak
5495fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005496if test "$vte" = "yes" ; then
5497 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005498 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5499fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005500if test "$virglrenderer" = "yes" ; then
5501 echo "CONFIG_VIRGL=y" >> $config_host_mak
5502 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5503 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5504fi
aliguorie37630c2009-04-22 15:19:10 +00005505if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005506 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005507 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005508 if test "$xen_pv_domain_build" = "yes" ; then
5509 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5510 fi
aliguorie37630c2009-04-22 15:19:10 +00005511fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005512if test "$linux_aio" = "yes" ; then
5513 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5514fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005515if test "$attr" = "yes" ; then
5516 echo "CONFIG_ATTR=y" >> $config_host_mak
5517fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005518if test "$libattr" = "yes" ; then
5519 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5520fi
Meador Inge983eef52012-02-24 14:00:42 +05305521if test "$virtfs" = "yes" ; then
5522 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005523fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005524if test "$vhost_scsi" = "yes" ; then
5525 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5526fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005527if test "$vhost_net" = "yes" ; then
5528 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5529fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005530if test "$vhost_vsock" = "yes" ; then
5531 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5532fi
ths77755342008-11-27 15:45:16 +00005533if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005534 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005535fi
aliguoribf9298b2008-12-05 20:05:26 +00005536if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005537 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005538fi
aliguoriceb42de2009-04-07 18:43:28 +00005539if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005540 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005541fi
aurel32f652e6a2008-12-16 10:43:48 +00005542if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005543 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005544fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005545if test "$signalfd" = "yes" ; then
5546 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5547fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005548if test "$tcg_interpreter" = "yes" ; then
5549 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5550fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005551if test "$fdatasync" = "yes" ; then
5552 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5553fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005554if test "$madvise" = "yes" ; then
5555 echo "CONFIG_MADVISE=y" >> $config_host_mak
5556fi
5557if test "$posix_madvise" = "yes" ; then
5558 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5559fi
bellard97a847b2003-08-10 21:36:04 +00005560
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005561if test "$spice" = "yes" ; then
5562 echo "CONFIG_SPICE=y" >> $config_host_mak
5563fi
5564
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005565if test "$smartcard" = "yes" ; then
5566 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005567fi
5568
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005569if test "$libusb" = "yes" ; then
5570 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5571fi
5572
Hans de Goede69354a82011-07-19 11:04:10 +02005573if test "$usb_redir" = "yes" ; then
5574 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5575fi
5576
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005577if test "$opengl" = "yes" ; then
5578 echo "CONFIG_OPENGL=y" >> $config_host_mak
5579 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005580 if test "$opengl_dmabuf" = "yes" ; then
5581 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5582 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005583fi
5584
Liang Li99f2dbd2016-03-08 13:53:16 +08005585if test "$avx2_opt" = "yes" ; then
5586 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5587fi
5588
qiaonuohan607dacd2014-02-18 14:11:30 +08005589if test "$lzo" = "yes" ; then
5590 echo "CONFIG_LZO=y" >> $config_host_mak
5591fi
5592
5593if test "$snappy" = "yes" ; then
5594 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5595fi
5596
Peter Wu6b383c02015-01-06 18:48:14 +01005597if test "$bzip2" = "yes" ; then
5598 echo "CONFIG_BZIP2=y" >> $config_host_mak
5599 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5600fi
5601
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005602if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005603 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005604 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5605 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005606fi
5607
Peter Lieven6542aa92014-02-03 10:26:13 +01005608if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04005609 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5610 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01005611fi
5612
Eduardo Otubof7945732012-08-14 18:44:05 -03005613if test "$seccomp" = "yes"; then
5614 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5615fi
5616
bellard83fb7ad2004-07-05 21:25:26 +00005617# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005618if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005619 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005620fi
5621
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005622if test "$localtime_r" = "yes" ; then
5623 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5624fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005625if test "$qom_cast_debug" = "yes" ; then
5626 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5627fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005628if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005629 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005630 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5631 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005632fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005633
Peter Maydell7c2acc72013-04-08 12:11:27 +01005634echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005635if test "$coroutine_pool" = "yes" ; then
5636 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5637else
5638 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5639fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305640
Peter Lieven7d992e42016-09-27 11:58:45 +02005641if test "$debug_stack_usage" = "yes" ; then
5642 echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5643fi
5644
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305645if test "$open_by_handle_at" = "yes" ; then
5646 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5647fi
5648
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305649if test "$linux_magic_h" = "yes" ; then
5650 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5651fi
5652
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005653if test "$pragma_diagnostic_available" = "yes" ; then
5654 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005655fi
5656
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005657if test "$valgrind_h" = "yes" ; then
5658 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5659fi
5660
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005661if test "$has_environ" = "yes" ; then
5662 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5663fi
5664
Richard Henderson76a347e2012-12-28 14:17:02 -08005665if test "$cpuid_h" = "yes" ; then
5666 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5667fi
5668
Richard Hendersonf5401662013-02-16 12:46:59 -08005669if test "$int128" = "yes" ; then
5670 echo "CONFIG_INT128=y" >> $config_host_mak
5671fi
5672
Richard Henderson7ebee432016-06-29 21:10:59 -07005673if test "$atomic128" = "yes" ; then
5674 echo "CONFIG_ATOMIC128=y" >> $config_host_mak
5675fi
5676
Richard Hendersondf79b992016-09-02 12:23:57 -07005677if test "$atomic64" = "yes" ; then
5678 echo "CONFIG_ATOMIC64=y" >> $config_host_mak
5679fi
5680
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005681if test "$getauxval" = "yes" ; then
5682 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5683fi
5684
Bharata B Raoeb100392012-09-24 14:42:45 +05305685if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005686 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005687 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5688 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305689fi
5690
Jeff Codyd85fa9e2016-04-05 10:40:09 -04005691if test "$glusterfs_xlator_opt" = "yes" ; then
5692 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5693fi
5694
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305695if test "$glusterfs_discard" = "yes" ; then
5696 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5697fi
5698
Bharata B Rao7c815372013-12-21 14:51:25 +05305699if test "$glusterfs_zerofill" = "yes" ; then
5700 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5701fi
5702
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005703if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005704 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005705 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5706 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005707fi
5708
blueswir168063642008-11-22 21:03:55 +00005709# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005710if test "$libusb" = "yes"; then
5711 echo "HOST_USB=libusb legacy" >> $config_host_mak
5712else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005713 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005714fi
blueswir168063642008-11-22 21:03:55 +00005715
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005716# TPM passthrough support?
5717if test "$tpm" = "yes"; then
5718 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5719 if test "$tpm_passthrough" = "yes"; then
5720 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5721 fi
5722fi
5723
Lluís Vilanova5b808272014-05-27 15:02:14 +02005724echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5725if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005726 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305727fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005728if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005729 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5730 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005731 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005732fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03005733if have_backend "log"; then
5734 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02005735fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005736if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005737 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5738fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005739if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005740 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5741 if test "$trace_backend_stap" = "yes" ; then
5742 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5743 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005744fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005745if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005746 if test "$linux" = "yes" ; then
5747 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005748 else
Stewart Smith21684af2014-01-24 12:39:10 +11005749 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005750 fi
5751fi
Paul Durrant0a852412016-08-04 14:44:14 +01005752if have_backend "syslog"; then
5753 if test "$posix_syslog" = "yes" ; then
5754 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5755 else
5756 feature_not_found "syslog(trace backend)" "syslog not available"
5757 fi
5758fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005759echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5760
Michael R. Hines2da776d2013-07-22 10:01:54 -04005761if test "$rdma" = "yes" ; then
5762 echo "CONFIG_RDMA=y" >> $config_host_mak
5763fi
5764
Laurent Vivier575b22b2016-06-02 22:14:15 +02005765if test "$have_rtnetlink" = "yes" ; then
5766 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5767fi
5768
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005769if test "$replication" = "yes" ; then
5770 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5771fi
5772
Stefan Hajnoczi6a02c802016-10-14 10:00:55 +01005773if test "$have_af_vsock" = "yes" ; then
5774 echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
5775fi
5776
Christopher Covington4d043512016-12-28 15:04:33 -05005777if test "$have_sysmacros" = "yes" ; then
5778 echo "CONFIG_SYSMACROS=y" >> $config_host_mak
5779fi
5780
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005781# Hold two types of flag:
5782# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5783# a thread we have a handle to
5784# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5785# platform
5786if test "$pthread_setname_np" = "yes" ; then
5787 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5788 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5789fi
5790
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005791if test "$tcg_interpreter" = "yes"; then
5792 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5793elif test "$ARCH" = "sparc64" ; then
5794 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5795elif test "$ARCH" = "s390x" ; then
5796 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005797elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005798 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005799elif test "$ARCH" = "ppc64" ; then
5800 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005801else
5802 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5803fi
5804QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5805
Juan Quintela98ec69a2009-07-16 18:34:18 +02005806echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005807echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005808echo "MAKE=$make" >> $config_host_mak
5809echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005810echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5811echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03005812echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5813echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00005814echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005815echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005816if $iasl -h > /dev/null 2>&1; then
5817 echo "IASL=$iasl" >> $config_host_mak
5818fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005819echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005820echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005821echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005822echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005823echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005824echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07005825echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07005826echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005827echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005828echo "OBJCOPY=$objcopy" >> $config_host_mak
5829echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005830echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005831echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005832echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005833echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005834echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005835echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005836if test "$sparse" = "yes" ; then
5837 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005838 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005839 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005840 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5841 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5842fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005843if test "$cross_prefix" != ""; then
5844 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5845else
5846 echo "AUTOCONF_HOST := " >> $config_host_mak
5847fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005848echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005849echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01005850echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01005851echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005852echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005853echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01005854echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005855echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005856echo "DSOSUF=$DSOSUF" >> $config_host_mak
5857echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005858echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005859echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5860echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005861echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005862echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005863if test "$gcov" = "yes" ; then
5864 echo "CONFIG_GCOV=y" >> $config_host_mak
5865 echo "GCOV=$gcov_tool" >> $config_host_mak
5866fi
Juan Quintela804edf22009-07-27 16:12:49 +02005867
Peter Maydell6efd7512011-11-30 11:59:04 +00005868# use included Linux headers
5869if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005870 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005871 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005872 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005873 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005874 ;;
5875 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005876 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005877 ;;
5878 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005879 linux_arch=s390
5880 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005881 aarch64)
5882 linux_arch=arm64
5883 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005884 mips64)
5885 linux_arch=mips
5886 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005887 *)
5888 # For most CPUs the kernel architecture name and QEMU CPU name match.
5889 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005890 ;;
5891 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005892 # For non-KVM architectures we will not have asm headers
5893 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5894 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5895 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005896fi
5897
bellard1d14ffa2005-10-30 18:58:22 +00005898for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005899target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005900config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02005901target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00005902target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005903
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005904case "$target_name" in
Richard Henderson4a09d0b2017-02-08 15:06:54 -08005905 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 +02005906 target_bigendian=yes
5907 ;;
5908esac
bellard97a847b2003-08-10 21:36:04 +00005909target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005910target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005911target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005912target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005913case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005914 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005915 target_softmmu="yes"
5916 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005917 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005918 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005919 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005920 fi
pbrook9e407a82007-05-26 16:38:53 +00005921 target_user_only="yes"
5922 target_linux_user="yes"
5923 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005924 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005925 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005926 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005927 fi
blueswir184778502008-10-26 20:33:16 +00005928 target_user_only="yes"
5929 target_bsd_user="yes"
5930 ;;
pbrook9e407a82007-05-26 16:38:53 +00005931 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005932 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005933 exit 1
5934 ;;
5935esac
ths831b7822007-01-18 20:06:33 +00005936
bellard97a847b2003-08-10 21:36:04 +00005937mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005938echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005939
pbrooke5fe0c52006-06-11 13:32:59 +00005940bflt="no"
Alex Bennéeca759f92017-02-23 18:29:27 +00005941mttcg="no"
Stefan Weil89138852016-05-16 15:10:20 +02005942interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00005943gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005944
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005945TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005946TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005947TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005948
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005949case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005950 i386)
aurel322408a522008-04-20 20:19:44 +00005951 ;;
5952 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005953 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005954 ;;
5955 alpha)
Richard Henderson5ee4f3c2017-02-24 09:12:43 +11005956 mttcg="yes"
aurel322408a522008-04-20 20:19:44 +00005957 ;;
5958 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005959 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005960 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00005961 mttcg="yes"
pbrook56aebc82008-10-11 17:55:29 +00005962 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005963 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005964 aarch64)
5965 TARGET_BASE_ARCH=arm
5966 bflt="yes"
Alex Bennéeca759f92017-02-23 18:29:27 +00005967 mttcg="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005968 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 +01005969 ;;
aurel322408a522008-04-20 20:19:44 +00005970 cris)
aurel322408a522008-04-20 20:19:44 +00005971 ;;
Richard Henderson61766fe2016-12-15 11:26:14 -08005972 hppa)
5973 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005974 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005975 ;;
aurel322408a522008-04-20 20:19:44 +00005976 m68k)
aurel322408a522008-04-20 20:19:44 +00005977 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005978 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005979 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005980 microblaze|microblazeel)
5981 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005982 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005983 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005984 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005985 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005986 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005987 ;;
5988 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005989 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005990 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005991 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005992 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005993 ;;
5994 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005995 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005996 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005997 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005998 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005999 moxie)
6000 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006001 nios2)
6002 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006003 or1k)
Jia Liue67db062012-07-20 15:50:39 +08006004 TARGET_ARCH=openrisc
6005 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08006006 ;;
aurel322408a522008-04-20 20:19:44 +00006007 ppc)
aurel32c8b35322009-01-24 15:07:34 +00006008 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006009 ;;
6010 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006011 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006012 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00006013 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00006014 ;;
6015 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006016 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006017 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01006018 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006019 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05006020 ppc64le)
6021 TARGET_ARCH=ppc64
6022 TARGET_BASE_ARCH=ppc
6023 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01006024 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 -05006025 ;;
aurel322408a522008-04-20 20:19:44 +00006026 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006027 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006028 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006029 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02006030 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01006031 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00006032 ;;
6033 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006034 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00006035 bflt="yes"
6036 ;;
6037 sparc)
aurel322408a522008-04-20 20:19:44 +00006038 ;;
6039 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02006040 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00006041 ;;
6042 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02006043 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02006044 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02006045 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02006046 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00006047 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006048 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02006049 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01006050 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08006051 tilegx)
6052 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07006053 tricore)
6054 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006055 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08006056 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006057 xtensa|xtensaeb)
6058 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04006059 ;;
aurel322408a522008-04-20 20:19:44 +00006060 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01006061 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00006062 ;;
6063esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006064# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6065if [ "$TARGET_BASE_ARCH" = "" ]; then
6066 TARGET_BASE_ARCH=$TARGET_ARCH
6067fi
6068
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02006069symlink "$source_path/Makefile.target" "$target_dir/Makefile"
6070
Daniel P. Berrange99afc912012-08-20 15:31:38 +01006071upper() {
6072 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6073}
6074
Stefan Weil89138852016-05-16 15:10:20 +02006075target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02006076echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006077echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02006078echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02006079if [ "$TARGET_ABI_DIR" = "" ]; then
6080 TARGET_ABI_DIR=$TARGET_ARCH
6081fi
Juan Quintela25be2102009-10-07 02:41:00 +02006082echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07006083if [ "$HOST_VARIANT_DIR" != "" ]; then
6084 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6085fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006086case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006087 i386|x86_64)
6088 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006089 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00006090 if test "$xen_pci_passthrough" = yes; then
6091 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6092 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006093 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02006094 ;;
6095 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02006096esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006097case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01006098 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02006099 # Make sure the target and host cpus are compatible
6100 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006101 \( "$target_name" = "$cpu" -o \
6102 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
6103 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
6104 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
6105 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01006106 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01006107 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03006108 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
6109 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
6110 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006111 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02006112 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006113 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureau421f4442015-10-26 15:32:00 +01006114 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
Michael S. Tsirkind5970052010-03-17 13:08:17 +02006115 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02006116 fi
6117esac
Vincent Palatinb0cb0a62017-01-10 11:59:57 +01006118if test "$hax" = "yes" ; then
6119 if test "$target_softmmu" = "yes" ; then
6120 case "$target_name" in
6121 i386|x86_64)
6122 echo "CONFIG_HAX=y" >> $config_target_mak
6123 ;;
6124 esac
6125 fi
6126fi
bellardde83cd02003-06-15 20:25:43 +00006127if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006128 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00006129fi
6130if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006131 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
Alex Bennéeca759f92017-02-23 18:29:27 +00006132 if test "$mttcg" = "yes" ; then
6133 echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6134 fi
bellardde83cd02003-06-15 20:25:43 +00006135fi
bellard997344f2003-10-27 21:10:39 +00006136if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006137 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01006138 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00006139fi
ths831b7822007-01-18 20:06:33 +00006140if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006141 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00006142fi
pbrook56aebc82008-10-11 17:55:29 +00006143list=""
6144if test ! -z "$gdb_xml_files" ; then
6145 for x in $gdb_xml_files; do
6146 list="$list $source_path/gdb-xml/$x"
6147 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02006148 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00006149fi
bellardde83cd02003-06-15 20:25:43 +00006150
pbrooke5fe0c52006-06-11 13:32:59 +00006151if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02006152 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00006153fi
blueswir184778502008-10-26 20:33:16 +00006154if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006155 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00006156fi
bellard5b0753e2005-03-01 21:37:28 +00006157
Juan Quintela4afddb52009-08-03 14:46:45 +02006158# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02006159
Juan Quintela4afddb52009-08-03 14:46:45 +02006160cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02006161ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02006162
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006163disas_config() {
6164 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6165 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6166}
6167
Juan Quintela64656022009-08-03 14:46:53 +02006168for i in $ARCH $TARGET_BASE_ARCH ; do
6169 case "$i" in
6170 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006171 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02006172 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05006173 aarch64)
6174 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006175 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05006176 fi
6177 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006178 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006179 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006180 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006181 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00006182 fi
Juan Quintela64656022009-08-03 14:46:53 +02006183 ;;
6184 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006185 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02006186 ;;
Richard Henderson429b31a2016-09-29 10:55:53 -07006187 hppa)
6188 disas_config "HPPA"
6189 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07006190 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006191 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02006192 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02006193 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006194 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02006195 ;;
Michael Walle79368f42012-03-31 19:54:20 +02006196 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006197 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02006198 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006199 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006200 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02006201 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01006202 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006203 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02006204 ;;
6205 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006206 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02006207 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04006208 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006209 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04006210 ;;
Marek Vasute6717112017-01-18 23:01:46 +01006211 nios2)
6212 disas_config "NIOS2"
6213 ;;
Richard Henderson4a09d0b2017-02-08 15:06:54 -08006214 or1k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006215 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08006216 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006217 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006218 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02006219 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01006220 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006221 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02006222 ;;
6223 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006224 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02006225 ;;
6226 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006227 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02006228 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04006229 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006230 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04006231 ;;
Juan Quintela64656022009-08-03 14:46:53 +02006232 esac
6233done
Stefan Weil9195b2c2011-10-19 07:07:18 +02006234if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07006235 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02006236fi
Juan Quintela64656022009-08-03 14:46:53 +02006237
Juan Quintela6ee71262009-08-03 14:46:47 +02006238case "$ARCH" in
6239alpha)
6240 # Ensure there's only a single GP
6241 cflags="-msmall-data $cflags"
6242;;
6243esac
6244
Juan Quintelad02c1db2009-08-03 14:46:50 +02006245if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02006246 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006247 if test "$target_linux_user" = "yes" ; then
6248 cflags="-p $cflags"
6249 ldflags="-p $ldflags"
6250 fi
6251 if test "$target_softmmu" = "yes" ; then
6252 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02006253 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02006254 fi
6255fi
6256
Juan Quintela9b8e1112009-08-03 14:46:46 +02006257if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07006258 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02006259fi
Juan Quintelafa282482009-07-22 22:37:39 +02006260
Juan Quintela25be2102009-10-07 02:41:00 +02006261echo "LDFLAGS+=$ldflags" >> $config_target_mak
6262echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02006263
bellard97a847b2003-08-10 21:36:04 +00006264done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00006265
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01006266if [ "$pixman" = "internal" ]; then
6267 echo "config-host.h: subdir-pixman" >> $config_host_mak
6268fi
6269
Peter Crosthwaitea540f152013-04-18 14:47:31 +10006270if [ "$dtc_internal" = "yes" ]; then
6271 echo "config-host.h: subdir-dtc" >> $config_host_mak
6272fi
6273
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08006274if test "$numa" = "yes"; then
6275 echo "CONFIG_NUMA=y" >> $config_host_mak
6276fi
6277
John Snowfd0e6052015-03-25 18:57:39 -04006278if test "$ccache_cpp2" = "yes"; then
6279 echo "export CCACHE_CPP2=y" >> $config_host_mak
6280fi
6281
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006282# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08006283DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
Marc-André Lureau56e8bdd2017-01-13 15:41:35 +01006284DIRS="$DIRS docs fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006285DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006286DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02006287DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06006288FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6289FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02006290FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006291FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02006292FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006293FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006294FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01006295FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07006296for bios_file in \
6297 $source_path/pc-bios/*.bin \
Alexey Kardashevskiy225a9ab2016-10-26 13:18:03 +11006298 $source_path/pc-bios/*.lid \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01006299 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07006300 $source_path/pc-bios/*.rom \
6301 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00006302 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07006303 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01006304 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07006305 $source_path/pc-bios/palcode-*
6306do
Stefan Weil89138852016-05-16 15:10:20 +02006307 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006308done
Stefan Weil89138852016-05-16 15:10:20 +02006309for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006310do
Stefan Weil89138852016-05-16 15:10:20 +02006311 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006312done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006313mkdir -p $DIRS
6314for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03006315 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01006316 symlink "$source_path/$f" "$f"
6317 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006318done
Paul Brook1ad21342009-05-19 16:17:58 +01006319
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006320# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06006321for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006322 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01006323 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006324 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006325 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006326 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006327 echo "CC=$cc" >> $config_mak
6328 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006329 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006330 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006331 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006332 echo "LD=$ld" >> $config_mak
6333done
6334
Marc-André Lureaufe310172016-06-15 13:06:00 +02006335# set up tests data directory
6336if [ ! -e tests/data ]; then
6337 symlink "$source_path/tests/data" tests/data
6338fi
6339
Max Reitz76c75602014-05-24 23:24:56 +02006340# set up qemu-iotests in this build directory
6341iotests_common_env="tests/qemu-iotests/common.env"
6342iotests_check="tests/qemu-iotests/check"
6343
6344echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6345echo >> "$iotests_common_env"
6346echo "export PYTHON='$python'" >> "$iotests_common_env"
6347
6348if [ ! -e "$iotests_check" ]; then
6349 symlink "$source_path/$iotests_check" "$iotests_check"
6350fi
6351
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006352# Save the configure command line for later reuse.
6353cat <<EOD >config.status
6354#!/bin/sh
6355# Generated by configure.
6356# Run this file to recreate the current configuration.
6357# Compiler output produced by configure, useful for debugging
6358# configure, is in config.log if it exists.
6359EOD
6360printf "exec" >>config.status
6361printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006362echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006363chmod +x config.status
6364
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006365rm -r "$TMPDIR1"