blob: 71c1e2b1b9147e03654a4941ff0307923351fd28 [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"
Don Slutz66518bf2014-01-02 21:12:46 -050031TMPL="${TMPDIR1}/${TMPB}.lo"
32TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010033TMPE="${TMPDIR1}/${TMPB}.exe"
bellard7d132992003-03-06 23:23:54 +000034
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020035rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000036
Peter Maydellb48e3612011-11-23 17:26:44 +000037# Print a helpful header at the top of config.log
38echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000039printf "# Configured with:" >> config.log
40printf " '%s'" "$0" "$@" >> config.log
41echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000042echo "#" >> config.log
43
Peter Maydell76ad07a2013-04-08 12:11:26 +010044error_exit() {
45 echo
46 echo "ERROR: $1"
47 while test -n "$2"; do
48 echo " $2"
49 shift
50 done
51 echo
52 exit 1
53}
54
Peter Maydell9c83ffd2014-02-25 18:27:49 +000055do_compiler() {
56 # Run the compiler, capturing its output to the log. First argument
57 # is compiler binary to execute.
58 local compiler="$1"
59 shift
60 echo $compiler "$@" >> config.log
61 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010062 # Test passed. If this is an --enable-werror build, rerun
63 # the test with -Werror and bail out if it fails. This
64 # makes warning-generating-errors in configure test code
65 # obvious to developers.
66 if test "$werror" != "yes"; then
67 return 0
68 fi
69 # Don't bother rerunning the compile if we were already using -Werror
70 case "$*" in
71 *-Werror*)
72 return 0
73 ;;
74 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000075 echo $compiler -Werror "$@" >> config.log
76 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010077 error_exit "configure test passed without -Werror but failed with -Werror." \
78 "This is probably a bug in the configure script. The failing command" \
79 "will be at the bottom of config.log." \
80 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010081}
82
Peter Maydell9c83ffd2014-02-25 18:27:49 +000083do_cc() {
84 do_compiler "$cc" "$@"
85}
86
87do_cxx() {
88 do_compiler "$cxx" "$@"
89}
90
91update_cxxflags() {
92 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
93 # options which some versions of GCC's C++ compiler complain about
94 # because they only make sense for C programs.
95 QEMU_CXXFLAGS=
96 for arg in $QEMU_CFLAGS; do
97 case $arg in
98 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
99 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
100 ;;
101 *)
102 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
103 ;;
104 esac
105 done
106}
107
Juan Quintela52166aa2009-08-03 14:46:03 +0200108compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400109 local_cflags="$1"
110 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200111}
112
113compile_prog() {
114 local_cflags="$1"
115 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100116 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200117}
118
Paolo Bonzini11568d62010-12-23 11:43:58 +0100119# symbolically link $1 to $2. Portable version of "ln -sf".
120symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100121 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800122 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100123 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100124}
125
Loïc Minier0dba6192010-01-28 21:26:51 +0000126# check whether a command is available to this shell (may be either an
127# executable or a builtin)
128has() {
129 type "$1" >/dev/null 2>&1
130}
131
132# search for an executable in PATH
133path_of() {
134 local_command="$1"
135 local_ifs="$IFS"
136 local_dir=""
137
138 # pathname has a dir component?
139 if [ "${local_command#*/}" != "$local_command" ]; then
140 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
141 echo "$local_command"
142 return 0
143 fi
144 fi
145 if [ -z "$local_command" ]; then
146 return 1
147 fi
148
149 IFS=:
150 for local_dir in $PATH; do
151 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
152 echo "$local_dir/$local_command"
153 IFS="${local_ifs:-$(printf ' \t\n')}"
154 return 0
155 fi
156 done
157 # not found
158 IFS="${local_ifs:-$(printf ' \t\n')}"
159 return 1
160}
161
Lluís Vilanova5b808272014-05-27 15:02:14 +0200162have_backend () {
163 echo "$trace_backends" | grep "$1" >/dev/null
164}
165
bellard7d132992003-03-06 23:23:54 +0000166# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100167source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200168cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300169iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000170interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000171static="no"
bellard7d132992003-03-06 23:23:54 +0000172cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000173audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800174block_drv_rw_whitelist=""
175block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000176host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200177libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200178libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200179audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400180audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200181cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500182libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100183debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100184stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000185
Stefan Weilafb63eb2012-09-26 22:04:38 +0200186# Don't accept a target_list environment variable.
187unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100188
189# Default value for a variable defining feature "foo".
190# * foo="no" feature will only be used if --enable-foo arg is given
191# * foo="" feature will be searched for, and if found, will be used
192# unless --disable-foo is given
193# * foo="yes" this value will only be set by --enable-foo flag.
194# feature will searched for,
195# if not found, configure exits with error
196#
197# Always add --enable-foo and --disable-foo command line args.
198# Distributions want to ensure that several features are compiled in, and it
199# is impossible without a --enable-foo that exits if a feature is not found.
200
201bluez=""
202brlapi=""
203curl=""
204curses=""
205docs=""
206fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100207netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200208pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100209sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000210sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530211virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100212vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100213sparse="no"
214uuid=""
215vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100216vnc_sasl=""
217vnc_jpeg=""
218vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100219xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000220xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000221xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000222xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100223linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500224cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100225attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200226libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100227xfs=""
228
Bradd41a75a2011-07-26 23:11:26 -0400229vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000230vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400231kvm="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 Bonzini377529c2010-12-23 11:43:50 +0100272zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200273qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300274trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100275trace_file="trace"
276spice=""
277rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200278smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100279libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200280usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100281opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100282opengl_dmabuf="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800283avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300284zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200285lzo=""
286snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100287bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400288guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400289guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500290guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300291guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400292vss_win32_sdk=""
293win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100294want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100295libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100296libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100297coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200298coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300299seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530300glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530301glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530302glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100303archipelago="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. Berrangeddbb0d02015-07-01 18:10:29 +0100307gnutls=""
308gnutls_hash=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900309gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100310nettle=""
311gcrypt=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100312vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200313virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400314tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100315libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400316vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800317numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800318tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200319jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100320
aliguoriac0df512008-12-29 17:14:15 +0000321# parse CC options first
322for opt do
323 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
324 case "$opt" in
325 --cross-prefix=*) cross_prefix="$optarg"
326 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100327 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000328 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400329 --cxx=*) CXX="$optarg"
330 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100331 --source-path=*) source_path="$optarg"
332 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200333 --cpu=*) cpu="$optarg"
334 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100335 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100336 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200337 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100338 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100339 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200340 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100341 --enable-debug-info) debug_info="yes"
342 ;;
343 --disable-debug-info) debug_info="no"
344 ;;
aliguoriac0df512008-12-29 17:14:15 +0000345 esac
346done
aliguoriac0df512008-12-29 17:14:15 +0000347# OS specific
348# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100349# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000350
Peter Maydelle49d0212012-12-07 15:39:13 +0000351# Preferred compiler:
352# ${CC} (if set)
353# ${cross_prefix}gcc (if cross-prefix specified)
354# system compiler
355if test -z "${CC}${cross_prefix}"; then
356 cc="$host_cc"
357else
358 cc="${CC-${cross_prefix}gcc}"
359fi
360
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400361if test -z "${CXX}${cross_prefix}"; then
362 cxx="c++"
363else
364 cxx="${CXX-${cross_prefix}g++}"
365fi
366
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500367ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000368as="${AS-${cross_prefix}as}"
369cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500370objcopy="${OBJCOPY-${cross_prefix}objcopy}"
371ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200372nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500373strip="${STRIP-${cross_prefix}strip}"
374windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300375pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
376query_pkg_config() {
377 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
378}
379pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500380sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000381sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000382
Peter Maydell45d285a2013-10-21 21:03:06 +0100383# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
384ARFLAGS="${ARFLAGS-rv}"
385
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200386# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000387QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400388QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100389QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200390QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200391QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100392if test "$debug_info" = "yes"; then
393 CFLAGS="-g $CFLAGS"
394 LDFLAGS="-g $LDFLAGS"
395fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200396
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100397# make source path absolute
398source_path=`cd "$source_path"; pwd`
399
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300400# running configure in the source tree?
401# we know that's the case if configure is there.
402if test -f "./configure"; then
403 pwd_is_source_path="y"
404else
405 pwd_is_source_path="n"
406fi
407
aliguoriac0df512008-12-29 17:14:15 +0000408check_define() {
409cat > $TMPC <<EOF
410#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000411#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000412#endif
413int main(void) { return 0; }
414EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200415 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000416}
417
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200418check_include() {
419cat > $TMPC <<EOF
420#include <$1>
421int main(void) { return 0; }
422EOF
423 compile_object
424}
425
John Snow93b25862015-03-25 18:57:37 -0400426write_c_skeleton() {
427 cat > $TMPC <<EOF
428int main(void) { return 0; }
429EOF
430}
431
Peter Maydellbbea4052012-08-14 15:35:34 +0100432if check_define __linux__ ; then
433 targetos="Linux"
434elif check_define _WIN32 ; then
435 targetos='MINGW32'
436elif check_define __OpenBSD__ ; then
437 targetos='OpenBSD'
438elif check_define __sun__ ; then
439 targetos='SunOS'
440elif check_define __HAIKU__ ; then
441 targetos='Haiku'
442else
443 targetos=`uname -s`
444fi
445
446# Some host OSes need non-standard checks for which CPU to use.
447# Note that these checks are broken for cross-compilation: if you're
448# cross-compiling to one of these OSes then you'll need to specify
449# the correct CPU with the --cpu option.
450case $targetos in
451Darwin)
452 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
453 # run 64-bit userspace code.
454 # If the user didn't specify a CPU explicitly and the kernel says this is
455 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
456 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
457 cpu="x86_64"
458 fi
459 ;;
460SunOS)
461 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
462 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
463 cpu="x86_64"
464 fi
465esac
466
Juan Quintela2ff6b912009-08-03 14:45:55 +0200467if test ! -z "$cpu" ; then
468 # command line argument
469 :
470elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000471 cpu="i386"
472elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700473 if check_define __ILP32__ ; then
474 cpu="x32"
475 else
476 cpu="x86_64"
477 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000478elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000479 if check_define __arch64__ ; then
480 cpu="sparc64"
481 else
482 cpu="sparc"
483 fi
malcfdf7ed92009-01-14 18:39:52 +0000484elif check_define _ARCH_PPC ; then
485 if check_define _ARCH_PPC64 ; then
486 cpu="ppc64"
487 else
488 cpu="ppc"
489 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200490elif check_define __mips__ ; then
491 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200492elif check_define __ia64__ ; then
493 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200494elif check_define __s390__ ; then
495 if check_define __s390x__ ; then
496 cpu="s390x"
497 else
498 cpu="s390"
499 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100500elif check_define __arm__ ; then
501 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100502elif check_define __aarch64__ ; then
503 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400504elif check_define __hppa__ ; then
505 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000506else
malcfdf7ed92009-01-14 18:39:52 +0000507 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000508fi
509
Peter Maydell359bc952011-12-24 13:07:25 +0000510ARCH=
511# Normalise host CPU name and set ARCH.
512# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000513case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700514 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200515 cpu="$cpu"
516 ;;
bellard7d132992003-03-06 23:23:54 +0000517 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000518 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000519 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000520 x86_64|amd64)
521 cpu="x86_64"
522 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100523 armv*b|armv*l|arm)
524 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000525 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100526 aarch64)
527 cpu="aarch64"
528 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200529 mips*)
530 cpu="mips"
531 ;;
blueswir131422552007-04-16 18:27:06 +0000532 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000533 cpu="sparc"
534 ;;
bellard7d132992003-03-06 23:23:54 +0000535 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000536 # This will result in either an error or falling back to TCI later
537 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000538 ;;
539esac
Peter Maydell359bc952011-12-24 13:07:25 +0000540if test -z "$ARCH"; then
541 ARCH="$cpu"
542fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200543
bellard7d132992003-03-06 23:23:54 +0000544# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200545
Stacey Sonadfc3e92014-06-08 09:57:22 -0700546# host *BSD for user mode
547HOST_VARIANT_DIR=""
548
bellard7d132992003-03-06 23:23:54 +0000549case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000550CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200551 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200552 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200553 audio_possible_drivers="sdl"
554 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000555;;
bellard67b915a2004-03-31 23:37:16 +0000556MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200557 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200558 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200559 if check_include dsound.h; then
560 audio_drv_list="dsound"
561 else
562 audio_drv_list=""
563 fi
bellard67b915a2004-03-31 23:37:16 +0000564;;
ths5c40d2b2007-06-23 16:03:36 +0000565GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100566 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200567 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200568 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000569;;
bellard7d3505c2004-05-12 19:32:15 +0000570FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200571 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100572 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200573 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200574 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100575 # needed for kinfo_getvmmap(3) in libutil.h
576 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100577 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700578 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000579;;
blueswir1c5e97232009-03-07 20:06:23 +0000580DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200581 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100582 make="${MAKE-gmake}"
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"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700585 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000586;;
bellard7d3505c2004-05-12 19:32:15 +0000587NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200588 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100589 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200590 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200591 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200592 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700593 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000594;;
595OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200596 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100597 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400598 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200599 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700600 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000601;;
bellard83fb7ad2004-07-05 21:25:26 +0000602Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200603 bsd="yes"
604 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800605 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200606 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200607 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200608 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200609 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200610 cocoa="yes"
611 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200612 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200613 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200614 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100615 # Disable attempts to use ObjectiveC features in os/object.h since they
616 # won't work when we're compiling with gcc as a C compiler.
617 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700618 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000619;;
bellardec530c82006-04-25 22:36:06 +0000620SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200621 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100622 make="${MAKE-gmake}"
623 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000624 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400625 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200626 needs_libsunmath="no"
627 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200628 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
629 if test "$solarisrev" -le 9 ; then
630 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
631 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200632 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
633 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
634 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200635 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100636 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
637 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
638 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
639 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200640 fi
thsef18c882007-09-16 22:12:39 +0000641 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 fi
643 if test -f /usr/include/sys/soundcard.h ; then
644 audio_drv_list="oss"
645 fi
646 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000647# needed for CMSG_ macros in sys/socket.h
648 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
649# needed for TIOCWIN* defines in termios.h
650 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200651 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200652 solarisnetlibs="-lsocket -lnsl -lresolv"
653 LIBS="$solarisnetlibs $LIBS"
654 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000655;;
malcb29fe3e2008-11-18 01:42:22 +0000656AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200657 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100658 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000659;;
Andreas Färber179cf402010-09-20 00:50:43 +0200660Haiku)
661 haiku="yes"
662 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
663 LIBS="-lposix_error_mapper -lnetwork $LIBS"
664;;
bellard1d14ffa2005-10-30 18:58:22 +0000665*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200666 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200667 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200668 linux="yes"
669 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200670 kvm="yes"
671 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000672 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000673 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000674;;
bellard7d132992003-03-06 23:23:54 +0000675esac
676
bellard7d3505c2004-05-12 19:32:15 +0000677if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000678 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200679 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000680 fi
bellard7d3505c2004-05-12 19:32:15 +0000681fi
682
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100683: ${make=${MAKE-make}}
684: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100685: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400686: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100687
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100688# Default objcc to clang if available, otherwise use CC
689if has clang; then
690 objcc=clang
691else
692 objcc="$cc"
693fi
694
Juan Quintela3457a3f2009-08-03 14:46:07 +0200695if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200696 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800697 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200698 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100699 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
700 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100701 # MinGW needs -mthreads for TLS and macro _MT.
702 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100703 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400704 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100705 if compile_prog "" "-liberty" ; then
706 LIBS="-liberty $LIBS"
707 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200708 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200709 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300710 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300711 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200712 bindir="\${prefix}"
713 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200714 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200715 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200716 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200717fi
718
Anthony Liguori487fefd2009-06-11 13:28:25 -0500719werror=""
bellard85aa5182007-11-11 20:17:03 +0000720
bellard7d132992003-03-06 23:23:54 +0000721for opt do
pbrooka46e4032006-04-29 23:05:22 +0000722 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000723 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000724 --help|-h) show_help=yes
725 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400726 --version|-V) exec cat $source_path/VERSION
727 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000728 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000729 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000730 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000731 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100732 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000733 ;;
aliguoriac0df512008-12-29 17:14:15 +0000734 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000735 ;;
aliguoriac0df512008-12-29 17:14:15 +0000736 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000737 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000738 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000739 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400740 --cxx=*)
741 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200742 --iasl=*) iasl="$optarg"
743 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100744 --objcc=*) objcc="$optarg"
745 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000746 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000747 ;;
pbrook6a882642006-04-17 13:57:12 +0000748 --install=*) install="$optarg"
749 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000750 --python=*) python="$optarg"
751 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000752 --gcov=*) gcov_tool="$optarg"
753 ;;
Brade2d88302011-09-02 16:53:28 -0400754 --smbd=*) smbd="$optarg"
755 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200756 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000757 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200758 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000759 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100760 --enable-debug-info)
761 ;;
762 --disable-debug-info)
763 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800764 --enable-modules)
765 modules="yes"
766 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000767 --disable-modules)
768 modules="no"
769 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200770 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000771 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000772 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000773 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200774 --enable-trace-backends=*) trace_backends="$optarg"
775 ;;
776 # XXX: backwards compatibility
777 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100778 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100779 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100780 ;;
bellard7d132992003-03-06 23:23:54 +0000781 --enable-gprof) gprof="yes"
782 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000783 --enable-gcov) gcov="yes"
784 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100785 --static)
786 static="yes"
787 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300788 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000789 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200790 --mandir=*) mandir="$optarg"
791 ;;
792 --bindir=*) bindir="$optarg"
793 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300794 --libdir=*) libdir="$optarg"
795 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400796 --libexecdir=*) libexecdir="$optarg"
797 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200798 --includedir=*) includedir="$optarg"
799 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300800 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200801 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300802 --with-confsuffix=*) confsuffix="$optarg"
803 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300804 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200805 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100806 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600807 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300808 --localstatedir=*) local_statedir="$optarg"
809 ;;
810 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400811 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
812 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
813 # These switches are silently ignored, for compatibility with
814 # autoconf-generated configure scripts. This allows QEMU's
815 # configure to be used by RPM and similar macros that set
816 # lots of directory switches by default.
817 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200818 --with-system-pixman) pixman="system"
819 ;;
820 --without-system-pixman) pixman="internal"
821 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100822 --without-pixman) pixman="none"
823 ;;
bellard97a847b2003-08-10 21:36:04 +0000824 --disable-sdl) sdl="no"
825 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200826 --enable-sdl) sdl="yes"
827 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000828 --with-sdlabi=*) sdlabi="$optarg"
829 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200830 --disable-qom-cast-debug) qom_cast_debug="no"
831 ;;
832 --enable-qom-cast-debug) qom_cast_debug="yes"
833 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530834 --disable-virtfs) virtfs="no"
835 ;;
836 --enable-virtfs) virtfs="yes"
837 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100838 --disable-vnc) vnc="no"
839 ;;
840 --enable-vnc) vnc="yes"
841 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000842 --oss-lib=*) oss_lib="$optarg"
843 ;;
malc0c58ac12008-06-25 21:04:05 +0000844 --audio-drv-list=*) audio_drv_list="$optarg"
845 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800846 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
847 ;;
848 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100849 ;;
aurel32f8393942009-04-13 18:45:38 +0000850 --enable-debug-tcg) debug_tcg="yes"
851 ;;
852 --disable-debug-tcg) debug_tcg="no"
853 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100854 --enable-debug)
855 # Enable debugging options that aren't excessively noisy
856 debug_tcg="yes"
857 debug="yes"
858 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500859 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100860 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000861 --enable-sparse) sparse="yes"
862 ;;
863 --disable-sparse) sparse="no"
864 ;;
aliguori1625af82009-04-05 17:41:02 +0000865 --disable-strip) strip_opt="no"
866 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000867 --disable-vnc-sasl) vnc_sasl="no"
868 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200869 --enable-vnc-sasl) vnc_sasl="yes"
870 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200871 --disable-vnc-jpeg) vnc_jpeg="no"
872 ;;
873 --enable-vnc-jpeg) vnc_jpeg="yes"
874 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200875 --disable-vnc-png) vnc_png="no"
876 ;;
877 --enable-vnc-png) vnc_png="yes"
878 ;;
bellard443f1372004-06-04 11:13:20 +0000879 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000880 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200881 --disable-uuid) uuid="no"
882 ;;
883 --enable-uuid) uuid="yes"
884 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000885 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000886 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200887 --enable-vde) vde="yes"
888 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100889 --disable-netmap) netmap="no"
890 ;;
891 --enable-netmap) netmap="yes"
892 ;;
aliguorie37630c2009-04-22 15:19:10 +0000893 --disable-xen) xen="no"
894 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200895 --enable-xen) xen="yes"
896 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000897 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
898 ;;
899 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
900 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +0000901 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
902 ;;
903 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
904 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000905 --disable-brlapi) brlapi="no"
906 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200907 --enable-brlapi) brlapi="yes"
908 ;;
balrogfb599c92008-09-28 23:49:55 +0000909 --disable-bluez) bluez="no"
910 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200911 --enable-bluez) bluez="yes"
912 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000913 --disable-kvm) kvm="no"
914 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200915 --enable-kvm) kvm="yes"
916 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200917 --disable-tcg-interpreter) tcg_interpreter="no"
918 ;;
919 --enable-tcg-interpreter) tcg_interpreter="yes"
920 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500921 --disable-cap-ng) cap_ng="no"
922 ;;
923 --enable-cap-ng) cap_ng="yes"
924 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100925 --disable-spice) spice="no"
926 ;;
927 --enable-spice) spice="yes"
928 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100929 --disable-libiscsi) libiscsi="no"
930 ;;
931 --enable-libiscsi) libiscsi="yes"
932 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100933 --disable-libnfs) libnfs="no"
934 ;;
935 --enable-libnfs) libnfs="yes"
936 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000937 --enable-profiler) profiler="yes"
938 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400939 --disable-cocoa) cocoa="no"
940 ;;
malcc2de5c92008-06-28 19:13:06 +0000941 --enable-cocoa)
942 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000943 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000944 ;;
pbrookcad25d62006-03-19 16:31:11 +0000945 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000946 ;;
pbrookcad25d62006-03-19 16:31:11 +0000947 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000948 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000949 --disable-user)
950 linux_user="no" ;
951 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000952 ;;
953 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000954 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000955 ;;
ths831b7822007-01-18 20:06:33 +0000956 --enable-linux-user) linux_user="yes"
957 ;;
blueswir184778502008-10-26 20:33:16 +0000958 --disable-bsd-user) bsd_user="no"
959 ;;
960 --enable-bsd-user) bsd_user="yes"
961 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200962 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300963 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200964 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300965 ;;
bellard85aa5182007-11-11 20:17:03 +0000966 --enable-werror) werror="yes"
967 ;;
968 --disable-werror) werror="no"
969 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100970 --enable-stack-protector) stack_protector="yes"
971 ;;
972 --disable-stack-protector) stack_protector="no"
973 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000974 --disable-curses) curses="no"
975 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200976 --enable-curses) curses="yes"
977 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200978 --disable-curl) curl="no"
979 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200980 --enable-curl) curl="yes"
981 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200982 --disable-fdt) fdt="no"
983 ;;
984 --enable-fdt) fdt="yes"
985 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +0200986 --disable-linux-aio) linux_aio="no"
987 ;;
988 --enable-linux-aio) linux_aio="yes"
989 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -0700990 --disable-attr) attr="no"
991 ;;
992 --enable-attr) attr="yes"
993 ;;
ths77755342008-11-27 15:45:16 +0000994 --disable-blobs) blobs="no"
995 ;;
pbrook4a19f1e2009-04-07 23:17:49 +0000996 --with-pkgversion=*) pkgversion=" ($optarg)"
997 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +0100998 --with-coroutine=*) coroutine="$optarg"
999 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001000 --disable-coroutine-pool) coroutine_pool="no"
1001 ;;
1002 --enable-coroutine-pool) coroutine_pool="yes"
1003 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001004 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001005 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001006 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001007 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001008 --disable-vhost-net) vhost_net="no"
1009 ;;
1010 --enable-vhost-net) vhost_net="yes"
1011 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001012 --disable-vhost-scsi) vhost_scsi="no"
1013 ;;
1014 --enable-vhost-scsi) vhost_scsi="yes"
1015 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001016 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001017 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001018 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001019 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001020 --disable-rbd) rbd="no"
1021 ;;
1022 --enable-rbd) rbd="yes"
1023 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001024 --disable-xfsctl) xfs="no"
1025 ;;
1026 --enable-xfsctl) xfs="yes"
1027 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001028 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001029 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001030 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001031 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001032 --disable-libusb) libusb="no"
1033 ;;
1034 --enable-libusb) libusb="yes"
1035 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001036 --disable-usb-redir) usb_redir="no"
1037 ;;
1038 --enable-usb-redir) usb_redir="yes"
1039 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001040 --disable-zlib-test) zlib="no"
1041 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001042 --disable-lzo) lzo="no"
1043 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001044 --enable-lzo) lzo="yes"
1045 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001046 --disable-snappy) snappy="no"
1047 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001048 --enable-snappy) snappy="yes"
1049 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001050 --disable-bzip2) bzip2="no"
1051 ;;
1052 --enable-bzip2) bzip2="yes"
1053 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001054 --enable-guest-agent) guest_agent="yes"
1055 ;;
1056 --disable-guest-agent) guest_agent="no"
1057 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001058 --enable-guest-agent-msi) guest_agent_msi="yes"
1059 ;;
1060 --disable-guest-agent-msi) guest_agent_msi="no"
1061 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001062 --with-vss-sdk) vss_win32_sdk=""
1063 ;;
1064 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1065 ;;
1066 --without-vss-sdk) vss_win32_sdk="no"
1067 ;;
1068 --with-win-sdk) win_sdk=""
1069 ;;
1070 --with-win-sdk=*) win_sdk="$optarg"
1071 ;;
1072 --without-win-sdk) win_sdk="no"
1073 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001074 --enable-tools) want_tools="yes"
1075 ;;
1076 --disable-tools) want_tools="no"
1077 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001078 --enable-seccomp) seccomp="yes"
1079 ;;
1080 --disable-seccomp) seccomp="no"
1081 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301082 --disable-glusterfs) glusterfs="no"
1083 ;;
1084 --enable-glusterfs) glusterfs="yes"
1085 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001086 --disable-archipelago) archipelago="no"
1087 ;;
1088 --enable-archipelago) archipelago="yes"
1089 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001090 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1091 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001092 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001093 --disable-gtk) gtk="no"
1094 ;;
1095 --enable-gtk) gtk="yes"
1096 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001097 --disable-gnutls) gnutls="no"
1098 ;;
1099 --enable-gnutls) gnutls="yes"
1100 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001101 --disable-nettle) nettle="no"
1102 ;;
1103 --enable-nettle) nettle="yes"
1104 ;;
1105 --disable-gcrypt) gcrypt="no"
1106 ;;
1107 --enable-gcrypt) gcrypt="yes"
1108 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001109 --enable-rdma) rdma="yes"
1110 ;;
1111 --disable-rdma) rdma="no"
1112 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001113 --with-gtkabi=*) gtkabi="$optarg"
1114 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001115 --disable-vte) vte="no"
1116 ;;
1117 --enable-vte) vte="yes"
1118 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001119 --disable-virglrenderer) virglrenderer="no"
1120 ;;
1121 --enable-virglrenderer) virglrenderer="yes"
1122 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001123 --disable-tpm) tpm="no"
1124 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001125 --enable-tpm) tpm="yes"
1126 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001127 --disable-libssh2) libssh2="no"
1128 ;;
1129 --enable-libssh2) libssh2="yes"
1130 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001131 --enable-vhdx) vhdx="yes"
1132 ;;
1133 --disable-vhdx) vhdx="no"
1134 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001135 --disable-numa) numa="no"
1136 ;;
1137 --enable-numa) numa="yes"
1138 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001139 --disable-tcmalloc) tcmalloc="no"
1140 ;;
1141 --enable-tcmalloc) tcmalloc="yes"
1142 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001143 --disable-jemalloc) jemalloc="no"
1144 ;;
1145 --enable-jemalloc) jemalloc="yes"
1146 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001147 *)
1148 echo "ERROR: unknown option $opt"
1149 echo "Try '$0 --help' for more information"
1150 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001151 ;;
bellard7d132992003-03-06 23:23:54 +00001152 esac
1153done
1154
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001155if ! has $python; then
1156 error_exit "Python not found. Use --python=/path/to/python"
1157fi
1158
1159# Note that if the Python conditional here evaluates True we will exit
1160# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001161if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1162 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001163 "Note that Python 3 or later is not yet supported." \
1164 "Use --python=/path/to/python to specify a supported Python."
1165fi
1166
Markus Armbrusterfec21032015-09-04 21:53:03 +02001167# Suppress writing compiled files
1168python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001169
bellard40293e52008-01-31 11:32:10 +00001170case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001171 ppc)
1172 CPU_CFLAGS="-m32"
1173 LDFLAGS="-m32 $LDFLAGS"
1174 ;;
1175 ppc64)
1176 CPU_CFLAGS="-m64"
1177 LDFLAGS="-m64 $LDFLAGS"
1178 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001179 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001180 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001181 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001182 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001183 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001184 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001185 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001186 ;;
ths76d83bd2007-11-18 21:22:10 +00001187 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001188 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001189 LDFLAGS="-m31 $LDFLAGS"
1190 ;;
1191 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001192 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001193 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001194 ;;
bellard40293e52008-01-31 11:32:10 +00001195 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001196 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001197 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001198 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001199 ;;
1200 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001201 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001202 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001203 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001204 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001205 x32)
1206 CPU_CFLAGS="-mx32"
1207 LDFLAGS="-mx32 $LDFLAGS"
1208 cc_i386='$(CC) -m32'
1209 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001210 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001211esac
1212
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001213QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1214EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1215
Peter Maydell60e0df22011-05-03 14:50:13 +01001216default_target_list=""
1217
Peter Maydell6e92f822013-05-20 16:16:15 +01001218mak_wilds=""
1219
1220if [ "$softmmu" = "yes" ]; then
1221 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001222fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001223if [ "$linux_user" = "yes" ]; then
1224 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001225fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001226if [ "$bsd_user" = "yes" ]; then
1227 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001228fi
1229
Peter Maydell6e92f822013-05-20 16:16:15 +01001230for config in $mak_wilds; do
1231 default_target_list="${default_target_list} $(basename "$config" .mak)"
1232done
1233
pbrookaf5db582006-04-08 14:26:41 +00001234if test x"$show_help" = x"yes" ; then
1235cat << EOF
1236
1237Usage: configure [options]
1238Options: [defaults in brackets after descriptions]
1239
Stefan Weil08fb77e2013-12-18 22:09:39 +01001240Standard options:
1241 --help print this message
1242 --prefix=PREFIX install in PREFIX [$prefix]
1243 --interp-prefix=PREFIX where to find shared libraries, etc.
1244 use %M for cpu name [$interp_prefix]
1245 --target-list=LIST set target list (default: build everything)
1246$(echo Available targets: $default_target_list | \
1247 fold -s -w 53 | sed -e 's/^/ /')
1248
1249Advanced options (experts only):
1250 --source-path=PATH path of source code [$source_path]
1251 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1252 --cc=CC use C compiler CC [$cc]
1253 --iasl=IASL use ACPI compiler IASL [$iasl]
1254 --host-cc=CC use C compiler CC [$host_cc] for code run at
1255 build time
1256 --cxx=CXX use C++ compiler CXX [$cxx]
1257 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1258 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1259 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1260 --make=MAKE use specified make [$make]
1261 --install=INSTALL use specified install [$install]
1262 --python=PYTHON use specified python [$python]
1263 --smbd=SMBD use specified smbd [$smbd]
1264 --static enable static build [$static]
1265 --mandir=PATH install man pages in PATH
1266 --datadir=PATH install firmware in PATH$confsuffix
1267 --docdir=PATH install documentation in PATH$confsuffix
1268 --bindir=PATH install binaries in PATH
1269 --libdir=PATH install libraries in PATH
1270 --sysconfdir=PATH install config in PATH$confsuffix
1271 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001272 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001273 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001274 --disable-strip disable stripping binaries
1275 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001276 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001277 --audio-drv-list=LIST set audio drivers list:
1278 Available drivers: $audio_possible_drivers
1279 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1280 --block-drv-rw-whitelist=L
1281 set block driver read-write whitelist
1282 (affects only QEMU, not qemu-img)
1283 --block-drv-ro-whitelist=L
1284 set block driver read-only whitelist
1285 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001286 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001287 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1288 --with-trace-file=NAME Full PATH,NAME of file to store traces
1289 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001290 --disable-slirp disable SLIRP userspace network connectivity
1291 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1292 --oss-lib path to OSS library
1293 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001294 --with-coroutine=BACKEND coroutine backend. Supported options:
1295 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001296 --enable-gcov enable test coverage analysis with gcov
1297 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001298 --disable-blobs disable installing provided firmware blobs
1299 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1300 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1301
1302Optional features, enabled with --enable-FEATURE and
1303disabled with --disable-FEATURE, default is enabled if available:
1304
1305 system all system emulation targets
1306 user supported user emulation targets
1307 linux-user all linux usermode emulation targets
1308 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001309 docs build documentation
1310 guest-agent build the QEMU Guest Agent
1311 guest-agent-msi build guest agent Windows MSI installation package
1312 pie Position Independent Executables
1313 modules modules support
1314 debug-tcg TCG debugging (default is disabled)
1315 debug-info debugging information
1316 sparse sparse checker
1317
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001318 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001319 nettle nettle cryptography support
1320 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001321 sdl SDL UI
1322 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1323 gtk gtk UI
1324 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1325 vte vte support for the gtk UI
1326 curses curses UI
1327 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001328 vnc-sasl SASL encryption for VNC server
1329 vnc-jpeg JPEG lossy compression for VNC server
1330 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001331 cocoa Cocoa UI (Mac OS X only)
1332 virtfs VirtFS
1333 xen xen backend driver support
1334 xen-pci-passthrough
1335 brlapi BrlAPI (Braile)
1336 curl curl connectivity
1337 fdt fdt device tree
1338 bluez bluez stack connectivity
1339 kvm KVM acceleration support
1340 rdma RDMA-based migration support
1341 uuid uuid support
1342 vde support for vde network
1343 netmap support for netmap network
1344 linux-aio Linux AIO support
1345 cap-ng libcap-ng support
1346 attr attr and xattr support
1347 vhost-net vhost-net acceleration support
1348 spice spice
1349 rbd rados block device (rbd)
1350 libiscsi iscsi support
1351 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001352 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001353 libusb libusb (for usb passthrough)
1354 usb-redir usb network redirection support
1355 lzo support of lzo compression library
1356 snappy support of snappy compression library
1357 bzip2 support of bzip2 compression library
1358 (for reading bzip2-compressed dmg images)
1359 seccomp seccomp support
1360 coroutine-pool coroutine freelist (better performance)
1361 glusterfs GlusterFS backend
1362 archipelago Archipelago backend
1363 tpm TPM support
1364 libssh2 ssh block device support
1365 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001366 numa libnuma support
1367 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001368 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001369
1370NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001371EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001372exit 0
pbrookaf5db582006-04-08 14:26:41 +00001373fi
1374
Peter Maydell359bc952011-12-24 13:07:25 +00001375# Now we have handled --enable-tcg-interpreter and know we're not just
1376# printing the help message, bail out if the host CPU isn't supported.
1377if test "$ARCH" = "unknown"; then
1378 if test "$tcg_interpreter" = "yes" ; then
1379 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1380 ARCH=tci
1381 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001382 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001383 fi
1384fi
1385
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001386# Consult white-list to determine whether to enable werror
1387# by default. Only enable by default for git builds
1388z_version=`cut -f3 -d. $source_path/VERSION`
1389
1390if test -z "$werror" ; then
1391 if test -d "$source_path/.git" -a \
1392 "$linux" = "yes" ; then
1393 werror="yes"
1394 else
1395 werror="no"
1396 fi
1397fi
1398
Paolo Bonzini8d050952010-12-23 11:43:52 +01001399# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001400write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001401if compile_object ; then
1402 : C compiler works ok
1403else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001404 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001405fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001406if ! compile_prog ; then
1407 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1408fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001409
Peter Maydell98b21dc2014-02-20 15:10:16 +00001410# Check that the C++ compiler exists and works with the C compiler
1411if has $cxx; then
1412 cat > $TMPC <<EOF
1413int c_function(void);
1414int main(void) { return c_function(); }
1415EOF
1416
1417 compile_object
1418
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001419 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001420extern "C" {
1421 int c_function(void);
1422}
1423int c_function(void) { return 42; }
1424EOF
1425
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001426 update_cxxflags
1427
1428 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001429 # C++ compiler $cxx works ok with C compiler $cc
1430 :
1431 else
1432 echo "C++ compiler $cxx does not work with C compiler $cc"
1433 echo "Disabling C++ specific optional code"
1434 cxx=
1435 fi
1436else
1437 echo "No C++ compiler available; disabling C++ specific optional code"
1438 cxx=
1439fi
1440
Paolo Bonzini8d050952010-12-23 11:43:52 +01001441gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1442gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1443gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001444gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001445gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001446gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001447# Note that we do not add -Werror to gcc_flags here, because that would
1448# enable it for all configure tests. If a configure test failed due
1449# to -Werror this would just silently disable some features,
1450# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001451
1452cc_has_warning_flag() {
1453 write_c_skeleton;
1454
Peter Maydella1d29d62012-10-27 22:19:07 +01001455 # Use the positive sense of the flag when testing for -Wno-wombat
1456 # support (gcc will happily accept the -Wno- form of unknown
1457 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001458 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1459 compile_prog "-Werror $optflag" ""
1460}
1461
1462for flag in $gcc_flags; do
1463 if cc_has_warning_flag $flag ; then
1464 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001465 fi
1466done
1467
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001468if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001469 cat > $TMPC << EOF
1470int main(int argc, char *argv[])
1471{
1472 char arr[64], *p = arr, *c = argv[0];
1473 while (*c) {
1474 *p++ = *c++;
1475 }
1476 return 0;
1477}
1478EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001479 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001480 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001481 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001482 # We need to check both a compile and a link, since some compiler
1483 # setups fail only on a .c->.o compile and some only at link time
1484 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1485 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001486 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001487 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001488 break
1489 fi
1490 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001491 if test "$stack_protector" = yes; then
1492 if test $sp_on = 0; then
1493 error_exit "Stack protector not supported"
1494 fi
1495 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001496fi
1497
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001498# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1499# large functions that use global variables. The bug is in all releases of
1500# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1501# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1502cat > $TMPC << EOF
1503#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1504int main(void) { return 0; }
1505#else
1506#error No bug in this compiler.
1507#endif
1508EOF
1509if compile_prog "-Werror -fno-gcse" "" ; then
1510 TRANSLATE_OPT_CFLAGS=-fno-gcse
1511fi
1512
Avi Kivity40d64442011-11-15 20:12:17 +02001513if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001514 if test "$modules" = "yes" ; then
1515 error_exit "static and modules are mutually incompatible"
1516 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001517 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001518 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001519 else
1520 pie="no"
1521 fi
1522fi
1523
Emilio G. Cota768b7852015-04-29 13:09:02 +02001524# Unconditional check for compiler __thread support
1525 cat > $TMPC << EOF
1526static __thread int tls_var;
1527int main(void) { return tls_var; }
1528EOF
1529
1530if ! compile_prog "-Werror" "" ; then
1531 error_exit "Your compiler does not support the __thread specifier for " \
1532 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1533fi
1534
Avi Kivity40d64442011-11-15 20:12:17 +02001535if test "$pie" = ""; then
1536 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001537 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001538 ;;
1539 *)
1540 pie="no"
1541 ;;
1542 esac
1543fi
1544
1545if test "$pie" != "no" ; then
1546 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001547
1548#ifdef __linux__
1549# define THREAD __thread
1550#else
1551# define THREAD
1552#endif
1553
1554static THREAD int tls_var;
1555
1556int main(void) { return tls_var; }
1557
Avi Kivity40d64442011-11-15 20:12:17 +02001558EOF
1559 if compile_prog "-fPIE -DPIE" "-pie"; then
1560 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1561 LDFLAGS="-pie $LDFLAGS"
1562 pie="yes"
1563 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1564 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1565 fi
1566 else
1567 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001568 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001569 else
1570 echo "Disabling PIE due to missing toolchain support"
1571 pie="no"
1572 fi
1573 fi
Brad46eef332013-12-10 19:49:08 -05001574
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001575 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001576 CFLAGS_NOPIE="-fno-pie"
1577 LDFLAGS_NOPIE="-nopie"
1578 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001579fi
1580
Paolo Bonzini09dada42013-04-17 16:26:47 +02001581##########################################
1582# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1583# use i686 as default anyway, but for those that don't, an explicit
1584# specification is necessary
1585
1586if test "$cpu" = "i386"; then
1587 cat > $TMPC << EOF
1588static int sfaa(int *ptr)
1589{
1590 return __sync_fetch_and_and(ptr, 0);
1591}
1592
1593int main(void)
1594{
1595 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001596 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001597 sfaa(&val);
1598 return val;
1599}
1600EOF
1601 if ! compile_prog "" "" ; then
1602 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1603 fi
1604fi
1605
1606#########################################
bellardec530c82006-04-25 22:36:06 +00001607# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001608
bellardec530c82006-04-25 22:36:06 +00001609if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001610 if has $install; then
1611 :
1612 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001613 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1614 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1615 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001616 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001617 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001618 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1619 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1620 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001621 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001622 if has ar; then
1623 :
1624 else
bellardec530c82006-04-25 22:36:06 +00001625 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001626 error_exit "No path includes ar" \
1627 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001628 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001629 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001630 fi
ths5fafdf22007-09-16 21:08:06 +00001631fi
bellardec530c82006-04-25 22:36:06 +00001632
Stefan Weilafb63eb2012-09-26 22:04:38 +02001633if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001634 target_list="$default_target_list"
1635else
1636 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001637fi
Peter Maydell25b48332013-05-20 16:16:16 +01001638
1639# Check that we recognised the target name; this allows a more
1640# friendly error message than if we let it fall through.
1641for target in $target_list; do
1642 case " $default_target_list " in
1643 *" $target "*)
1644 ;;
1645 *)
1646 error_exit "Unknown target name '$target'"
1647 ;;
1648 esac
1649done
1650
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001651# see if system emulation was really requested
1652case " $target_list " in
1653 *"-softmmu "*) softmmu=yes
1654 ;;
1655 *) softmmu=no
1656 ;;
1657esac
bellard5327cf42005-01-10 23:18:50 +00001658
Juan Quintela249247c2009-08-12 18:20:25 +02001659feature_not_found() {
1660 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001661 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001662
Peter Maydell76ad07a2013-04-08 12:11:26 +01001663 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001664 "configure was not able to find it." \
1665 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001666}
1667
bellard7d132992003-03-06 23:23:54 +00001668# ---
1669# big/little endian test
1670cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001671short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1672short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1673extern int foo(short *, short *);
1674int main(int argc, char *argv[]) {
1675 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001676}
1677EOF
1678
Mike Frysinger61cc9192013-06-30 23:30:18 -04001679if compile_object ; then
1680 if grep -q BiGeNdIaN $TMPO ; then
1681 bigendian="yes"
1682 elif grep -q LiTtLeEnDiAn $TMPO ; then
1683 bigendian="no"
1684 else
1685 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001686 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001687else
1688 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001689fi
1690
Juan Quintelab0a47e72009-08-12 18:29:49 +02001691##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001692# cocoa implies not SDL or GTK
1693# (the cocoa UI code currently assumes it is always the active UI
1694# and doesn't interact well with other UI frontend code)
1695if test "$cocoa" = "yes"; then
1696 if test "$sdl" = "yes"; then
1697 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1698 fi
1699 if test "$gtk" = "yes"; then
1700 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1701 fi
1702 gtk=no
1703 sdl=no
1704fi
1705
1706##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001707# L2TPV3 probe
1708
1709cat > $TMPC <<EOF
1710#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001711#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001712int main(void) { return sizeof(struct mmsghdr); }
1713EOF
1714if compile_prog "" "" ; then
1715 l2tpv3=yes
1716else
1717 l2tpv3=no
1718fi
1719
1720##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001721# MinGW / Mingw-w64 localtime_r/gmtime_r check
1722
1723if test "$mingw32" = "yes"; then
1724 # Some versions of MinGW / Mingw-w64 lack localtime_r
1725 # and gmtime_r entirely.
1726 #
1727 # Some versions of Mingw-w64 define a macro for
1728 # localtime_r/gmtime_r.
1729 #
1730 # Some versions of Mingw-w64 will define functions
1731 # for localtime_r/gmtime_r, but only if you have
1732 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1733 # though, unistd.h and pthread.h both define
1734 # that for you.
1735 #
1736 # So this #undef localtime_r and #include <unistd.h>
1737 # are not in fact redundant.
1738cat > $TMPC << EOF
1739#include <unistd.h>
1740#include <time.h>
1741#undef localtime_r
1742int main(void) { localtime_r(NULL, NULL); return 0; }
1743EOF
1744 if compile_prog "" "" ; then
1745 localtime_r="yes"
1746 else
1747 localtime_r="no"
1748 fi
1749fi
1750
1751##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001752# pkg-config probe
1753
1754if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001755 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001756fi
1757
1758##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001759# NPTL probe
1760
Peter Maydell24cb36a2013-07-16 18:45:00 +01001761if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001762 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001763#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001764#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001765int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001766#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1767#error bork
1768#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001769 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001770}
1771EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001772 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001773 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001774 fi
pbrookbd0c5662008-05-29 14:34:11 +00001775fi
1776
bellard11d9f692004-04-02 20:55:59 +00001777##########################################
Liang Li99f2dbd2016-03-08 13:53:16 +08001778# avx2 optimization requirement check
1779
1780cat > $TMPC << EOF
1781static void bar(void) {}
1782static void *bar_ifunc(void) {return (void*) bar;}
1783static void foo(void) __attribute__((ifunc("bar_ifunc")));
1784int main(void) { foo(); return 0; }
1785EOF
1786if compile_prog "-mavx2" "" ; then
1787 if readelf --syms $TMPE |grep "IFUNC.*foo" >/dev/null 2>&1; then
1788 avx2_opt="yes"
1789 fi
1790fi
1791
1792#########################################
balrogac629222008-10-11 09:56:04 +00001793# zlib check
1794
Alon Levy1ece9902011-07-26 12:30:40 +03001795if test "$zlib" != "no" ; then
1796 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001797#include <zlib.h>
1798int main(void) { zlibVersion(); return 0; }
1799EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001800 if compile_prog "" "-lz" ; then
1801 :
1802 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001803 error_exit "zlib check failed" \
1804 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001805 fi
balrogac629222008-10-11 09:56:04 +00001806fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001807LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001808
1809##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001810# lzo check
1811
1812if test "$lzo" != "no" ; then
1813 cat > $TMPC << EOF
1814#include <lzo/lzo1x.h>
1815int main(void) { lzo_version(); return 0; }
1816EOF
1817 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001818 libs_softmmu="$libs_softmmu -llzo2"
1819 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001820 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001821 if test "$lzo" = "yes"; then
1822 feature_not_found "liblzo2" "Install liblzo2 devel"
1823 fi
1824 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001825 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001826fi
1827
1828##########################################
1829# snappy check
1830
1831if test "$snappy" != "no" ; then
1832 cat > $TMPC << EOF
1833#include <snappy-c.h>
1834int main(void) { snappy_max_compressed_length(4096); return 0; }
1835EOF
1836 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001837 libs_softmmu="$libs_softmmu -lsnappy"
1838 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001839 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001840 if test "$snappy" = "yes"; then
1841 feature_not_found "libsnappy" "Install libsnappy devel"
1842 fi
1843 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001844 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001845fi
1846
1847##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001848# bzip2 check
1849
1850if test "$bzip2" != "no" ; then
1851 cat > $TMPC << EOF
1852#include <bzlib.h>
1853int main(void) { BZ2_bzlibVersion(); return 0; }
1854EOF
1855 if compile_prog "" "-lbz2" ; then
1856 bzip2="yes"
1857 else
1858 if test "$bzip2" = "yes"; then
1859 feature_not_found "libbzip2" "Install libbzip2 devel"
1860 fi
1861 bzip2="no"
1862 fi
1863fi
1864
1865##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001866# libseccomp check
1867
1868if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04001869 case "$cpu" in
1870 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06001871 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04001872 ;;
1873 arm|aarch64)
1874 libseccomp_minver="2.2.3"
1875 ;;
1876 *)
1877 libseccomp_minver=""
1878 ;;
1879 esac
1880
1881 if test "$libseccomp_minver" != "" &&
1882 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001883 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001884 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Andrew Jones693e5912015-09-30 11:59:18 -04001885 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03001886 else
Andrew Jones693e5912015-09-30 11:59:18 -04001887 if test "$seccomp" = "yes" ; then
1888 if test "$libseccomp_minver" != "" ; then
1889 feature_not_found "libseccomp" \
1890 "Install libseccomp devel >= $libseccomp_minver"
1891 else
1892 feature_not_found "libseccomp" \
1893 "libseccomp is not supported for host cpu $cpu"
1894 fi
1895 fi
1896 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001897 fi
1898fi
1899##########################################
aliguorie37630c2009-04-22 15:19:10 +00001900# xen probe
1901
Juan Quintelafc321b42009-08-12 18:29:55 +02001902if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001903 xen_libs="-lxenstore -lxenctrl -lxenguest"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001904 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001905
Stefan Weil50ced5b2011-12-17 09:27:39 +01001906 # First we test whether Xen headers and libraries are available.
1907 # If no, we are done and there is no Xen support.
1908 # If yes, more tests are run to detect the Xen version.
1909
1910 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001911 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001912#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001913int main(void) {
1914 return 0;
1915}
1916EOF
1917 if ! compile_prog "" "$xen_libs" ; then
1918 # Xen not found
1919 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001920 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001921 fi
1922 xen=no
1923
1924 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001925 elif
1926 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001927/*
1928 * If we have stable libs the we don't want the libxc compat
1929 * layers, regardless of what CFLAGS we may have been given.
1930 */
1931#undef XC_WANT_COMPAT_EVTCHN_API
1932#undef XC_WANT_COMPAT_GNTTAB_API
1933#undef XC_WANT_COMPAT_MAP_FOREIGN_API
1934#include <xenctrl.h>
1935#include <xenstore.h>
1936#include <xenevtchn.h>
1937#include <xengnttab.h>
1938#include <xenforeignmemory.h>
1939#include <stdint.h>
1940#include <xen/hvm/hvm_info_table.h>
1941#if !defined(HVM_MAX_VCPUS)
1942# error HVM_MAX_VCPUS not defined
1943#endif
1944int main(void) {
1945 xc_interface *xc = NULL;
1946 xenforeignmemory_handle *xfmem;
1947 xenevtchn_handle *xe;
1948 xengnttab_handle *xg;
1949 xen_domain_handle_t handle;
1950
1951 xs_daemon_open();
1952
1953 xc = xc_interface_open(0, 0, 0);
1954 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1955 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1956 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1957 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1958 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1959
1960 xfmem = xenforeignmemory_open(0, 0);
1961 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
1962
1963 xe = xenevtchn_open(0, 0);
1964 xenevtchn_fd(xe);
1965
1966 xg = xengnttab_open(0, 0);
1967 xengnttab_map_grant_ref(xg, 0, 0, 0);
1968
1969 return 0;
1970}
1971EOF
1972 compile_prog "" "$xen_libs $xen_stable_libs"
1973 then
1974 xen_ctrl_version=471
1975 xen=yes
1976 elif
1977 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001978#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00001979#include <stdint.h>
1980int main(void) {
1981 xc_interface *xc = NULL;
1982 xen_domain_handle_t handle;
1983 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1984 return 0;
1985}
1986EOF
1987 compile_prog "" "$xen_libs"
1988 then
1989 xen_ctrl_version=470
1990 xen=yes
1991
1992 # Xen 4.6
1993 elif
1994 cat > $TMPC <<EOF &&
1995#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001996#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001997#include <stdint.h>
1998#include <xen/hvm/hvm_info_table.h>
1999#if !defined(HVM_MAX_VCPUS)
2000# error HVM_MAX_VCPUS not defined
2001#endif
2002int main(void) {
2003 xc_interface *xc;
2004 xs_daemon_open();
2005 xc = xc_interface_open(0, 0, 0);
2006 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2007 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002008 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002009 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002010 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002011 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002012 return 0;
2013}
2014EOF
2015 compile_prog "" "$xen_libs"
2016 then
2017 xen_ctrl_version=460
2018 xen=yes
2019
2020 # Xen 4.5
2021 elif
2022 cat > $TMPC <<EOF &&
2023#include <xenctrl.h>
2024#include <xenstore.h>
2025#include <stdint.h>
2026#include <xen/hvm/hvm_info_table.h>
2027#if !defined(HVM_MAX_VCPUS)
2028# error HVM_MAX_VCPUS not defined
2029#endif
2030int main(void) {
2031 xc_interface *xc;
2032 xs_daemon_open();
2033 xc = xc_interface_open(0, 0, 0);
2034 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2035 xc_gnttab_open(NULL, 0);
2036 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2037 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002038 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2039 return 0;
2040}
2041EOF
2042 compile_prog "" "$xen_libs"
2043 then
2044 xen_ctrl_version=450
2045 xen=yes
2046
2047 elif
2048 cat > $TMPC <<EOF &&
2049#include <xenctrl.h>
2050#include <xenstore.h>
2051#include <stdint.h>
2052#include <xen/hvm/hvm_info_table.h>
2053#if !defined(HVM_MAX_VCPUS)
2054# error HVM_MAX_VCPUS not defined
2055#endif
2056int main(void) {
2057 xc_interface *xc;
2058 xs_daemon_open();
2059 xc = xc_interface_open(0, 0, 0);
2060 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2061 xc_gnttab_open(NULL, 0);
2062 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2063 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002064 return 0;
2065}
2066EOF
2067 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002068 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002069 xen_ctrl_version=420
2070 xen=yes
2071
Juan Quintelab2266be2009-07-27 16:13:16 +02002072 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002073 if test "$xen" = "yes" ; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002074 feature_not_found "xen (unsupported version)" \
2075 "Install a supported xen (xen 4.2 or newer)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002076 fi
2077 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002078 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002079
2080 if test "$xen" = yes; then
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002081 if test $xen_ctrl_version -ge 471 ; then
2082 libs_softmmu="$xen_stable_libs $libs_softmmu"
2083 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002084 libs_softmmu="$xen_libs $libs_softmmu"
2085 fi
aliguorie37630c2009-04-22 15:19:10 +00002086fi
2087
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002088if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002089 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002090 xen_pci_passthrough=yes
2091 else
2092 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002093 error_exit "User requested feature Xen PCI Passthrough" \
2094 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002095 fi
2096 xen_pci_passthrough=no
2097 fi
2098fi
2099
Ian Campbell64a7ad62016-01-15 13:23:44 +00002100if test "$xen_pv_domain_build" = "yes" &&
2101 test "$xen" != "yes"; then
2102 error_exit "User requested Xen PV domain builder support" \
2103 "which requires Xen support."
2104fi
2105
aliguorie37630c2009-04-22 15:19:10 +00002106##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002107# Sparse probe
2108if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002109 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002110 sparse=yes
2111 else
2112 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002113 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002114 fi
2115 sparse=no
2116 fi
2117fi
2118
2119##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002120# X11 probe
2121x11_cflags=
2122x11_libs=-lX11
2123if $pkg_config --exists "x11"; then
2124 x11_cflags=`$pkg_config --cflags x11`
2125 x11_libs=`$pkg_config --libs x11`
2126fi
2127
2128##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002129# GTK probe
2130
Stefan Weil9e04c682014-05-17 16:29:18 +02002131if test "$gtkabi" = ""; then
2132 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2133 # Use 3.0 as a fallback if that is available.
2134 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2135 gtkabi=2.0
2136 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2137 gtkabi=3.0
2138 else
2139 gtkabi=2.0
2140 fi
2141fi
2142
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002143if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002144 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002145 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002146 if test "$gtkabi" = "3.0" ; then
2147 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002148 else
2149 gtkversion="2.18.0"
2150 fi
2151 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2152 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2153 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002154 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002155 gtk_cflags="$gtk_cflags $x11_cflags"
2156 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002157 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002158 libs_softmmu="$gtk_libs $libs_softmmu"
2159 gtk="yes"
2160 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002161 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002162 else
2163 gtk="no"
2164 fi
2165fi
2166
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002167
2168##########################################
2169# GNUTLS probe
2170
Peter Maydell37371292015-07-24 18:28:08 +01002171gnutls_works() {
2172 # Unfortunately some distros have bad pkg-config information for gnutls
2173 # such that it claims to exist but you get a compiler error if you try
2174 # to use the options returned by --libs. Specifically, Ubuntu for --static
2175 # builds doesn't work:
2176 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2177 #
2178 # So sanity check the cflags/libs before assuming gnutls can be used.
2179 if ! $pkg_config --exists "gnutls"; then
2180 return 1
2181 fi
2182
2183 write_c_skeleton
2184 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2185}
2186
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002187gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002188gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002189if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002190 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002191 gnutls_cflags=`$pkg_config --cflags gnutls`
2192 gnutls_libs=`$pkg_config --libs gnutls`
2193 libs_softmmu="$gnutls_libs $libs_softmmu"
2194 libs_tools="$gnutls_libs $libs_tools"
2195 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2196 gnutls="yes"
2197
2198 # gnutls_hash_init requires >= 2.9.10
2199 if $pkg_config --exists "gnutls >= 2.9.10"; then
2200 gnutls_hash="yes"
2201 else
2202 gnutls_hash="no"
2203 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002204
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002205 # gnutls_rnd requires >= 2.11.0
2206 if $pkg_config --exists "gnutls >= 2.11.0"; then
2207 gnutls_rnd="yes"
2208 else
2209 gnutls_rnd="no"
2210 fi
2211
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002212 if $pkg_config --exists 'gnutls >= 3.0'; then
2213 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002214 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002215 elif $pkg_config --exists 'gnutls >= 2.12'; then
2216 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002217 *gcrypt*)
2218 gnutls_gcrypt=yes
2219 gnutls_nettle=no
2220 ;;
2221 *nettle*)
2222 gnutls_gcrypt=no
2223 gnutls_nettle=yes
2224 ;;
2225 *)
2226 gnutls_gcrypt=yes
2227 gnutls_nettle=no
2228 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002229 esac
2230 else
2231 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002232 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002233 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002234 elif test "$gnutls" = "yes"; then
2235 feature_not_found "gnutls" "Install gnutls devel"
2236 else
2237 gnutls="no"
2238 gnutls_hash="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002239 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002240 fi
2241else
2242 gnutls_hash="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002243 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002244fi
2245
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002246
2247# If user didn't give a --disable/enable-gcrypt flag,
2248# then mark as disabled if user requested nettle
2249# explicitly, or if gnutls links to nettle
2250if test -z "$gcrypt"
2251then
2252 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2253 then
2254 gcrypt="no"
2255 fi
2256fi
2257
2258# If user didn't give a --disable/enable-nettle flag,
2259# then mark as disabled if user requested gcrypt
2260# explicitly, or if gnutls links to gcrypt
2261if test -z "$nettle"
2262then
2263 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2264 then
2265 nettle="no"
2266 fi
2267fi
2268
2269has_libgcrypt_config() {
2270 if ! has "libgcrypt-config"
2271 then
2272 return 1
2273 fi
2274
2275 if test -n "$cross_prefix"
2276 then
2277 host=`libgcrypt-config --host`
2278 if test "$host-" != $cross_prefix
2279 then
2280 return 1
2281 fi
2282 fi
2283
2284 return 0
2285}
2286
2287if test "$gcrypt" != "no"; then
2288 if has_libgcrypt_config; then
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002289 gcrypt_cflags=`libgcrypt-config --cflags`
2290 gcrypt_libs=`libgcrypt-config --libs`
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002291 # Debian has remove -lgpg-error from libgcrypt-config
2292 # as it "spreads unnecessary dependencies" which in
2293 # turn breaks static builds...
2294 if test "$static" = "yes"
2295 then
2296 gcrypt_libs="$gcrypt_libs -lgpg-error"
2297 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002298 libs_softmmu="$gcrypt_libs $libs_softmmu"
2299 libs_tools="$gcrypt_libs $libs_tools"
2300 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002301 gcrypt="yes"
2302 if test -z "$nettle"; then
2303 nettle="no"
2304 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002305 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002306 if test "$gcrypt" = "yes"; then
2307 feature_not_found "gcrypt" "Install gcrypt devel"
2308 else
2309 gcrypt="no"
2310 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002311 fi
2312fi
2313
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002314
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002315if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002316 if $pkg_config --exists "nettle"; then
2317 nettle_cflags=`$pkg_config --cflags nettle`
2318 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002319 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002320 libs_softmmu="$nettle_libs $libs_softmmu"
2321 libs_tools="$nettle_libs $libs_tools"
2322 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002323 nettle="yes"
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002324 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002325 if test "$nettle" = "yes"; then
2326 feature_not_found "nettle" "Install nettle devel"
2327 else
2328 nettle="no"
2329 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002330 fi
2331fi
2332
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002333if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2334then
2335 error_exit "Only one of gcrypt & nettle can be enabled"
2336fi
2337
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002338##########################################
2339# libtasn1 - only for the TLS creds/session test suite
2340
2341tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002342tasn1_cflags=""
2343tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002344if $pkg_config --exists "libtasn1"; then
2345 tasn1_cflags=`$pkg_config --cflags libtasn1`
2346 tasn1_libs=`$pkg_config --libs libtasn1`
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002347else
2348 tasn1=no
2349fi
2350
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002351
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002352##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002353# getifaddrs (for tests/test-io-channel-socket )
2354
2355have_ifaddrs_h=yes
2356if ! check_include "ifaddrs.h" ; then
2357 have_ifaddrs_h=no
2358fi
2359
2360##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002361# VTE probe
2362
2363if test "$vte" != "no"; then
2364 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002365 vtepackage="vte-2.90"
2366 vteversion="0.32.0"
2367 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002368 vtepackage="vte"
2369 vteversion="0.24.0"
2370 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002371 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2372 vte_cflags=`$pkg_config --cflags $vtepackage`
2373 vte_libs=`$pkg_config --libs $vtepackage`
2374 libs_softmmu="$vte_libs $libs_softmmu"
2375 vte="yes"
2376 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002377 if test "$gtkabi" = "3.0"; then
2378 feature_not_found "vte" "Install libvte-2.90 devel"
2379 else
2380 feature_not_found "vte" "Install libvte devel"
2381 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002382 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002383 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002384 fi
2385fi
2386
2387##########################################
bellard11d9f692004-04-02 20:55:59 +00002388# SDL probe
2389
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002390# Look for sdl configuration program (pkg-config or sdl-config). Try
2391# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002392
2393if test $sdlabi = "2.0"; then
2394 sdl_config=$sdl2_config
2395 sdlname=sdl2
2396 sdlconfigname=sdl2_config
2397else
2398 sdlname=sdl
2399 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002400fi
2401
Dave Airlie47c03742013-12-10 14:05:51 +10002402if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2403 sdl_config=$sdlconfigname
2404fi
2405
2406if $pkg_config $sdlname --exists; then
2407 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002408 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002409elif has ${sdl_config}; then
2410 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002411 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002412else
2413 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002414 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002415 fi
2416 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002417fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002418if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002419 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2420fi
bellard11d9f692004-04-02 20:55:59 +00002421
Paolo Bonzini9316f802010-01-13 09:52:55 +01002422sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002423if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002424 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002425#include <SDL.h>
2426#undef main /* We don't want SDL to override our main() */
2427int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2428EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002429 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002430 if test "$static" = "yes" ; then
2431 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2432 else
2433 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2434 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002435 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002436 if test "$_sdlversion" -lt 121 ; then
2437 sdl_too_old=yes
2438 else
Peter Maydella30878e2015-08-14 16:10:52 +01002439 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002440 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002441
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002442 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002443 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002444 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002445 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2446 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002447 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002448 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002449 :
2450 else
2451 sdl=no
2452 fi
2453 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002454 else # sdl not found
2455 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002456 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002457 fi
2458 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002459 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002460fi
bellard11d9f692004-04-02 20:55:59 +00002461
aliguori5368a422009-03-03 17:37:21 +00002462if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002463 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002464#include <SDL.h>
2465#if defined(SDL_VIDEO_DRIVER_X11)
2466#include <X11/XKBlib.h>
2467#else
2468#error No x11 support
2469#endif
2470int main(void) { return 0; }
2471EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002472 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2473 sdl_cflags="$sdl_cflags $x11_cflags"
2474 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002475 fi
Juan Quintela07056672009-08-03 14:46:27 +02002476 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002477fi
2478
ths8f28f3f2007-01-05 21:25:54 +00002479##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002480# RDMA needs OpenFabrics libraries
2481if test "$rdma" != "no" ; then
2482 cat > $TMPC <<EOF
2483#include <rdma/rdma_cma.h>
2484int main(void) { return 0; }
2485EOF
2486 rdma_libs="-lrdmacm -libverbs"
2487 if compile_prog "" "$rdma_libs" ; then
2488 rdma="yes"
2489 libs_softmmu="$libs_softmmu $rdma_libs"
2490 else
2491 if test "$rdma" = "yes" ; then
2492 error_exit \
2493 " OpenFabrics librdmacm/libibverbs not present." \
2494 " Your options:" \
2495 " (1) Fast: Install infiniband packages from your distro." \
2496 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2497 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2498 fi
2499 rdma="no"
2500 fi
2501fi
2502
ths8d5d2d42007-08-25 01:37:51 +00002503
2504##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002505# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002506if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002507 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002508#include <sasl/sasl.h>
2509#include <stdio.h>
2510int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2511EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002512 # Assuming Cyrus-SASL installed in /usr prefix
2513 vnc_sasl_cflags=""
2514 vnc_sasl_libs="-lsasl2"
2515 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2516 vnc_sasl=yes
2517 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002518 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002519 else
2520 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002521 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002522 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002523 vnc_sasl=no
2524 fi
aliguori2f9606b2009-03-06 20:27:28 +00002525fi
2526
2527##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002528# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002529if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002530cat > $TMPC <<EOF
2531#include <stdio.h>
2532#include <jpeglib.h>
2533int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2534EOF
2535 vnc_jpeg_cflags=""
2536 vnc_jpeg_libs="-ljpeg"
2537 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2538 vnc_jpeg=yes
2539 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002540 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002541 else
2542 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002543 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002544 fi
2545 vnc_jpeg=no
2546 fi
2547fi
2548
2549##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002550# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002551if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002552cat > $TMPC <<EOF
2553//#include <stdio.h>
2554#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002555#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002556int main(void) {
2557 png_structp png_ptr;
2558 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002559 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002560}
2561EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002562 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002563 vnc_png_cflags=`$pkg_config libpng --cflags`
2564 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002565 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002566 vnc_png_cflags=""
2567 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002568 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002569 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2570 vnc_png=yes
2571 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002572 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002573 else
2574 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002575 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002576 fi
2577 vnc_png=no
2578 fi
2579fi
2580
2581##########################################
aliguori76655d62009-03-06 20:27:37 +00002582# fnmatch() probe, used for ACL routines
2583fnmatch="no"
2584cat > $TMPC << EOF
2585#include <fnmatch.h>
2586int main(void)
2587{
2588 fnmatch("foo", "foo", 0);
2589 return 0;
2590}
2591EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002592if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002593 fnmatch="yes"
2594fi
2595
2596##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002597# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002598# Note that on some systems (notably MacOSX) no extra library
2599# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002600if test "$uuid" != "no" ; then
2601 uuid_libs="-luuid"
2602 cat > $TMPC << EOF
2603#include <uuid/uuid.h>
2604int main(void)
2605{
2606 uuid_t my_uuid;
2607 uuid_generate(my_uuid);
2608 return 0;
2609}
2610EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002611 if compile_prog "" "" ; then
2612 uuid="yes"
2613 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002614 uuid="yes"
2615 libs_softmmu="$uuid_libs $libs_softmmu"
2616 libs_tools="$uuid_libs $libs_tools"
2617 else
2618 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002619 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002620 fi
2621 uuid=no
2622 fi
2623fi
2624
Jeff Cody4f18b782013-10-30 10:44:39 -04002625if test "$vhdx" = "yes" ; then
2626 if test "$uuid" = "no" ; then
2627 error_exit "uuid required for VHDX support"
2628 fi
2629elif test "$vhdx" != "no" ; then
2630 if test "$uuid" = "yes" ; then
2631 vhdx=yes
2632 else
2633 vhdx=no
2634 fi
2635fi
2636
Stefan Weilee682d22009-10-01 20:10:37 +02002637##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002638# xfsctl() probe, used for raw-posix
2639if test "$xfs" != "no" ; then
2640 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002641#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002642#include <xfs/xfs.h>
2643int main(void)
2644{
2645 xfsctl(NULL, 0, 0, NULL);
2646 return 0;
2647}
2648EOF
2649 if compile_prog "" "" ; then
2650 xfs="yes"
2651 else
2652 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002653 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002654 fi
2655 xfs=no
2656 fi
2657fi
2658
2659##########################################
ths8a16d272008-07-19 09:56:24 +00002660# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002661if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002662 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002663 cat > $TMPC << EOF
2664#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002665int main(void)
2666{
2667 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002668 char s[] = "";
2669 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002670 return 0;
2671}
ths8a16d272008-07-19 09:56:24 +00002672EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002673 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002674 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002675 libs_softmmu="$vde_libs $libs_softmmu"
2676 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002677 else
2678 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002679 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002680 fi
2681 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002682 fi
ths8a16d272008-07-19 09:56:24 +00002683fi
2684
2685##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002686# netmap support probe
2687# Apart from looking for netmap headers, we make sure that the host API version
2688# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2689# a minor/major version number. Minor new features will be marked with values up
2690# to 15, and if something happens that requires a change to the backend we will
2691# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002692if test "$netmap" != "no" ; then
2693 cat > $TMPC << EOF
2694#include <inttypes.h>
2695#include <net/if.h>
2696#include <net/netmap.h>
2697#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002698#if (NETMAP_API < 11) || (NETMAP_API > 15)
2699#error
2700#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002701int main(void) { return 0; }
2702EOF
2703 if compile_prog "" "" ; then
2704 netmap=yes
2705 else
2706 if test "$netmap" = "yes" ; then
2707 feature_not_found "netmap"
2708 fi
2709 netmap=no
2710 fi
2711fi
2712
2713##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002714# libcap-ng library probe
2715if test "$cap_ng" != "no" ; then
2716 cap_libs="-lcap-ng"
2717 cat > $TMPC << EOF
2718#include <cap-ng.h>
2719int main(void)
2720{
2721 capng_capability_to_name(CAPNG_EFFECTIVE);
2722 return 0;
2723}
2724EOF
2725 if compile_prog "" "$cap_libs" ; then
2726 cap_ng=yes
2727 libs_tools="$cap_libs $libs_tools"
2728 else
2729 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002730 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002731 fi
2732 cap_ng=no
2733 fi
2734fi
2735
2736##########################################
malcc2de5c92008-06-28 19:13:06 +00002737# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002738
malcc2de5c92008-06-28 19:13:06 +00002739audio_drv_probe()
2740{
2741 drv=$1
2742 hdr=$2
2743 lib=$3
2744 exp=$4
2745 cfl=$5
2746 cat > $TMPC << EOF
2747#include <$hdr>
2748int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002749EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002750 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002751 :
2752 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002753 error_exit "$drv check failed" \
2754 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002755 fi
2756}
2757
malc2fa7d3b2008-07-29 12:58:44 +00002758audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002759for drv in $audio_drv_list; do
2760 case $drv in
2761 alsa)
2762 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002763 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002764 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002765 ;;
2766
malcb8e59f12008-07-02 21:03:08 +00002767 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002768 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2769 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2770 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002771 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002772 ;;
2773
Juan Quintela997e6902009-08-03 14:46:29 +02002774 coreaudio)
2775 libs_softmmu="-framework CoreAudio $libs_softmmu"
2776 ;;
2777
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002778 dsound)
2779 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002780 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002781 ;;
2782
2783 oss)
2784 libs_softmmu="$oss_lib $libs_softmmu"
2785 ;;
2786
2787 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002788 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2789 ;;
2790
malce4c63a62008-07-19 16:15:16 +00002791 *)
malc1c9b2a52008-07-19 16:57:30 +00002792 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002793 error_exit "Unknown driver '$drv' selected" \
2794 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002795 }
2796 ;;
malcc2de5c92008-06-28 19:13:06 +00002797 esac
2798done
ths8f28f3f2007-01-05 21:25:54 +00002799
balrog4d3b6f62008-02-10 16:33:14 +00002800##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002801# BrlAPI probe
2802
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002803if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002804 brlapi_libs="-lbrlapi"
2805 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002806#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002807#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002808int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2809EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002810 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002811 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002812 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002813 else
2814 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002815 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002816 fi
2817 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002818 fi
2819fi
aurel322e4d9fb2008-04-08 06:01:02 +00002820
2821##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002822# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002823if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002824 if test "$mingw32" = "yes" ; then
2825 curses_list="-lpdcurses"
2826 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002827 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002828 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002829 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002830 cat > $TMPC << EOF
2831#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002832int main(void) {
2833 const char *s = curses_version();
2834 resize_term(0, 0);
2835 return s != 0;
2836}
balrog4d3b6f62008-02-10 16:33:14 +00002837EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002838 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002839 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002840 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002841 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002842 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002843 libs_softmmu="$curses_lib $libs_softmmu"
2844 break
2845 fi
2846 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002847 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002848 if test "$curses_found" = "yes" ; then
2849 curses=yes
2850 else
2851 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002852 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002853 fi
2854 curses=no
2855 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002856fi
balrog4d3b6f62008-02-10 16:33:14 +00002857
blueswir1414f0da2008-08-15 18:20:52 +00002858##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002859# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002860if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002861 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002862 curlconfig="$pkg_config libcurl"
2863 else
2864 curlconfig=curl-config
2865 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002866 cat > $TMPC << EOF
2867#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002868int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002869EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002870 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2871 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002872 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002873 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002874 else
2875 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002876 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002877 fi
2878 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002879 fi
2880fi # test "$curl"
2881
2882##########################################
balrogfb599c92008-09-28 23:49:55 +00002883# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002884if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002885 cat > $TMPC << EOF
2886#include <bluetooth/bluetooth.h>
2887int main(void) { return bt_error(0); }
2888EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002889 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2890 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002891 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002892 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002893 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002894 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002895 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002896 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002897 fi
balroge820e3f2008-09-30 02:27:44 +00002898 bluez="no"
2899 fi
balrogfb599c92008-09-28 23:49:55 +00002900fi
2901
2902##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002903# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002904
John Snowf40685c2015-05-22 14:13:42 -04002905glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002906glib_modules=gthread-2.0
2907if test "$modules" = yes; then
2908 glib_modules="$glib_modules gmodule-2.0"
2909fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002910
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002911for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002912 if $pkg_config --atleast-version=$glib_req_ver $i; then
2913 glib_cflags=`$pkg_config --cflags $i`
2914 glib_libs=`$pkg_config --libs $i`
2915 CFLAGS="$glib_cflags $CFLAGS"
2916 LIBS="$glib_libs $LIBS"
2917 libs_qga="$glib_libs $libs_qga"
2918 else
2919 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2920 fi
2921done
2922
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00002923# Sanity check that the current size_t matches the
2924# size that glib thinks it should be. This catches
2925# problems on multi-arch where people try to build
2926# 32-bit QEMU while pointing at 64-bit glib headers
2927cat > $TMPC <<EOF
2928#include <glib.h>
2929#include <unistd.h>
2930
2931#define QEMU_BUILD_BUG_ON(x) \
2932 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
2933
2934int main(void) {
2935 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
2936 return 0;
2937}
2938EOF
2939
2940if ! compile_prog "-Werror $CFLAGS" "$LIBS" ; then
2941 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
2942 "You probably need to set PKG_CONFIG_LIBDIR"\
2943 "to point to the right pkg-config files for your"\
2944 "build target"
2945fi
2946
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002947# g_test_trap_subprocess added in 2.38. Used by some tests.
2948glib_subprocess=yes
2949if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2950 glib_subprocess=no
2951fi
2952
John Snowbbbf2e02015-03-25 18:57:38 -04002953# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2954cat > $TMPC << EOF
2955#include <glib.h>
2956int main(void) { return 0; }
2957EOF
2958if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2959 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2960 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2961 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2962 fi
2963fi
2964
Fam Zhenge26110c2014-02-10 14:48:57 +08002965##########################################
2966# SHA command probe for modules
2967if test "$modules" = yes; then
2968 shacmd_probe="sha1sum sha1 shasum"
2969 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002970 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002971 shacmd="$c"
2972 break
2973 fi
2974 done
2975 if test "$shacmd" = ""; then
2976 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2977 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002978fi
2979
2980##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002981# pixman support probe
2982
2983if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002984 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2985 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002986 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002987 pixman="system"
2988 else
2989 pixman="internal"
2990 fi
2991fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002992if test "$pixman" = "none"; then
2993 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002994 error_exit "pixman disabled but system emulation or tools build" \
2995 "enabled. You can turn off pixman only if you also" \
2996 "disable all system emulation targets and the tools" \
2997 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002998 fi
2999 pixman_cflags=
3000 pixman_libs=
3001elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08003002 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02003003 pixman_cflags=`$pkg_config --cflags pixman-1`
3004 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003005else
3006 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003007 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003008 " (1) Preferred: Install the pixman devel package (any recent" \
3009 " distro should have packages as Xorg needs pixman too)." \
3010 " (2) Fetch the pixman submodule, using:" \
3011 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003012 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003013 mkdir -p pixman/pixman
3014 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3015 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003016fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003017
3018##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303019# libcap probe
3020
3021if test "$cap" != "no" ; then
3022 cat > $TMPC <<EOF
3023#include <stdio.h>
3024#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003025int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303026EOF
3027 if compile_prog "" "-lcap" ; then
3028 cap=yes
3029 else
3030 cap=no
3031 fi
3032fi
3033
3034##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003035# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003036PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003037
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003038pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003039cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003040#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003041static void *f(void *p) { return NULL; }
3042int main(void) {
3043 pthread_t thread;
3044 pthread_create(&thread, 0, f, 0);
3045 return 0;
3046}
blueswir1414f0da2008-08-15 18:20:52 +00003047EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003048if compile_prog "" "" ; then
3049 pthread=yes
3050else
3051 for pthread_lib in $PTHREADLIBS_LIST; do
3052 if compile_prog "" "$pthread_lib" ; then
3053 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003054 found=no
3055 for lib_entry in $LIBS; do
3056 if test "$lib_entry" = "$pthread_lib"; then
3057 found=yes
3058 break
3059 fi
3060 done
3061 if test "$found" = "no"; then
3062 LIBS="$pthread_lib $LIBS"
3063 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003064 break
3065 fi
3066 done
3067fi
blueswir1414f0da2008-08-15 18:20:52 +00003068
Anthony Liguori4617e592009-08-25 17:21:56 -05003069if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003070 error_exit "pthread check failed" \
3071 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003072fi
3073
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003074# check for pthread_setname_np
3075pthread_setname_np=no
3076cat > $TMPC << EOF
3077#include <pthread.h>
3078
3079static void *f(void *p) { return NULL; }
3080int main(void)
3081{
3082 pthread_t thread;
3083 pthread_create(&thread, 0, f, 0);
3084 pthread_setname_np(thread, "QEMU");
3085 return 0;
3086}
3087EOF
3088if compile_prog "" "$pthread_lib" ; then
3089 pthread_setname_np=yes
3090fi
3091
aliguoribf9298b2008-12-05 20:05:26 +00003092##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003093# rbd probe
3094if test "$rbd" != "no" ; then
3095 cat > $TMPC <<EOF
3096#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003097#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003098int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003099 rados_t cluster;
3100 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003101 return 0;
3102}
3103EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003104 rbd_libs="-lrbd -lrados"
3105 if compile_prog "" "$rbd_libs" ; then
3106 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003107 else
3108 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003109 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003110 fi
3111 rbd=no
3112 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003113fi
3114
3115##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003116# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003117min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003118if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003119 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003120 libssh2_cflags=`$pkg_config libssh2 --cflags`
3121 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003122 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003123 else
3124 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003125 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003126 fi
3127 libssh2=no
3128 fi
3129fi
3130
3131##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003132# libssh2_sftp_fsync probe
3133
3134if test "$libssh2" = "yes"; then
3135 cat > $TMPC <<EOF
3136#include <stdio.h>
3137#include <libssh2.h>
3138#include <libssh2_sftp.h>
3139int main(void) {
3140 LIBSSH2_SESSION *session;
3141 LIBSSH2_SFTP *sftp;
3142 LIBSSH2_SFTP_HANDLE *sftp_handle;
3143 session = libssh2_session_init ();
3144 sftp = libssh2_sftp_init (session);
3145 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3146 libssh2_sftp_fsync (sftp_handle);
3147 return 0;
3148}
3149EOF
3150 # libssh2_cflags/libssh2_libs defined in previous test.
3151 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3152 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3153 fi
3154fi
3155
3156##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003157# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003158
3159if test "$linux_aio" != "no" ; then
3160 cat > $TMPC <<EOF
3161#include <libaio.h>
3162#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003163#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003164int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3165EOF
3166 if compile_prog "" "-laio" ; then
3167 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003168 else
3169 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003170 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003171 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003172 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003173 fi
3174fi
3175
3176##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003177# TPM passthrough is only on x86 Linux
3178
3179if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3180 tpm_passthrough=$tpm
3181else
3182 tpm_passthrough=no
3183fi
3184
3185##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003186# attr probe
3187
3188if test "$attr" != "no" ; then
3189 cat > $TMPC <<EOF
3190#include <stdio.h>
3191#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003192#ifdef CONFIG_LIBATTR
3193#include <attr/xattr.h>
3194#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003195#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003196#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003197int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3198EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003199 if compile_prog "" "" ; then
3200 attr=yes
3201 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003202 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003203 attr=yes
3204 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003205 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003206 else
3207 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003208 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003209 fi
3210 attr=no
3211 fi
3212fi
3213
3214##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003215# iovec probe
3216cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003217#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003218#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003219#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003220int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003221EOF
3222iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003223if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003224 iovec=yes
3225fi
3226
aurel32f652e6a2008-12-16 10:43:48 +00003227##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003228# preadv probe
3229cat > $TMPC <<EOF
3230#include <sys/types.h>
3231#include <sys/uio.h>
3232#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003233int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003234EOF
3235preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003236if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003237 preadv=yes
3238fi
3239
3240##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003241# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003242# fdt support is mandatory for at least some target architectures,
3243# so insist on it if we're building those system emulators.
3244fdt_required=no
3245for target in $target_list; do
3246 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003247 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003248 fdt_required=yes
3249 ;;
3250 esac
3251done
3252
3253if test "$fdt_required" = "yes"; then
3254 if test "$fdt" = "no"; then
3255 error_exit "fdt disabled but some requested targets require it." \
3256 "You can turn off fdt only if you also disable all the system emulation" \
3257 "targets which need it (by specifying a cut down --target-list)."
3258 fi
3259 fdt=yes
3260fi
3261
Juan Quintela2df87df2009-08-12 18:29:54 +02003262if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003263 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003264 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003265 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003266 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003267#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003268#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003269int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003270EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003271 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003272 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003273 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003274 elif test -d ${source_path}/dtc/libfdt ; then
3275 # have submodule DTC - use it
3276 fdt=yes
3277 dtc_internal="yes"
3278 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003279 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003280 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3281 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003282 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003283 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3284 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3285 elif test "$fdt" = "yes" ; then
3286 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003287 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003288 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003289 " (2) Fetch the DTC submodule, using:" \
3290 " git submodule update --init dtc"
3291 else
3292 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003293 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003294 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003295 fi
3296fi
3297
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003298libs_softmmu="$libs_softmmu $fdt_libs"
3299
Michael Walle20ff0752011-03-07 23:32:39 +01003300##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003301# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003302
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003303if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003304 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003305 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003306 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3307 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003308 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003309 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3310 gtk_gl="yes"
3311 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003312 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003313 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003314 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003315 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003316 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003317 opengl_libs=""
3318 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003319 fi
3320fi
3321
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003322if test "$opengl" = "yes"; then
3323 cat > $TMPC << EOF
3324#include <epoxy/egl.h>
3325#ifndef EGL_MESA_image_dma_buf_export
3326# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3327#endif
3328int main(void) { return 0; }
3329EOF
3330 if compile_prog "" "" ; then
3331 opengl_dmabuf=yes
3332 fi
3333fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003334
3335##########################################
3336# archipelago probe
3337if test "$archipelago" != "no" ; then
3338 cat > $TMPC <<EOF
3339#include <stdio.h>
3340#include <xseg/xseg.h>
3341#include <xseg/protocol.h>
3342int main(void) {
3343 xseg_initialize();
3344 return 0;
3345}
3346EOF
3347 archipelago_libs=-lxseg
3348 if compile_prog "" "$archipelago_libs"; then
3349 archipelago="yes"
3350 libs_tools="$archipelago_libs $libs_tools"
3351 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003352
3353 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3354 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3355 echo "license and therefore prevent redistribution."
3356 echo
3357 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003358 else
3359 if test "$archipelago" = "yes" ; then
3360 feature_not_found "Archipelago backend support" "Install libxseg devel"
3361 fi
3362 archipelago="no"
3363 fi
3364fi
3365
3366
Bharata B Raoeb100392012-09-24 14:42:45 +05303367##########################################
3368# glusterfs probe
3369if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003370 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303371 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003372 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3373 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003374 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303375 glusterfs_discard="yes"
3376 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303377 if $pkg_config --atleast-version=6 glusterfs-api; then
3378 glusterfs_zerofill="yes"
3379 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303380 else
3381 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003382 feature_not_found "GlusterFS backend support" \
3383 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303384 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303385 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303386 fi
3387fi
3388
aurel3239386ac2009-04-15 19:48:17 +00003389# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003390# emulator. This is done because older glibc versions don't
3391# have syscall stubs for these implemented. In that case we
3392# don't provide them even if kernel supports them.
3393#
3394inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003395cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003396#include <sys/inotify.h>
3397
3398int
3399main(void)
3400{
3401 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003402 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003403}
3404EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003405if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003406 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003407fi
3408
Riku Voipioc05c7a72010-03-26 15:25:11 +00003409inotify1=no
3410cat > $TMPC << EOF
3411#include <sys/inotify.h>
3412
3413int
3414main(void)
3415{
3416 /* try to start inotify */
3417 return inotify_init1(0);
3418}
3419EOF
3420if compile_prog "" "" ; then
3421 inotify1=yes
3422fi
3423
Riku Voipioebc996f2009-04-21 15:01:51 +03003424# check if utimensat and futimens are supported
3425utimens=no
3426cat > $TMPC << EOF
3427#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003428#include <stddef.h>
3429#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003430#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003431
3432int main(void)
3433{
3434 utimensat(AT_FDCWD, "foo", NULL, 0);
3435 futimens(0, NULL);
3436 return 0;
3437}
3438EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003439if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003440 utimens=yes
3441fi
3442
Riku Voipio099d6b02009-05-05 12:10:04 +03003443# check if pipe2 is there
3444pipe2=no
3445cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003446#include <unistd.h>
3447#include <fcntl.h>
3448
3449int main(void)
3450{
3451 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003452 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003453}
3454EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003455if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003456 pipe2=yes
3457fi
3458
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003459# check if accept4 is there
3460accept4=no
3461cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003462#include <sys/socket.h>
3463#include <stddef.h>
3464
3465int main(void)
3466{
3467 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3468 return 0;
3469}
3470EOF
3471if compile_prog "" "" ; then
3472 accept4=yes
3473fi
3474
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303475# check if tee/splice is there. vmsplice was added same time.
3476splice=no
3477cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303478#include <unistd.h>
3479#include <fcntl.h>
3480#include <limits.h>
3481
3482int main(void)
3483{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003484 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303485 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3486 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3487 return 0;
3488}
3489EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003490if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303491 splice=yes
3492fi
3493
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003494##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003495# libnuma probe
3496
3497if test "$numa" != "no" ; then
3498 cat > $TMPC << EOF
3499#include <numa.h>
3500int main(void) { return numa_available(); }
3501EOF
3502
3503 if compile_prog "" "-lnuma" ; then
3504 numa=yes
3505 libs_softmmu="-lnuma $libs_softmmu"
3506 else
3507 if test "$numa" = "yes" ; then
3508 feature_not_found "numa" "install numactl devel"
3509 fi
3510 numa=no
3511 fi
3512fi
3513
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003514if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3515 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3516 exit 1
3517fi
3518
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003519##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003520# tcmalloc probe
3521
3522if test "$tcmalloc" = "yes" ; then
3523 cat > $TMPC << EOF
3524#include <stdlib.h>
3525int main(void) { malloc(1); return 0; }
3526EOF
3527
3528 if compile_prog "" "-ltcmalloc" ; then
3529 LIBS="-ltcmalloc $LIBS"
3530 else
3531 feature_not_found "tcmalloc" "install gperftools devel"
3532 fi
3533fi
3534
3535##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003536# jemalloc probe
3537
3538if test "$jemalloc" = "yes" ; then
3539 cat > $TMPC << EOF
3540#include <stdlib.h>
3541int main(void) { malloc(1); return 0; }
3542EOF
3543
3544 if compile_prog "" "-ljemalloc" ; then
3545 LIBS="-ljemalloc $LIBS"
3546 else
3547 feature_not_found "jemalloc" "install jemalloc devel"
3548 fi
3549fi
3550
3551##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003552# signalfd probe
3553signalfd="no"
3554cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003555#include <unistd.h>
3556#include <sys/syscall.h>
3557#include <signal.h>
3558int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3559EOF
3560
3561if compile_prog "" "" ; then
3562 signalfd=yes
3563fi
3564
Riku Voipioc2882b92009-08-12 15:08:24 +03003565# check if eventfd is supported
3566eventfd=no
3567cat > $TMPC << EOF
3568#include <sys/eventfd.h>
3569
3570int main(void)
3571{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003572 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003573}
3574EOF
3575if compile_prog "" "" ; then
3576 eventfd=yes
3577fi
3578
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003579# check if memfd is supported
3580memfd=no
3581cat > $TMPC << EOF
3582#include <sys/memfd.h>
3583
3584int main(void)
3585{
3586 return memfd_create("foo", MFD_ALLOW_SEALING);
3587}
3588EOF
3589if compile_prog "" "" ; then
3590 memfd=yes
3591fi
3592
3593
3594
Ulrich Hechtd0927932009-09-17 20:22:14 +03003595# check for fallocate
3596fallocate=no
3597cat > $TMPC << EOF
3598#include <fcntl.h>
3599
3600int main(void)
3601{
3602 fallocate(0, 0, 0, 0);
3603 return 0;
3604}
3605EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003606if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003607 fallocate=yes
3608fi
3609
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003610# check for fallocate hole punching
3611fallocate_punch_hole=no
3612cat > $TMPC << EOF
3613#include <fcntl.h>
3614#include <linux/falloc.h>
3615
3616int main(void)
3617{
3618 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3619 return 0;
3620}
3621EOF
3622if compile_prog "" "" ; then
3623 fallocate_punch_hole=yes
3624fi
3625
Denis V. Lunevb953f072015-01-30 11:42:14 +03003626# check that fallocate supports range zeroing inside the file
3627fallocate_zero_range=no
3628cat > $TMPC << EOF
3629#include <fcntl.h>
3630#include <linux/falloc.h>
3631
3632int main(void)
3633{
3634 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3635 return 0;
3636}
3637EOF
3638if compile_prog "" "" ; then
3639 fallocate_zero_range=yes
3640fi
3641
Kevin Wolfed911432014-09-29 17:12:59 +02003642# check for posix_fallocate
3643posix_fallocate=no
3644cat > $TMPC << EOF
3645#include <fcntl.h>
3646
3647int main(void)
3648{
3649 posix_fallocate(0, 0, 0);
3650 return 0;
3651}
3652EOF
3653if compile_prog "" "" ; then
3654 posix_fallocate=yes
3655fi
3656
Peter Maydellc727f472011-01-06 11:05:10 +00003657# check for sync_file_range
3658sync_file_range=no
3659cat > $TMPC << EOF
3660#include <fcntl.h>
3661
3662int main(void)
3663{
3664 sync_file_range(0, 0, 0, 0);
3665 return 0;
3666}
3667EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003668if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003669 sync_file_range=yes
3670fi
3671
Peter Maydelldace20d2011-01-10 13:11:24 +00003672# check for linux/fiemap.h and FS_IOC_FIEMAP
3673fiemap=no
3674cat > $TMPC << EOF
3675#include <sys/ioctl.h>
3676#include <linux/fs.h>
3677#include <linux/fiemap.h>
3678
3679int main(void)
3680{
3681 ioctl(0, FS_IOC_FIEMAP, 0);
3682 return 0;
3683}
3684EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003685if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003686 fiemap=yes
3687fi
3688
Ulrich Hechtd0927932009-09-17 20:22:14 +03003689# check for dup3
3690dup3=no
3691cat > $TMPC << EOF
3692#include <unistd.h>
3693
3694int main(void)
3695{
3696 dup3(0, 0, 0);
3697 return 0;
3698}
3699EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003700if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003701 dup3=yes
3702fi
3703
Alex Bligh4e0c6522013-08-21 16:02:43 +01003704# check for ppoll support
3705ppoll=no
3706cat > $TMPC << EOF
3707#include <poll.h>
3708
3709int main(void)
3710{
3711 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3712 ppoll(&pfd, 1, 0, 0);
3713 return 0;
3714}
3715EOF
3716if compile_prog "" "" ; then
3717 ppoll=yes
3718fi
3719
Alex Blighcd758dd2013-08-21 16:02:44 +01003720# check for prctl(PR_SET_TIMERSLACK , ... ) support
3721prctl_pr_set_timerslack=no
3722cat > $TMPC << EOF
3723#include <sys/prctl.h>
3724
3725int main(void)
3726{
3727 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3728 return 0;
3729}
3730EOF
3731if compile_prog "" "" ; then
3732 prctl_pr_set_timerslack=yes
3733fi
3734
Peter Maydell3b6edd12011-02-15 18:35:05 +00003735# check for epoll support
3736epoll=no
3737cat > $TMPC << EOF
3738#include <sys/epoll.h>
3739
3740int main(void)
3741{
3742 epoll_create(0);
3743 return 0;
3744}
3745EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003746if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003747 epoll=yes
3748fi
3749
3750# epoll_create1 and epoll_pwait are later additions
3751# so we must check separately for their presence
3752epoll_create1=no
3753cat > $TMPC << EOF
3754#include <sys/epoll.h>
3755
3756int main(void)
3757{
Peter Maydell19e83f62011-04-26 16:56:40 +01003758 /* Note that we use epoll_create1 as a value, not as
3759 * a function being called. This is necessary so that on
3760 * old SPARC glibc versions where the function was present in
3761 * the library but not declared in the header file we will
3762 * fail the configure check. (Otherwise we will get a compiler
3763 * warning but not an error, and will proceed to fail the
3764 * qemu compile where we compile with -Werror.)
3765 */
Blue Swirlc075a722012-08-09 20:21:25 +00003766 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003767}
3768EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003769if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003770 epoll_create1=yes
3771fi
3772
3773epoll_pwait=no
3774cat > $TMPC << EOF
3775#include <sys/epoll.h>
3776
3777int main(void)
3778{
3779 epoll_pwait(0, 0, 0, 0, 0);
3780 return 0;
3781}
3782EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003783if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003784 epoll_pwait=yes
3785fi
3786
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003787# check for sendfile support
3788sendfile=no
3789cat > $TMPC << EOF
3790#include <sys/sendfile.h>
3791
3792int main(void)
3793{
3794 return sendfile(0, 0, 0, 0);
3795}
3796EOF
3797if compile_prog "" "" ; then
3798 sendfile=yes
3799fi
3800
Riku Voipio51834342014-06-22 11:25:42 +01003801# check for timerfd support (glibc 2.8 and newer)
3802timerfd=no
3803cat > $TMPC << EOF
3804#include <sys/timerfd.h>
3805
3806int main(void)
3807{
3808 return(timerfd_create(CLOCK_REALTIME, 0));
3809}
3810EOF
3811if compile_prog "" "" ; then
3812 timerfd=yes
3813fi
3814
Riku Voipio9af5c902014-08-12 15:58:57 +03003815# check for setns and unshare support
3816setns=no
3817cat > $TMPC << EOF
3818#include <sched.h>
3819
3820int main(void)
3821{
3822 int ret;
3823 ret = setns(0, 0);
3824 ret = unshare(0);
3825 return ret;
3826}
3827EOF
3828if compile_prog "" "" ; then
3829 setns=yes
3830fi
3831
pbrookcc8ae6d2006-04-23 17:57:59 +00003832# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003833if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003834 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003835 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003836 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003837 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003838 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003839 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003840 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003841 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003842fi
3843
Stefan Weilf514f412009-10-11 12:44:07 +02003844# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003845byteswap_h=no
3846cat > $TMPC << EOF
3847#include <byteswap.h>
3848int main(void) { return bswap_32(0); }
3849EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003850if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003851 byteswap_h=yes
3852fi
3853
Stefan Weil75f13592013-01-05 12:17:38 +01003854# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003855bswap_h=no
3856cat > $TMPC << EOF
3857#include <sys/endian.h>
3858#include <sys/types.h>
3859#include <machine/bswap.h>
3860int main(void) { return bswap32(0); }
3861EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003862if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003863 bswap_h=yes
3864fi
3865
aliguorida93a1f2008-12-12 20:02:52 +00003866##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003867# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003868if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003869 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003870 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003871 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3872 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003873 else
3874 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003875 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003876 fi
3877 libiscsi="no"
3878 fi
3879fi
3880
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003881##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003882# Do we need libm
3883cat > $TMPC << EOF
3884#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003885int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003886EOF
3887if compile_prog "" "" ; then
3888 :
3889elif compile_prog "" "-lm" ; then
3890 LIBS="-lm $LIBS"
3891 libs_qga="-lm $libs_qga"
3892else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003893 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003894fi
3895
3896##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003897# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003898# uClibc provides 2 versions of clock_gettime(), one with realtime
3899# support and one without. This means that the clock_gettime() don't
3900# need -lrt. We still need it for timer_create() so we check for this
3901# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003902cat > $TMPC <<EOF
3903#include <signal.h>
3904#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003905int main(void) {
3906 timer_create(CLOCK_REALTIME, NULL, NULL);
3907 return clock_gettime(CLOCK_REALTIME, NULL);
3908}
aliguorida93a1f2008-12-12 20:02:52 +00003909EOF
3910
Juan Quintela52166aa2009-08-03 14:46:03 +02003911if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003912 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003913# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003914elif compile_prog "" "$pthread_lib -lrt" ; then
3915 LIBS="$LIBS -lrt"
3916 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003917fi
3918
Blue Swirl31ff5042009-09-12 12:33:07 +00003919if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003920 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003921 libs_softmmu="-lutil $libs_softmmu"
3922fi
3923
Blue Swirlde5071c2009-09-12 09:58:46 +00003924##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003925# spice probe
3926if test "$spice" != "no" ; then
3927 cat > $TMPC << EOF
3928#include <spice.h>
3929int main(void) { spice_server_new(); return 0; }
3930EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003931 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3932 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003933 if $pkg_config --atleast-version=0.12.0 spice-server && \
3934 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003935 compile_prog "$spice_cflags" "$spice_libs" ; then
3936 spice="yes"
3937 libs_softmmu="$libs_softmmu $spice_libs"
3938 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003939 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3940 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003941 else
3942 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003943 feature_not_found "spice" \
3944 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003945 fi
3946 spice="no"
3947 fi
3948fi
3949
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003950# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003951smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003952if test "$smartcard" != "no"; then
3953 if $pkg_config libcacard; then
3954 libcacard_cflags=$($pkg_config --cflags libcacard)
3955 libcacard_libs=$($pkg_config --libs libcacard)
3956 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3957 libs_softmmu="$libs_softmmu $libcacard_libs"
3958 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003959 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003960 if test "$smartcard" = "yes"; then
3961 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003962 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003963 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003964 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003965fi
3966
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003967# check for libusb
3968if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003969 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003970 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003971 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3972 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003973 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3974 libs_softmmu="$libs_softmmu $libusb_libs"
3975 else
3976 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003977 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003978 fi
3979 libusb="no"
3980 fi
3981fi
3982
Hans de Goede69354a82011-07-19 11:04:10 +02003983# check for usbredirparser for usb network redirection support
3984if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003985 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003986 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003987 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3988 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003989 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003990 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003991 else
3992 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003993 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003994 fi
3995 usb_redir="no"
3996 fi
3997fi
3998
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003999##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004000# check if we have VSS SDK headers for win
4001
4002if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4003 case "$vss_win32_sdk" in
4004 "") vss_win32_include="-I$source_path" ;;
4005 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4006 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4007 vss_win32_include="-I$source_path/.sdk/vss"
4008 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4009 ;;
4010 *) vss_win32_include="-I$vss_win32_sdk"
4011 esac
4012 cat > $TMPC << EOF
4013#define __MIDL_user_allocate_free_DEFINED__
4014#include <inc/win2003/vss.h>
4015int main(void) { return VSS_CTX_BACKUP; }
4016EOF
4017 if compile_prog "$vss_win32_include" "" ; then
4018 guest_agent_with_vss="yes"
4019 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4020 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004021 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004022 else
4023 if test "$vss_win32_sdk" != "" ; then
4024 echo "ERROR: Please download and install Microsoft VSS SDK:"
4025 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4026 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4027 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4028 echo "ERROR: The headers are extracted in the directory \`inc'."
4029 feature_not_found "VSS support"
4030 fi
4031 guest_agent_with_vss="no"
4032 fi
4033fi
4034
4035##########################################
4036# lookup Windows platform SDK (if not specified)
4037# The SDK is needed only to build .tlb (type library) file of guest agent
4038# VSS provider from the source. It is usually unnecessary because the
4039# pre-compiled .tlb file is included.
4040
4041if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4042 if test -z "$win_sdk"; then
4043 programfiles="$PROGRAMFILES"
4044 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4045 if test -n "$programfiles"; then
4046 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4047 else
4048 feature_not_found "Windows SDK"
4049 fi
4050 elif test "$win_sdk" = "no"; then
4051 win_sdk=""
4052 fi
4053fi
4054
4055##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004056# check if mingw environment provides a recent ntddscsi.h
4057if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4058 cat > $TMPC << EOF
4059#include <windows.h>
4060#include <ntddscsi.h>
4061int main(void) {
4062#if !defined(IOCTL_SCSI_GET_ADDRESS)
4063#error Missing required ioctl definitions
4064#endif
4065 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4066 return addr.Lun;
4067}
4068EOF
4069 if compile_prog "" "" ; then
4070 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004071 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004072 fi
4073fi
4074
4075##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004076# virgl renderer probe
4077
4078if test "$virglrenderer" != "no" ; then
4079 cat > $TMPC << EOF
4080#include <virglrenderer.h>
4081int main(void) { virgl_renderer_poll(); return 0; }
4082EOF
4083 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4084 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4085 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4086 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4087 virglrenderer="yes"
4088 else
4089 if test "$virglrenderer" = "yes" ; then
4090 feature_not_found "virglrenderer"
4091 fi
4092 virglrenderer="no"
4093 fi
4094fi
4095
4096##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004097# check if we have fdatasync
4098
4099fdatasync=no
4100cat > $TMPC << EOF
4101#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004102int main(void) {
4103#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4104return fdatasync(0);
4105#else
Stefan Weile172fe12012-04-06 21:33:20 +02004106#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004107#endif
4108}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004109EOF
4110if compile_prog "" "" ; then
4111 fdatasync=yes
4112fi
4113
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004114##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004115# check if we have madvise
4116
4117madvise=no
4118cat > $TMPC << EOF
4119#include <sys/types.h>
4120#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004121#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004122int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4123EOF
4124if compile_prog "" "" ; then
4125 madvise=yes
4126fi
4127
4128##########################################
4129# check if we have posix_madvise
4130
4131posix_madvise=no
4132cat > $TMPC << EOF
4133#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004134#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004135int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4136EOF
4137if compile_prog "" "" ; then
4138 posix_madvise=yes
4139fi
4140
4141##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004142# check if we have usable SIGEV_THREAD_ID
4143
4144sigev_thread_id=no
4145cat > $TMPC << EOF
4146#include <signal.h>
4147int main(void) {
4148 struct sigevent ev;
4149 ev.sigev_notify = SIGEV_THREAD_ID;
4150 ev._sigev_un._tid = 0;
4151 asm volatile("" : : "g"(&ev));
4152 return 0;
4153}
4154EOF
4155if compile_prog "" "" ; then
4156 sigev_thread_id=yes
4157fi
4158
4159##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004160# check if trace backend exists
4161
Lluís Vilanova5b808272014-05-27 15:02:14 +02004162$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004163if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004164 error_exit "invalid trace backends" \
4165 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004166fi
4167
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004168##########################################
4169# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004170if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004171 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004172#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004173int main(void) { return 0; }
4174EOF
4175 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004176 if $pkg_config lttng-ust --exists; then
4177 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4178 else
4179 lttng_ust_libs="-llttng-ust"
4180 fi
4181 if $pkg_config liburcu-bp --exists; then
4182 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4183 else
4184 urcu_bp_libs="-lurcu-bp"
4185 fi
4186
4187 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4188 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004189 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004190 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004191 fi
4192fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004193
4194##########################################
4195# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004196if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004197 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004198 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004199 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004200 trace_backend_stap="no"
4201 if has 'stap' ; then
4202 trace_backend_stap="yes"
4203 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004204fi
4205
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004206##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004207# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304208
Peter Maydell7c2acc72013-04-08 12:11:27 +01004209# We prefer ucontext, but it's not always possible. The fallback
4210# is sigcontext. gthread is not selectable except explicitly, because
4211# it is not functional enough to run QEMU proper. (It is occasionally
4212# useful for debugging purposes.) On Windows the only valid backend
4213# is the Windows-specific one.
4214
4215ucontext_works=no
4216if test "$darwin" != "yes"; then
4217 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304218#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004219#ifdef __stub_makecontext
4220#error Ignoring glibc stub makecontext which will always fail
4221#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004222int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304223EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004224 if compile_prog "" "" ; then
4225 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304226 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004227fi
4228
4229if test "$coroutine" = ""; then
4230 if test "$mingw32" = "yes"; then
4231 coroutine=win32
4232 elif test "$ucontext_works" = "yes"; then
4233 coroutine=ucontext
4234 else
4235 coroutine=sigaltstack
4236 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004237else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004238 case $coroutine in
4239 windows)
4240 if test "$mingw32" != "yes"; then
4241 error_exit "'windows' coroutine backend only valid for Windows"
4242 fi
4243 # Unfortunately the user visible backend name doesn't match the
4244 # coroutine-*.c filename for this case, so we have to adjust it here.
4245 coroutine=win32
4246 ;;
4247 ucontext)
4248 if test "$ucontext_works" != "yes"; then
4249 feature_not_found "ucontext"
4250 fi
4251 ;;
4252 gthread|sigaltstack)
4253 if test "$mingw32" = "yes"; then
4254 error_exit "only the 'windows' coroutine backend is valid for Windows"
4255 fi
4256 ;;
4257 *)
4258 error_exit "unknown coroutine backend $coroutine"
4259 ;;
4260 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304261fi
4262
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004263if test "$coroutine_pool" = ""; then
4264 if test "$coroutine" = "gthread"; then
4265 coroutine_pool=no
4266 else
4267 coroutine_pool=yes
4268 fi
4269fi
4270if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4271 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4272fi
4273
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304274##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304275# check if we have open_by_handle_at
4276
Stefan Weil4e1797f2012-06-18 22:11:06 +02004277open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304278cat > $TMPC << EOF
4279#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004280#if !defined(AT_EMPTY_PATH)
4281# error missing definition
4282#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004283int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004284#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304285EOF
4286if compile_prog "" "" ; then
4287 open_by_handle_at=yes
4288fi
4289
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304290########################################
4291# check if we have linux/magic.h
4292
4293linux_magic_h=no
4294cat > $TMPC << EOF
4295#include <linux/magic.h>
4296int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004297 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304298}
4299EOF
4300if compile_prog "" "" ; then
4301 linux_magic_h=yes
4302fi
4303
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004304########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004305# check whether we can disable warning option with a pragma (this is needed
4306# to silence warnings in the headers of some versions of external libraries).
4307# This test has to be compiled with -Werror as otherwise an unknown pragma is
4308# only a warning.
4309#
4310# If we can't selectively disable warning in the code, disable -Werror so that
4311# the build doesn't fail anyway.
4312
Peter Maydell06d71fa2012-07-30 16:13:07 +01004313pragma_disable_unused_but_set=no
4314cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004315#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004316#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004317#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004318#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004319
Peter Maydell06d71fa2012-07-30 16:13:07 +01004320int main(void) {
4321 return 0;
4322}
4323EOF
4324if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004325 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004326else
4327 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004328fi
4329
4330########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004331# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004332
4333valgrind_h=no
4334cat > $TMPC << EOF
4335#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004336int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004337 return 0;
4338}
4339EOF
4340if compile_prog "" "" ; then
4341 valgrind_h=yes
4342fi
4343
4344########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004345# check if environ is declared
4346
4347has_environ=no
4348cat > $TMPC << EOF
4349#include <unistd.h>
4350int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004351 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004352 return 0;
4353}
4354EOF
4355if compile_prog "" "" ; then
4356 has_environ=yes
4357fi
4358
Richard Henderson76a347e2012-12-28 14:17:02 -08004359########################################
4360# check if cpuid.h is usable.
4361
4362cpuid_h=no
4363cat > $TMPC << EOF
4364#include <cpuid.h>
4365int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004366 unsigned a, b, c, d;
4367 int max = __get_cpuid_max(0, 0);
4368
4369 if (max >= 1) {
4370 __cpuid(1, a, b, c, d);
4371 }
4372
4373 if (max >= 7) {
4374 __cpuid_count(7, 0, a, b, c, d);
4375 }
4376
4377 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004378}
4379EOF
4380if compile_prog "" "" ; then
4381 cpuid_h=yes
4382fi
4383
Richard Hendersonf5401662013-02-16 12:46:59 -08004384########################################
4385# check if __[u]int128_t is usable.
4386
4387int128=no
4388cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004389#if defined(__clang_major__) && defined(__clang_minor__)
4390# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4391# error __int128_t does not work in CLANG before 3.2
4392# endif
4393#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004394__int128_t a;
4395__uint128_t b;
4396int main (void) {
4397 a = a + b;
4398 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004399 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004400 return 0;
4401}
4402EOF
4403if compile_prog "" "" ; then
4404 int128=yes
4405fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004406
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004407########################################
4408# check if getauxval is available.
4409
4410getauxval=no
4411cat > $TMPC << EOF
4412#include <sys/auxv.h>
4413int main(void) {
4414 return getauxval(AT_HWCAP) == 0;
4415}
4416EOF
4417if compile_prog "" "" ; then
4418 getauxval=yes
4419fi
4420
John Snowfd0e6052015-03-25 18:57:39 -04004421########################################
4422# check if ccache is interfering with
4423# semantic analysis of macros
4424
John Snow5e4dfd32015-10-28 13:56:40 -04004425unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004426ccache_cpp2=no
4427cat > $TMPC << EOF
4428static const int Z = 1;
4429#define fn() ({ Z; })
4430#define TAUT(X) ((X) == Z)
4431#define PAREN(X, Y) (X == Y)
4432#define ID(X) (X)
4433int main(int argc, char *argv[])
4434{
4435 int x = 0, y = 0;
4436 x = ID(x);
4437 x = fn();
4438 fn();
4439 if (PAREN(x, y)) return 0;
4440 if (TAUT(Z)) return 0;
4441 return 0;
4442}
4443EOF
4444
4445if ! compile_object "-Werror"; then
4446 ccache_cpp2=yes
4447fi
4448
John Snowb553a042015-11-03 15:43:42 -05004449#################################################
4450# clang does not support glibc + FORTIFY_SOURCE.
4451
4452if test "$fortify_source" != "no"; then
4453 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4454 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004455 elif test -n "$cxx" &&
4456 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004457 fortify_source="no";
4458 else
4459 fortify_source="yes"
4460 fi
4461fi
4462
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304463##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004464# End of CC checks
4465# After here, no more $cc or $ld runs
4466
Blue Swirl1d728c32012-05-01 18:45:39 +00004467if test "$gcov" = "yes" ; then
4468 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4469 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004470elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004471 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004472elif test "$debug" = "no"; then
4473 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004474fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004475
Peter Lieven6542aa92014-02-03 10:26:13 +01004476##########################################
4477# Do we have libnfs
4478if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004479 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004480 libnfs="yes"
4481 libnfs_libs=$($pkg_config --libs libnfs)
4482 LIBS="$LIBS $libnfs_libs"
4483 else
4484 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004485 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004486 fi
4487 libnfs="no"
4488 fi
4489fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004490
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004491# Disable zero malloc errors for official releases unless explicitly told to
4492# enable/disable
4493if test -z "$zero_malloc" ; then
4494 if test "$z_version" = "50" ; then
4495 zero_malloc="no"
4496 else
4497 zero_malloc="yes"
4498 fi
4499fi
4500
Peter Maydell6ca026c2012-07-18 15:10:18 +01004501# Now we've finished running tests it's OK to add -Werror to the compiler flags
4502if test "$werror" = "yes"; then
4503 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4504fi
4505
Juan Quintelae86ecd42009-08-03 14:45:59 +02004506if test "$solaris" = "no" ; then
4507 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004508 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004509 fi
4510fi
4511
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004512# test if pod2man has --utf8 option
4513if pod2man --help | grep -q utf8; then
4514 POD2MAN="pod2man --utf8"
4515else
4516 POD2MAN="pod2man"
4517fi
4518
Blue Swirl952afb72010-09-19 08:36:34 +00004519# Use ASLR, no-SEH and DEP if available
4520if test "$mingw32" = "yes" ; then
4521 for flag in --dynamicbase --no-seh --nxcompat; do
4522 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4523 LDFLAGS="-Wl,$flag $LDFLAGS"
4524 fi
4525 done
4526fi
4527
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004528qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004529qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004530qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004531qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004532
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004533tools=""
4534if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004535 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004536 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4537 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004538 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004539 fi
4540fi
4541if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304542 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004543 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4544 virtfs=yes
4545 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4546 else
4547 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004548 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304549 fi
Andreas Färber17500372012-05-01 01:12:03 +02004550 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004551 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304552 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004553fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004554
4555# Probe for guest agent support/options
4556
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004557if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004558 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004559 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004560 guest_agent=yes
4561 elif [ "$guest_agent" != yes ]; then
4562 guest_agent=no
4563 else
4564 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004565 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004566fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004567
Michael Roth9d6bc272015-08-26 10:49:13 -05004568# Guest agent Window MSI package
4569
4570if test "$guest_agent" != yes; then
4571 if test "$guest_agent_msi" = yes; then
4572 error_exit "MSI guest agent package requires guest agent enabled"
4573 fi
4574 guest_agent_msi=no
4575elif test "$mingw32" != "yes"; then
4576 if test "$guest_agent_msi" = "yes"; then
4577 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4578 fi
4579 guest_agent_msi=no
4580elif ! has wixl; then
4581 if test "$guest_agent_msi" = "yes"; then
4582 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4583 fi
4584 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004585else
4586 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4587 # disabled explicitly
4588 if test "$guest_agent_msi" != "no"; then
4589 guest_agent_msi=yes
4590 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004591fi
4592
Michael Roth1a349042015-08-26 11:14:31 -05004593if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004594 if test "$guest_agent_with_vss" = "yes"; then
4595 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4596 fi
4597
4598 if test "$QEMU_GA_MANUFACTURER" = ""; then
4599 QEMU_GA_MANUFACTURER=QEMU
4600 fi
4601
4602 if test "$QEMU_GA_DISTRO" = ""; then
4603 QEMU_GA_DISTRO=Linux
4604 fi
4605
4606 if test "$QEMU_GA_VERSION" = ""; then
4607 QEMU_GA_VERSION=`cat $source_path/VERSION`
4608 fi
4609
4610 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4611
4612 case "$cpu" in
4613 x86_64)
4614 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4615 ;;
4616 i386)
4617 QEMU_GA_MSI_ARCH="-D Arch=32"
4618 ;;
4619 *)
4620 error_exit "CPU $cpu not supported for building installation package"
4621 ;;
4622 esac
4623fi
4624
Paolo Bonzinica35f782010-05-26 16:08:29 +02004625# Mac OS X ships with a broken assembler
4626roms=
4627if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4628 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4629 "$softmmu" = yes ; then
4630 roms="optionrom"
4631fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004632if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004633 roms="$roms spapr-rtas"
4634fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004635
Christian Borntraeger9933c302013-04-23 01:23:03 +00004636if test "$cpu" = "s390x" ; then
4637 roms="$roms s390-ccw"
4638fi
4639
Richard Henderson964c6fa2013-06-21 19:10:16 -07004640# Probe for the need for relocating the user-only binary.
4641if test "$pie" = "no" ; then
4642 textseg_addr=
4643 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004644 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4645 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004646 textseg_addr=0x60000000
4647 ;;
4648 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004649 # A 256M aligned address, high in the address space, with enough
4650 # room for the code_gen_buffer above it before the stack.
4651 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004652 ;;
4653 esac
4654 if [ -n "$textseg_addr" ]; then
4655 cat > $TMPC <<EOF
4656 int main(void) { return 0; }
4657EOF
4658 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4659 if ! compile_prog "" "$textseg_ldflags"; then
4660 # In case ld does not support -Ttext-segment, edit the default linker
4661 # script via sed to set the .text start addr. This is needed on FreeBSD
4662 # at least.
4663 $ld --verbose | sed \
4664 -e '1,/==================================================/d' \
4665 -e '/==================================================/,$d' \
4666 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4667 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4668 textseg_ldflags="-Wl,-T../config-host.ld"
4669 fi
4670 fi
4671fi
4672
Jan Kiszka50e12062014-10-02 10:03:55 +02004673# prepend pixman and ftd flags after all config tests are done
4674QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4675libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004676
bellard43ce4df2003-06-09 19:53:12 +00004677echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004678echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004679echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004680echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004681echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004682echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004683echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004684echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004685if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004686echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004687echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004688echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004689else
4690echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004691echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004692fi
bellard5a671352003-10-01 00:13:48 +00004693echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004694echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004695echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004696echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004697echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004698echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004699echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004700echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004701echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004702echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004703echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004704echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004705if test "$slirp" = "yes" ; then
4706 echo "smbd $smbd"
4707fi
Fam Zheng17969262014-02-10 14:48:56 +08004708echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004709echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004710echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004711echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004712echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004713echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004714echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004715echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004716echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004717echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004718if test "$darwin" = "yes" ; then
4719 echo "Cocoa support $cocoa"
4720fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004721echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004722echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004723echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004724echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004725echo "GNUTLS support $gnutls"
4726echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09004727echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004728echo "libgcrypt $gcrypt"
Peter Maydell18f49882015-12-14 15:02:36 +00004729if test "$nettle" = "yes"; then
4730 echo "nettle $nettle ($nettle_version)"
4731else
4732 echo "nettle $nettle"
4733fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004734echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004735echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004736echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004737echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004738echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004739echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004740echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004741echo "Block whitelist (rw) $block_drv_rw_whitelist"
4742echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304743echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004744echo "VNC support $vnc"
4745if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004746 echo "VNC SASL support $vnc_sasl"
4747 echo "VNC JPEG support $vnc_jpeg"
4748 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004749fi
blueswir131422552007-04-16 18:27:06 +00004750if test -n "$sparc_cpu"; then
4751 echo "Target Sparc Arch $sparc_cpu"
4752fi
aliguorie37630c2009-04-22 15:19:10 +00004753echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004754if test "$xen" = "yes" ; then
4755 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00004756 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00004757fi
aurel322e4d9fb2008-04-08 06:01:02 +00004758echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004759echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004760echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004761echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004762echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004763echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004764echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004765echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004766echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004767echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004768echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004769echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004770echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004771echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004772echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004773echo "madvise $madvise"
4774echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004775echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004776echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004777echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004778echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004779echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004780echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01004781if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004782echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004783fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004784if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004785echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004786else
4787echo "spice support $spice"
4788fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004789echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004790echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004791echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004792echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004793echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004794echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01004795echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004796echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004797echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004798echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004799echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004800echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004801echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004802echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004803echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004804echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304805echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004806echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004807echo "gcov $gcov_tool"
4808echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004809echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004810echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004811echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004812echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004813echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004814echo "lzo support $lzo"
4815echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004816echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004817echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004818echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004819echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08004820echo "avx2 optimization $avx2_opt"
bellard67b915a2004-03-31 23:37:16 +00004821
Stefan Weil1ba16962011-07-29 22:40:45 +02004822if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004823echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004824fi
bellard97a847b2003-08-10 21:36:04 +00004825
Juan Quintela98ec69a2009-07-16 18:34:18 +02004826config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004827
Stefan Weildbd99ae2013-01-01 18:33:44 +01004828echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4829
Juan Quintela98ec69a2009-07-16 18:34:18 +02004830echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004831echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004832
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004833echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004834echo "prefix=$prefix" >> $config_host_mak
4835echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004836echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004837echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004838echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004839echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004840echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004841echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004842echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4843echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004844echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004845if test "$mingw32" = "no" ; then
4846 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4847fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004848echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004849echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4850echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004851echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004852echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004853
Juan Quintela98ec69a2009-07-16 18:34:18 +02004854echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004855
aurel32f8393942009-04-13 18:45:38 +00004856if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004857 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004858fi
aliguori1625af82009-04-05 17:41:02 +00004859if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004860 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004861fi
bellard7d132992003-03-06 23:23:54 +00004862if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004863 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004864fi
bellard67b915a2004-03-31 23:37:16 +00004865if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004866 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004867 rc_version=`cat $source_path/VERSION`
4868 version_major=${rc_version%%.*}
4869 rc_version=${rc_version#*.}
4870 version_minor=${rc_version%%.*}
4871 rc_version=${rc_version#*.}
4872 version_subminor=${rc_version%%.*}
4873 version_micro=0
4874 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4875 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004876 if test "$guest_agent_with_vss" = "yes" ; then
4877 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004878 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004879 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4880 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004881 if test "$guest_agent_ntddscsi" = "yes" ; then
4882 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4883 fi
Michael Roth1a349042015-08-26 11:14:31 -05004884 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004885 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4886 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4887 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4888 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4889 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4890 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4891 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4892 fi
pbrook210fa552007-02-27 21:04:49 +00004893else
Juan Quintela35f4df22009-07-27 16:13:07 +02004894 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004895fi
blueswir1128ab2f2008-08-15 18:33:42 +00004896
Mark McLoughlindffcb712009-10-22 17:49:11 +01004897if test "$linux" = "yes" ; then
4898 echo "CONFIG_LINUX=y" >> $config_host_mak
4899fi
4900
bellard83fb7ad2004-07-05 21:25:26 +00004901if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004902 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004903fi
malcb29fe3e2008-11-18 01:42:22 +00004904
4905if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004906 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004907fi
4908
bellardec530c82006-04-25 22:36:06 +00004909if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004910 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004911 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004912 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004913 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004914 fi
bellardec530c82006-04-25 22:36:06 +00004915fi
Andreas Färber179cf402010-09-20 00:50:43 +02004916if test "$haiku" = "yes" ; then
4917 echo "CONFIG_HAIKU=y" >> $config_host_mak
4918fi
bellard97a847b2003-08-10 21:36:04 +00004919if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004920 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004921fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004922if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004923 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004924fi
bellardc20709a2004-04-21 23:27:19 +00004925if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004926 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004927 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004928fi
ths8a16d272008-07-19 09:56:24 +00004929if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004930 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004931fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004932if test "$netmap" = "yes" ; then
4933 echo "CONFIG_NETMAP=y" >> $config_host_mak
4934fi
Gonglei015a33b2014-07-01 20:58:08 +08004935if test "$l2tpv3" = "yes" ; then
4936 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4937fi
Corey Bryant47e98652012-01-26 09:42:26 -05004938if test "$cap_ng" = "yes" ; then
4939 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4940fi
Juan Quintela2358a492009-07-27 16:13:25 +02004941echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004942for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004943 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004944 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004945done
Juan Quintela67f86e82009-08-03 14:46:59 +02004946if test "$audio_pt_int" = "yes" ; then
4947 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4948fi
malcd5631632009-10-10 01:13:41 +04004949if test "$audio_win_int" = "yes" ; then
4950 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4951fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004952echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4953echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004954if test "$vnc" = "yes" ; then
4955 echo "CONFIG_VNC=y" >> $config_host_mak
4956fi
aliguori2f9606b2009-03-06 20:27:28 +00004957if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004958 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004959fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004960if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004961 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004962fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004963if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004964 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004965fi
aliguori76655d62009-03-06 20:27:37 +00004966if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004967 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004968fi
Stefan Weilee682d22009-10-01 20:10:37 +02004969if test "$uuid" = "yes" ; then
4970 echo "CONFIG_UUID=y" >> $config_host_mak
4971fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004972if test "$xfs" = "yes" ; then
4973 echo "CONFIG_XFS=y" >> $config_host_mak
4974fi
pbrookb1a550a2006-04-16 13:28:56 +00004975qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004976echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004977echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004978echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004979echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004980if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004981 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004982fi
Fam Zheng17969262014-02-10 14:48:56 +08004983if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004984 # $shacmd can generate a hash started with digit, which the compiler doesn't
4985 # like as an symbol. So prefix it with an underscore
4986 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004987 echo "CONFIG_MODULES=y" >> $config_host_mak
4988fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004989if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004990 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004991 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004992 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004993fi
4994if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004995 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004996fi
4997if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004998 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004999fi
Riku Voipioebc996f2009-04-21 15:01:51 +03005000if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005001 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03005002fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005003if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005004 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005005fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005006if test "$accept4" = "yes" ; then
5007 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5008fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305009if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005010 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305011fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005012if test "$eventfd" = "yes" ; then
5013 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5014fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005015if test "$memfd" = "yes" ; then
5016 echo "CONFIG_MEMFD=y" >> $config_host_mak
5017fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005018if test "$fallocate" = "yes" ; then
5019 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5020fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005021if test "$fallocate_punch_hole" = "yes" ; then
5022 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5023fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005024if test "$fallocate_zero_range" = "yes" ; then
5025 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5026fi
Kevin Wolfed911432014-09-29 17:12:59 +02005027if test "$posix_fallocate" = "yes" ; then
5028 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5029fi
Peter Maydellc727f472011-01-06 11:05:10 +00005030if test "$sync_file_range" = "yes" ; then
5031 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5032fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005033if test "$fiemap" = "yes" ; then
5034 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5035fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005036if test "$dup3" = "yes" ; then
5037 echo "CONFIG_DUP3=y" >> $config_host_mak
5038fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005039if test "$ppoll" = "yes" ; then
5040 echo "CONFIG_PPOLL=y" >> $config_host_mak
5041fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005042if test "$prctl_pr_set_timerslack" = "yes" ; then
5043 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5044fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005045if test "$epoll" = "yes" ; then
5046 echo "CONFIG_EPOLL=y" >> $config_host_mak
5047fi
5048if test "$epoll_create1" = "yes" ; then
5049 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5050fi
5051if test "$epoll_pwait" = "yes" ; then
5052 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5053fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005054if test "$sendfile" = "yes" ; then
5055 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5056fi
Riku Voipio51834342014-06-22 11:25:42 +01005057if test "$timerfd" = "yes" ; then
5058 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5059fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005060if test "$setns" = "yes" ; then
5061 echo "CONFIG_SETNS=y" >> $config_host_mak
5062fi
aurel323b3f24a2009-04-15 16:12:13 +00005063if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005064 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005065fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005066if test "$inotify1" = "yes" ; then
5067 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5068fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005069if test "$byteswap_h" = "yes" ; then
5070 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5071fi
5072if test "$bswap_h" = "yes" ; then
5073 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5074fi
Alexander Graf769ce762009-05-11 17:41:42 +02005075if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005076 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005077 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005078 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005079fi
aurel322e4d9fb2008-04-08 06:01:02 +00005080if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005081 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005082fi
balrogfb599c92008-09-28 23:49:55 +00005083if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005084 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005085 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005086fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005087if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005088 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5089fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005090echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005091if test "$gtk" = "yes" ; then
5092 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005093 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005094 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005095 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005096 if test "$gtk_gl" = "yes" ; then
5097 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5098 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005099fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005100if test "$gnutls" = "yes" ; then
5101 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5102fi
5103if test "$gnutls_hash" = "yes" ; then
5104 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5105fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005106if test "$gnutls_rnd" = "yes" ; then
5107 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5108fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005109if test "$gcrypt" = "yes" ; then
5110 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005111fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005112if test "$nettle" = "yes" ; then
5113 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005114 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005115fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005116if test "$tasn1" = "yes" ; then
5117 echo "CONFIG_TASN1=y" >> $config_host_mak
5118fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005119if test "$have_ifaddrs_h" = "yes" ; then
5120 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5121fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005122if test "$vte" = "yes" ; then
5123 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005124 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5125fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005126if test "$virglrenderer" = "yes" ; then
5127 echo "CONFIG_VIRGL=y" >> $config_host_mak
5128 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5129 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5130fi
aliguorie37630c2009-04-22 15:19:10 +00005131if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005132 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005133 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005134 if test "$xen_pv_domain_build" = "yes" ; then
5135 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5136 fi
aliguorie37630c2009-04-22 15:19:10 +00005137fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005138if test "$linux_aio" = "yes" ; then
5139 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5140fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005141if test "$attr" = "yes" ; then
5142 echo "CONFIG_ATTR=y" >> $config_host_mak
5143fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005144if test "$libattr" = "yes" ; then
5145 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5146fi
Meador Inge983eef52012-02-24 14:00:42 +05305147if test "$virtfs" = "yes" ; then
5148 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005149fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005150if test "$vhost_scsi" = "yes" ; then
5151 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5152fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005153if test "$vhost_net" = "yes" ; then
5154 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5155fi
ths77755342008-11-27 15:45:16 +00005156if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005157 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005158fi
aliguoribf9298b2008-12-05 20:05:26 +00005159if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005160 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005161fi
aliguoriceb42de2009-04-07 18:43:28 +00005162if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005163 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005164fi
aurel32f652e6a2008-12-16 10:43:48 +00005165if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005166 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005167fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005168if test "$signalfd" = "yes" ; then
5169 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5170fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005171if test "$tcg_interpreter" = "yes" ; then
5172 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5173fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005174if test "$fdatasync" = "yes" ; then
5175 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5176fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005177if test "$madvise" = "yes" ; then
5178 echo "CONFIG_MADVISE=y" >> $config_host_mak
5179fi
5180if test "$posix_madvise" = "yes" ; then
5181 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5182fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005183if test "$sigev_thread_id" = "yes" ; then
5184 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5185fi
bellard97a847b2003-08-10 21:36:04 +00005186
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005187if test "$spice" = "yes" ; then
5188 echo "CONFIG_SPICE=y" >> $config_host_mak
5189fi
5190
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005191if test "$smartcard" = "yes" ; then
5192 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005193fi
5194
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005195if test "$libusb" = "yes" ; then
5196 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5197fi
5198
Hans de Goede69354a82011-07-19 11:04:10 +02005199if test "$usb_redir" = "yes" ; then
5200 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5201fi
5202
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005203if test "$opengl" = "yes" ; then
5204 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005205 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005206 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005207 if test "$opengl_dmabuf" = "yes" ; then
5208 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5209 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005210fi
5211
Liang Li99f2dbd2016-03-08 13:53:16 +08005212if test "$avx2_opt" = "yes" ; then
5213 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5214fi
5215
qiaonuohan607dacd2014-02-18 14:11:30 +08005216if test "$lzo" = "yes" ; then
5217 echo "CONFIG_LZO=y" >> $config_host_mak
5218fi
5219
5220if test "$snappy" = "yes" ; then
5221 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5222fi
5223
Peter Wu6b383c02015-01-06 18:48:14 +01005224if test "$bzip2" = "yes" ; then
5225 echo "CONFIG_BZIP2=y" >> $config_host_mak
5226 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5227fi
5228
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005229if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005230 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005231 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5232 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005233fi
5234
Peter Lieven6542aa92014-02-03 10:26:13 +01005235if test "$libnfs" = "yes" ; then
5236 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5237fi
5238
Eduardo Otubof7945732012-08-14 18:44:05 -03005239if test "$seccomp" = "yes"; then
5240 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5241fi
5242
bellard83fb7ad2004-07-05 21:25:26 +00005243# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005244if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005245 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005246fi
5247
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005248if test "$zero_malloc" = "yes" ; then
5249 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5250fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005251if test "$localtime_r" = "yes" ; then
5252 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5253fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005254if test "$qom_cast_debug" = "yes" ; then
5255 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5256fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005257if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005258 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005259 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5260 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005261fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005262
Peter Maydell7c2acc72013-04-08 12:11:27 +01005263echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005264if test "$coroutine_pool" = "yes" ; then
5265 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5266else
5267 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5268fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305269
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305270if test "$open_by_handle_at" = "yes" ; then
5271 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5272fi
5273
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305274if test "$linux_magic_h" = "yes" ; then
5275 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5276fi
5277
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005278if test "$pragma_diagnostic_available" = "yes" ; then
5279 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005280fi
5281
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005282if test "$valgrind_h" = "yes" ; then
5283 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5284fi
5285
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005286if test "$has_environ" = "yes" ; then
5287 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5288fi
5289
Richard Henderson76a347e2012-12-28 14:17:02 -08005290if test "$cpuid_h" = "yes" ; then
5291 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5292fi
5293
Richard Hendersonf5401662013-02-16 12:46:59 -08005294if test "$int128" = "yes" ; then
5295 echo "CONFIG_INT128=y" >> $config_host_mak
5296fi
5297
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005298if test "$getauxval" = "yes" ; then
5299 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5300fi
5301
Bharata B Raoeb100392012-09-24 14:42:45 +05305302if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005303 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005304 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5305 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305306fi
5307
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305308if test "$glusterfs_discard" = "yes" ; then
5309 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5310fi
5311
Bharata B Rao7c815372013-12-21 14:51:25 +05305312if test "$glusterfs_zerofill" = "yes" ; then
5313 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5314fi
5315
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005316if test "$archipelago" = "yes" ; then
5317 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5318 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5319fi
5320
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005321if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005322 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005323 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5324 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005325fi
5326
Jeff Cody4f18b782013-10-30 10:44:39 -04005327if test "$vhdx" = "yes" ; then
5328 echo "CONFIG_VHDX=y" >> $config_host_mak
5329fi
5330
blueswir168063642008-11-22 21:03:55 +00005331# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005332if test "$libusb" = "yes"; then
5333 echo "HOST_USB=libusb legacy" >> $config_host_mak
5334else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005335 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005336fi
blueswir168063642008-11-22 21:03:55 +00005337
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005338# TPM passthrough support?
5339if test "$tpm" = "yes"; then
5340 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5341 if test "$tpm_passthrough" = "yes"; then
5342 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5343 fi
5344fi
5345
Lluís Vilanova5b808272014-05-27 15:02:14 +02005346echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5347if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005348 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305349fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005350if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005351 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5352 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005353 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005354fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03005355if have_backend "log"; then
5356 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02005357fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005358if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005359 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5360fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005361if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005362 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5363 if test "$trace_backend_stap" = "yes" ; then
5364 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5365 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005366fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005367if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005368 if test "$linux" = "yes" ; then
5369 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005370 else
Stewart Smith21684af2014-01-24 12:39:10 +11005371 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005372 fi
5373fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005374echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5375
Michael R. Hines2da776d2013-07-22 10:01:54 -04005376if test "$rdma" = "yes" ; then
5377 echo "CONFIG_RDMA=y" >> $config_host_mak
5378fi
5379
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005380# Hold two types of flag:
5381# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5382# a thread we have a handle to
5383# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5384# platform
5385if test "$pthread_setname_np" = "yes" ; then
5386 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5387 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5388fi
5389
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005390if test "$tcg_interpreter" = "yes"; then
5391 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5392elif test "$ARCH" = "sparc64" ; then
5393 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5394elif test "$ARCH" = "s390x" ; then
5395 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005396elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005397 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005398elif test "$ARCH" = "ppc64" ; then
5399 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005400else
5401 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5402fi
5403QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5404
Juan Quintela98ec69a2009-07-16 18:34:18 +02005405echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005406echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005407echo "MAKE=$make" >> $config_host_mak
5408echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005409echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5410echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03005411echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5412echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00005413echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005414echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005415if $iasl -h > /dev/null 2>&1; then
5416 echo "IASL=$iasl" >> $config_host_mak
5417fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005418echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005419echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005420echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005421echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005422echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005423echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005424echo "AS=$as" >> $config_host_mak
5425echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005426echo "OBJCOPY=$objcopy" >> $config_host_mak
5427echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005428echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005429echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005430echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005431echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005432echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005433echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005434if test "$sparse" = "yes" ; then
5435 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005436 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005437 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005438 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5439 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5440fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005441if test "$cross_prefix" != ""; then
5442 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5443else
5444 echo "AUTOCONF_HOST := " >> $config_host_mak
5445fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005446echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005447echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005448echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005449echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005450echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005451echo "DSOSUF=$DSOSUF" >> $config_host_mak
5452echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005453echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005454echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5455echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005456echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005457echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005458if test "$gcov" = "yes" ; then
5459 echo "CONFIG_GCOV=y" >> $config_host_mak
5460 echo "GCOV=$gcov_tool" >> $config_host_mak
5461fi
Juan Quintela804edf22009-07-27 16:12:49 +02005462
Peter Maydell6efd7512011-11-30 11:59:04 +00005463# use included Linux headers
5464if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005465 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005466 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005467 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005468 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005469 ;;
5470 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005471 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005472 ;;
5473 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005474 linux_arch=s390
5475 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005476 aarch64)
5477 linux_arch=arm64
5478 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005479 mips64)
5480 linux_arch=mips
5481 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005482 *)
5483 # For most CPUs the kernel architecture name and QEMU CPU name match.
5484 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005485 ;;
5486 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005487 # For non-KVM architectures we will not have asm headers
5488 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5489 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5490 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005491fi
5492
bellard1d14ffa2005-10-30 18:58:22 +00005493for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005494target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005495config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005496target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005497target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005498
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005499case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005500 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
Juan Quintelaea2d6a32009-07-16 18:34:10 +02005501 target_bigendian=yes
5502 ;;
5503esac
bellard97a847b2003-08-10 21:36:04 +00005504target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005505target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005506target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005507target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005508case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005509 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005510 target_softmmu="yes"
5511 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005512 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005513 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005514 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005515 fi
pbrook9e407a82007-05-26 16:38:53 +00005516 target_user_only="yes"
5517 target_linux_user="yes"
5518 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005519 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005520 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005521 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005522 fi
blueswir184778502008-10-26 20:33:16 +00005523 target_user_only="yes"
5524 target_bsd_user="yes"
5525 ;;
pbrook9e407a82007-05-26 16:38:53 +00005526 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005527 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005528 exit 1
5529 ;;
5530esac
ths831b7822007-01-18 20:06:33 +00005531
bellard97a847b2003-08-10 21:36:04 +00005532mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005533echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005534
pbrooke5fe0c52006-06-11 13:32:59 +00005535bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005536interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005537gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005538
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005539TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005540TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005541TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005542
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005543case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005544 i386)
aurel322408a522008-04-20 20:19:44 +00005545 ;;
5546 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005547 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005548 ;;
5549 alpha)
aurel322408a522008-04-20 20:19:44 +00005550 ;;
5551 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005552 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005553 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005554 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005555 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005556 aarch64)
5557 TARGET_BASE_ARCH=arm
5558 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005559 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 +01005560 ;;
aurel322408a522008-04-20 20:19:44 +00005561 cris)
aurel322408a522008-04-20 20:19:44 +00005562 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005563 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005564 ;;
aurel322408a522008-04-20 20:19:44 +00005565 m68k)
aurel322408a522008-04-20 20:19:44 +00005566 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005567 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005568 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005569 microblaze|microblazeel)
5570 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005571 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005572 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005573 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005574 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005575 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005576 ;;
5577 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005578 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005579 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005580 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005581 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005582 ;;
5583 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005584 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005585 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005586 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005587 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005588 moxie)
5589 ;;
Jia Liue67db062012-07-20 15:50:39 +08005590 or32)
5591 TARGET_ARCH=openrisc
5592 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005593 ;;
aurel322408a522008-04-20 20:19:44 +00005594 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005595 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005596 ;;
5597 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005598 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005599 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005600 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005601 ;;
5602 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005603 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005604 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005605 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005606 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005607 ppc64le)
5608 TARGET_ARCH=ppc64
5609 TARGET_BASE_ARCH=ppc
5610 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005611 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 -05005612 ;;
aurel322408a522008-04-20 20:19:44 +00005613 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005614 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005615 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005616 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005617 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01005618 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005619 ;;
5620 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005621 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005622 bflt="yes"
5623 ;;
5624 sparc)
aurel322408a522008-04-20 20:19:44 +00005625 ;;
5626 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005627 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005628 ;;
5629 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005630 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005631 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005632 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005633 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005634 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005635 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005636 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 +01005637 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005638 tilegx)
5639 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005640 tricore)
5641 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005642 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005643 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005644 xtensa|xtensaeb)
5645 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005646 ;;
aurel322408a522008-04-20 20:19:44 +00005647 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005648 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005649 ;;
5650esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005651# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5652if [ "$TARGET_BASE_ARCH" = "" ]; then
5653 TARGET_BASE_ARCH=$TARGET_ARCH
5654fi
5655
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005656symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5657
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005658upper() {
5659 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5660}
5661
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005662target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005663echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005664echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005665echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005666if [ "$TARGET_ABI_DIR" = "" ]; then
5667 TARGET_ABI_DIR=$TARGET_ARCH
5668fi
Juan Quintela25be2102009-10-07 02:41:00 +02005669echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005670if [ "$HOST_VARIANT_DIR" != "" ]; then
5671 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5672fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005673case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005674 i386|x86_64)
5675 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005676 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005677 if test "$xen_pci_passthrough" = yes; then
5678 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5679 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005680 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005681 ;;
5682 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005683esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005684case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005685 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005686 # Make sure the target and host cpus are compatible
5687 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005688 \( "$target_name" = "$cpu" -o \
5689 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5690 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5691 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5692 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005693 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005694 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005695 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5696 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5697 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005698 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005699 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005700 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureau421f4442015-10-26 15:32:00 +01005701 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005702 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005703 fi
5704esac
bellardde83cd02003-06-15 20:25:43 +00005705if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005706 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005707fi
5708if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005709 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005710fi
bellard997344f2003-10-27 21:10:39 +00005711if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005712 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005713 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005714fi
ths831b7822007-01-18 20:06:33 +00005715if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005716 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005717fi
pbrook56aebc82008-10-11 17:55:29 +00005718list=""
5719if test ! -z "$gdb_xml_files" ; then
5720 for x in $gdb_xml_files; do
5721 list="$list $source_path/gdb-xml/$x"
5722 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005723 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005724fi
bellardde83cd02003-06-15 20:25:43 +00005725
pbrooke5fe0c52006-06-11 13:32:59 +00005726if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005727 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005728fi
blueswir184778502008-10-26 20:33:16 +00005729if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005730 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005731fi
bellard5b0753e2005-03-01 21:37:28 +00005732
Juan Quintela4afddb52009-08-03 14:46:45 +02005733# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005734
Juan Quintela4afddb52009-08-03 14:46:45 +02005735cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005736ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005737
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005738disas_config() {
5739 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5740 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5741}
5742
Juan Quintela64656022009-08-03 14:46:53 +02005743for i in $ARCH $TARGET_BASE_ARCH ; do
5744 case "$i" in
5745 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005746 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005747 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005748 aarch64)
5749 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005750 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005751 fi
5752 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005753 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005754 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005755 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005756 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005757 fi
Juan Quintela64656022009-08-03 14:46:53 +02005758 ;;
5759 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005760 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005761 ;;
5762 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005763 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005764 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005765 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005766 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005767 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005768 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005769 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005770 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005771 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005772 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005773 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005774 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005775 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005776 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005777 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005778 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005779 ;;
5780 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005781 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005782 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005783 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005784 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005785 ;;
Jia Liue67db062012-07-20 15:50:39 +08005786 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005787 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005788 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005789 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005790 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005791 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005792 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005793 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005794 ;;
5795 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005796 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005797 ;;
5798 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005799 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005800 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005801 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005802 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005803 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005804 esac
5805done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005806if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005807 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005808fi
Juan Quintela64656022009-08-03 14:46:53 +02005809
Juan Quintela6ee71262009-08-03 14:46:47 +02005810case "$ARCH" in
5811alpha)
5812 # Ensure there's only a single GP
5813 cflags="-msmall-data $cflags"
5814;;
5815esac
5816
Juan Quintelad02c1db2009-08-03 14:46:50 +02005817if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005818 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005819 if test "$target_linux_user" = "yes" ; then
5820 cflags="-p $cflags"
5821 ldflags="-p $ldflags"
5822 fi
5823 if test "$target_softmmu" = "yes" ; then
5824 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005825 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005826 fi
5827fi
5828
Juan Quintela9b8e1112009-08-03 14:46:46 +02005829if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005830 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005831fi
Juan Quintelafa282482009-07-22 22:37:39 +02005832
Juan Quintela25be2102009-10-07 02:41:00 +02005833echo "LDFLAGS+=$ldflags" >> $config_target_mak
5834echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005835
bellard97a847b2003-08-10 21:36:04 +00005836done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005837
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005838if [ "$pixman" = "internal" ]; then
5839 echo "config-host.h: subdir-pixman" >> $config_host_mak
5840fi
5841
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005842if [ "$dtc_internal" = "yes" ]; then
5843 echo "config-host.h: subdir-dtc" >> $config_host_mak
5844fi
5845
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005846if test "$numa" = "yes"; then
5847 echo "CONFIG_NUMA=y" >> $config_host_mak
5848fi
5849
John Snowfd0e6052015-03-25 18:57:39 -04005850if test "$ccache_cpp2" = "yes"; then
5851 echo "export CCACHE_CPP2=y" >> $config_host_mak
5852fi
5853
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005854# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005855DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
Michael Tokarev2b170ef2013-10-21 12:33:58 +04005856DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005857DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005858DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005859DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005860FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5861FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005862FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005863FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005864FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005865FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005866FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005867FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005868for bios_file in \
5869 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005870 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005871 $source_path/pc-bios/*.rom \
5872 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005873 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005874 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005875 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005876 $source_path/pc-bios/palcode-*
5877do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005878 FILES="$FILES pc-bios/`basename $bios_file`"
5879done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005880for test_file in `find $source_path/tests/acpi-test-data -type f`
5881do
5882 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5883done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005884mkdir -p $DIRS
5885for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005886 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005887 symlink "$source_path/$f" "$f"
5888 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005889done
Paul Brook1ad21342009-05-19 16:17:58 +01005890
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005891# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005892for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005893 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005894 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005895 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005896 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005897 echo "CC=$cc" >> $config_mak
5898 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005899 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005900 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005901 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005902 echo "LD=$ld" >> $config_mak
5903done
5904
Max Reitz76c75602014-05-24 23:24:56 +02005905# set up qemu-iotests in this build directory
5906iotests_common_env="tests/qemu-iotests/common.env"
5907iotests_check="tests/qemu-iotests/check"
5908
5909echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5910echo >> "$iotests_common_env"
5911echo "export PYTHON='$python'" >> "$iotests_common_env"
5912
5913if [ ! -e "$iotests_check" ]; then
5914 symlink "$source_path/$iotests_check" "$iotests_check"
5915fi
5916
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005917# Save the configure command line for later reuse.
5918cat <<EOD >config.status
5919#!/bin/sh
5920# Generated by configure.
5921# Run this file to recreate the current configuration.
5922# Compiler output produced by configure, useful for debugging
5923# configure, is in config.log if it exists.
5924EOD
5925printf "exec" >>config.status
5926printf " '%s'" "$0" "$@" >>config.status
5927echo >>config.status
5928chmod +x config.status
5929
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005930rm -r "$TMPDIR1"