blob: 2b3287641adab3a1d925aad48dfa5916f97d3940 [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. Berrange91bfcdb2015-10-16 16:36:53 +0100309nettle=""
310gcrypt=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100311vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200312virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400313tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100314libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400315vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800316numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800317tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200318jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100319
aliguoriac0df512008-12-29 17:14:15 +0000320# parse CC options first
321for opt do
322 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
323 case "$opt" in
324 --cross-prefix=*) cross_prefix="$optarg"
325 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100326 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000327 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400328 --cxx=*) CXX="$optarg"
329 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100330 --source-path=*) source_path="$optarg"
331 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200332 --cpu=*) cpu="$optarg"
333 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100334 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100335 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200336 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100337 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100338 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200339 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100340 --enable-debug-info) debug_info="yes"
341 ;;
342 --disable-debug-info) debug_info="no"
343 ;;
aliguoriac0df512008-12-29 17:14:15 +0000344 esac
345done
aliguoriac0df512008-12-29 17:14:15 +0000346# OS specific
347# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100348# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000349
Peter Maydelle49d0212012-12-07 15:39:13 +0000350# Preferred compiler:
351# ${CC} (if set)
352# ${cross_prefix}gcc (if cross-prefix specified)
353# system compiler
354if test -z "${CC}${cross_prefix}"; then
355 cc="$host_cc"
356else
357 cc="${CC-${cross_prefix}gcc}"
358fi
359
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400360if test -z "${CXX}${cross_prefix}"; then
361 cxx="c++"
362else
363 cxx="${CXX-${cross_prefix}g++}"
364fi
365
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500366ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000367as="${AS-${cross_prefix}as}"
368cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500369objcopy="${OBJCOPY-${cross_prefix}objcopy}"
370ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200371nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500372strip="${STRIP-${cross_prefix}strip}"
373windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300374pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
375query_pkg_config() {
376 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
377}
378pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500379sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000380sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000381
Peter Maydell45d285a2013-10-21 21:03:06 +0100382# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
383ARFLAGS="${ARFLAGS-rv}"
384
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200385# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000386QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400387QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100388QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200389QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200390QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100391if test "$debug_info" = "yes"; then
392 CFLAGS="-g $CFLAGS"
393 LDFLAGS="-g $LDFLAGS"
394fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200395
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100396# make source path absolute
397source_path=`cd "$source_path"; pwd`
398
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300399# running configure in the source tree?
400# we know that's the case if configure is there.
401if test -f "./configure"; then
402 pwd_is_source_path="y"
403else
404 pwd_is_source_path="n"
405fi
406
aliguoriac0df512008-12-29 17:14:15 +0000407check_define() {
408cat > $TMPC <<EOF
409#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000410#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000411#endif
412int main(void) { return 0; }
413EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200414 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000415}
416
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200417check_include() {
418cat > $TMPC <<EOF
419#include <$1>
420int main(void) { return 0; }
421EOF
422 compile_object
423}
424
John Snow93b25862015-03-25 18:57:37 -0400425write_c_skeleton() {
426 cat > $TMPC <<EOF
427int main(void) { return 0; }
428EOF
429}
430
Peter Maydellbbea4052012-08-14 15:35:34 +0100431if check_define __linux__ ; then
432 targetos="Linux"
433elif check_define _WIN32 ; then
434 targetos='MINGW32'
435elif check_define __OpenBSD__ ; then
436 targetos='OpenBSD'
437elif check_define __sun__ ; then
438 targetos='SunOS'
439elif check_define __HAIKU__ ; then
440 targetos='Haiku'
441else
442 targetos=`uname -s`
443fi
444
445# Some host OSes need non-standard checks for which CPU to use.
446# Note that these checks are broken for cross-compilation: if you're
447# cross-compiling to one of these OSes then you'll need to specify
448# the correct CPU with the --cpu option.
449case $targetos in
450Darwin)
451 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
452 # run 64-bit userspace code.
453 # If the user didn't specify a CPU explicitly and the kernel says this is
454 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
455 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
456 cpu="x86_64"
457 fi
458 ;;
459SunOS)
460 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
461 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
462 cpu="x86_64"
463 fi
464esac
465
Juan Quintela2ff6b912009-08-03 14:45:55 +0200466if test ! -z "$cpu" ; then
467 # command line argument
468 :
469elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000470 cpu="i386"
471elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700472 if check_define __ILP32__ ; then
473 cpu="x32"
474 else
475 cpu="x86_64"
476 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000477elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000478 if check_define __arch64__ ; then
479 cpu="sparc64"
480 else
481 cpu="sparc"
482 fi
malcfdf7ed92009-01-14 18:39:52 +0000483elif check_define _ARCH_PPC ; then
484 if check_define _ARCH_PPC64 ; then
485 cpu="ppc64"
486 else
487 cpu="ppc"
488 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200489elif check_define __mips__ ; then
490 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200491elif check_define __ia64__ ; then
492 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200493elif check_define __s390__ ; then
494 if check_define __s390x__ ; then
495 cpu="s390x"
496 else
497 cpu="s390"
498 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100499elif check_define __arm__ ; then
500 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100501elif check_define __aarch64__ ; then
502 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400503elif check_define __hppa__ ; then
504 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000505else
malcfdf7ed92009-01-14 18:39:52 +0000506 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000507fi
508
Peter Maydell359bc952011-12-24 13:07:25 +0000509ARCH=
510# Normalise host CPU name and set ARCH.
511# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000512case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700513 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200514 cpu="$cpu"
515 ;;
bellard7d132992003-03-06 23:23:54 +0000516 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000517 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000518 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000519 x86_64|amd64)
520 cpu="x86_64"
521 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100522 armv*b|armv*l|arm)
523 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000524 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100525 aarch64)
526 cpu="aarch64"
527 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200528 mips*)
529 cpu="mips"
530 ;;
blueswir131422552007-04-16 18:27:06 +0000531 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000532 cpu="sparc"
533 ;;
bellard7d132992003-03-06 23:23:54 +0000534 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000535 # This will result in either an error or falling back to TCI later
536 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000537 ;;
538esac
Peter Maydell359bc952011-12-24 13:07:25 +0000539if test -z "$ARCH"; then
540 ARCH="$cpu"
541fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200542
bellard7d132992003-03-06 23:23:54 +0000543# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200544
Stacey Sonadfc3e92014-06-08 09:57:22 -0700545# host *BSD for user mode
546HOST_VARIANT_DIR=""
547
bellard7d132992003-03-06 23:23:54 +0000548case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000549CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200550 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200551 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200552 audio_possible_drivers="sdl"
553 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000554;;
bellard67b915a2004-03-31 23:37:16 +0000555MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200556 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200557 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200558 if check_include dsound.h; then
559 audio_drv_list="dsound"
560 else
561 audio_drv_list=""
562 fi
bellard67b915a2004-03-31 23:37:16 +0000563;;
ths5c40d2b2007-06-23 16:03:36 +0000564GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100565 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200566 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200567 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000568;;
bellard7d3505c2004-05-12 19:32:15 +0000569FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200570 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100571 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200572 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200573 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100574 # needed for kinfo_getvmmap(3) in libutil.h
575 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100576 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700577 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000578;;
blueswir1c5e97232009-03-07 20:06:23 +0000579DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200580 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100581 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200582 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200583 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700584 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000585;;
bellard7d3505c2004-05-12 19:32:15 +0000586NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200587 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100588 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200589 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200590 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200591 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700592 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000593;;
594OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200595 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100596 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400597 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200598 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700599 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000600;;
bellard83fb7ad2004-07-05 21:25:26 +0000601Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 bsd="yes"
603 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800604 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200605 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200606 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200607 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200608 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200609 cocoa="yes"
610 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200611 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200613 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100614 # Disable attempts to use ObjectiveC features in os/object.h since they
615 # won't work when we're compiling with gcc as a C compiler.
616 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700617 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000618;;
bellardec530c82006-04-25 22:36:06 +0000619SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200620 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100621 make="${MAKE-gmake}"
622 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000623 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400624 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200625 needs_libsunmath="no"
626 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200627 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
628 if test "$solarisrev" -le 9 ; then
629 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
630 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200631 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
632 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
633 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200634 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100635 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
636 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
637 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
638 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200639 fi
thsef18c882007-09-16 22:12:39 +0000640 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200641 fi
642 if test -f /usr/include/sys/soundcard.h ; then
643 audio_drv_list="oss"
644 fi
645 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000646# needed for CMSG_ macros in sys/socket.h
647 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
648# needed for TIOCWIN* defines in termios.h
649 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200650 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200651 solarisnetlibs="-lsocket -lnsl -lresolv"
652 LIBS="$solarisnetlibs $LIBS"
653 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000654;;
malcb29fe3e2008-11-18 01:42:22 +0000655AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200656 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100657 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000658;;
Andreas Färber179cf402010-09-20 00:50:43 +0200659Haiku)
660 haiku="yes"
661 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
662 LIBS="-lposix_error_mapper -lnetwork $LIBS"
663;;
bellard1d14ffa2005-10-30 18:58:22 +0000664*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200665 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200666 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200667 linux="yes"
668 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200669 kvm="yes"
670 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000671 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000672 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000673;;
bellard7d132992003-03-06 23:23:54 +0000674esac
675
bellard7d3505c2004-05-12 19:32:15 +0000676if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000677 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200678 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000679 fi
bellard7d3505c2004-05-12 19:32:15 +0000680fi
681
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100682: ${make=${MAKE-make}}
683: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100684: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400685: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100686
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100687# Default objcc to clang if available, otherwise use CC
688if has clang; then
689 objcc=clang
690else
691 objcc="$cc"
692fi
693
Juan Quintela3457a3f2009-08-03 14:46:07 +0200694if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200695 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800696 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200697 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100698 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
699 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100700 # MinGW needs -mthreads for TLS and macro _MT.
701 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100702 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400703 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100704 if compile_prog "" "-liberty" ; then
705 LIBS="-liberty $LIBS"
706 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200707 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200708 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300709 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300710 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200711 bindir="\${prefix}"
712 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200713 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200714 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200715 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200716fi
717
Anthony Liguori487fefd2009-06-11 13:28:25 -0500718werror=""
bellard85aa5182007-11-11 20:17:03 +0000719
bellard7d132992003-03-06 23:23:54 +0000720for opt do
pbrooka46e4032006-04-29 23:05:22 +0000721 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000722 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000723 --help|-h) show_help=yes
724 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400725 --version|-V) exec cat $source_path/VERSION
726 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000727 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000728 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000729 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000730 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100731 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000732 ;;
aliguoriac0df512008-12-29 17:14:15 +0000733 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000734 ;;
aliguoriac0df512008-12-29 17:14:15 +0000735 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000736 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000737 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000738 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400739 --cxx=*)
740 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200741 --iasl=*) iasl="$optarg"
742 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100743 --objcc=*) objcc="$optarg"
744 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000745 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000746 ;;
pbrook6a882642006-04-17 13:57:12 +0000747 --install=*) install="$optarg"
748 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000749 --python=*) python="$optarg"
750 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000751 --gcov=*) gcov_tool="$optarg"
752 ;;
Brade2d88302011-09-02 16:53:28 -0400753 --smbd=*) smbd="$optarg"
754 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200755 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000756 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200757 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000758 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100759 --enable-debug-info)
760 ;;
761 --disable-debug-info)
762 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800763 --enable-modules)
764 modules="yes"
765 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000766 --disable-modules)
767 modules="no"
768 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200769 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000770 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000771 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000772 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200773 --enable-trace-backends=*) trace_backends="$optarg"
774 ;;
775 # XXX: backwards compatibility
776 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100777 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100778 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100779 ;;
bellard7d132992003-03-06 23:23:54 +0000780 --enable-gprof) gprof="yes"
781 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000782 --enable-gcov) gcov="yes"
783 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100784 --static)
785 static="yes"
786 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300787 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000788 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200789 --mandir=*) mandir="$optarg"
790 ;;
791 --bindir=*) bindir="$optarg"
792 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300793 --libdir=*) libdir="$optarg"
794 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400795 --libexecdir=*) libexecdir="$optarg"
796 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200797 --includedir=*) includedir="$optarg"
798 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300799 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200800 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300801 --with-confsuffix=*) confsuffix="$optarg"
802 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300803 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200804 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100805 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600806 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300807 --localstatedir=*) local_statedir="$optarg"
808 ;;
809 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400810 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
811 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
812 # These switches are silently ignored, for compatibility with
813 # autoconf-generated configure scripts. This allows QEMU's
814 # configure to be used by RPM and similar macros that set
815 # lots of directory switches by default.
816 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200817 --with-system-pixman) pixman="system"
818 ;;
819 --without-system-pixman) pixman="internal"
820 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100821 --without-pixman) pixman="none"
822 ;;
bellard97a847b2003-08-10 21:36:04 +0000823 --disable-sdl) sdl="no"
824 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200825 --enable-sdl) sdl="yes"
826 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000827 --with-sdlabi=*) sdlabi="$optarg"
828 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200829 --disable-qom-cast-debug) qom_cast_debug="no"
830 ;;
831 --enable-qom-cast-debug) qom_cast_debug="yes"
832 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530833 --disable-virtfs) virtfs="no"
834 ;;
835 --enable-virtfs) virtfs="yes"
836 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100837 --disable-vnc) vnc="no"
838 ;;
839 --enable-vnc) vnc="yes"
840 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000841 --oss-lib=*) oss_lib="$optarg"
842 ;;
malc0c58ac12008-06-25 21:04:05 +0000843 --audio-drv-list=*) audio_drv_list="$optarg"
844 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800845 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
846 ;;
847 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100848 ;;
aurel32f8393942009-04-13 18:45:38 +0000849 --enable-debug-tcg) debug_tcg="yes"
850 ;;
851 --disable-debug-tcg) debug_tcg="no"
852 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100853 --enable-debug)
854 # Enable debugging options that aren't excessively noisy
855 debug_tcg="yes"
856 debug="yes"
857 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500858 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100859 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000860 --enable-sparse) sparse="yes"
861 ;;
862 --disable-sparse) sparse="no"
863 ;;
aliguori1625af82009-04-05 17:41:02 +0000864 --disable-strip) strip_opt="no"
865 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000866 --disable-vnc-sasl) vnc_sasl="no"
867 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200868 --enable-vnc-sasl) vnc_sasl="yes"
869 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200870 --disable-vnc-jpeg) vnc_jpeg="no"
871 ;;
872 --enable-vnc-jpeg) vnc_jpeg="yes"
873 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200874 --disable-vnc-png) vnc_png="no"
875 ;;
876 --enable-vnc-png) vnc_png="yes"
877 ;;
bellard443f1372004-06-04 11:13:20 +0000878 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000879 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200880 --disable-uuid) uuid="no"
881 ;;
882 --enable-uuid) uuid="yes"
883 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000884 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000885 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200886 --enable-vde) vde="yes"
887 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100888 --disable-netmap) netmap="no"
889 ;;
890 --enable-netmap) netmap="yes"
891 ;;
aliguorie37630c2009-04-22 15:19:10 +0000892 --disable-xen) xen="no"
893 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200894 --enable-xen) xen="yes"
895 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000896 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
897 ;;
898 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
899 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +0000900 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
901 ;;
902 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
903 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000904 --disable-brlapi) brlapi="no"
905 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200906 --enable-brlapi) brlapi="yes"
907 ;;
balrogfb599c92008-09-28 23:49:55 +0000908 --disable-bluez) bluez="no"
909 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200910 --enable-bluez) bluez="yes"
911 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000912 --disable-kvm) kvm="no"
913 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200914 --enable-kvm) kvm="yes"
915 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200916 --disable-tcg-interpreter) tcg_interpreter="no"
917 ;;
918 --enable-tcg-interpreter) tcg_interpreter="yes"
919 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500920 --disable-cap-ng) cap_ng="no"
921 ;;
922 --enable-cap-ng) cap_ng="yes"
923 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100924 --disable-spice) spice="no"
925 ;;
926 --enable-spice) spice="yes"
927 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100928 --disable-libiscsi) libiscsi="no"
929 ;;
930 --enable-libiscsi) libiscsi="yes"
931 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100932 --disable-libnfs) libnfs="no"
933 ;;
934 --enable-libnfs) libnfs="yes"
935 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000936 --enable-profiler) profiler="yes"
937 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400938 --disable-cocoa) cocoa="no"
939 ;;
malcc2de5c92008-06-28 19:13:06 +0000940 --enable-cocoa)
941 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000942 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000943 ;;
pbrookcad25d62006-03-19 16:31:11 +0000944 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000945 ;;
pbrookcad25d62006-03-19 16:31:11 +0000946 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000947 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000948 --disable-user)
949 linux_user="no" ;
950 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000951 ;;
952 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000953 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000954 ;;
ths831b7822007-01-18 20:06:33 +0000955 --enable-linux-user) linux_user="yes"
956 ;;
blueswir184778502008-10-26 20:33:16 +0000957 --disable-bsd-user) bsd_user="no"
958 ;;
959 --enable-bsd-user) bsd_user="yes"
960 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200961 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300962 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200963 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300964 ;;
bellard85aa5182007-11-11 20:17:03 +0000965 --enable-werror) werror="yes"
966 ;;
967 --disable-werror) werror="no"
968 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100969 --enable-stack-protector) stack_protector="yes"
970 ;;
971 --disable-stack-protector) stack_protector="no"
972 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000973 --disable-curses) curses="no"
974 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200975 --enable-curses) curses="yes"
976 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200977 --disable-curl) curl="no"
978 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200979 --enable-curl) curl="yes"
980 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200981 --disable-fdt) fdt="no"
982 ;;
983 --enable-fdt) fdt="yes"
984 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +0200985 --disable-linux-aio) linux_aio="no"
986 ;;
987 --enable-linux-aio) linux_aio="yes"
988 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -0700989 --disable-attr) attr="no"
990 ;;
991 --enable-attr) attr="yes"
992 ;;
ths77755342008-11-27 15:45:16 +0000993 --disable-blobs) blobs="no"
994 ;;
pbrook4a19f1e2009-04-07 23:17:49 +0000995 --with-pkgversion=*) pkgversion=" ($optarg)"
996 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +0100997 --with-coroutine=*) coroutine="$optarg"
998 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200999 --disable-coroutine-pool) coroutine_pool="no"
1000 ;;
1001 --enable-coroutine-pool) coroutine_pool="yes"
1002 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001003 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001004 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001005 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001006 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001007 --disable-vhost-net) vhost_net="no"
1008 ;;
1009 --enable-vhost-net) vhost_net="yes"
1010 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001011 --disable-vhost-scsi) vhost_scsi="no"
1012 ;;
1013 --enable-vhost-scsi) vhost_scsi="yes"
1014 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001015 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001016 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001017 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001018 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001019 --disable-rbd) rbd="no"
1020 ;;
1021 --enable-rbd) rbd="yes"
1022 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001023 --disable-xfsctl) xfs="no"
1024 ;;
1025 --enable-xfsctl) xfs="yes"
1026 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001027 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001028 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001029 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001030 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001031 --disable-libusb) libusb="no"
1032 ;;
1033 --enable-libusb) libusb="yes"
1034 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001035 --disable-usb-redir) usb_redir="no"
1036 ;;
1037 --enable-usb-redir) usb_redir="yes"
1038 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001039 --disable-zlib-test) zlib="no"
1040 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001041 --disable-lzo) lzo="no"
1042 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001043 --enable-lzo) lzo="yes"
1044 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001045 --disable-snappy) snappy="no"
1046 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001047 --enable-snappy) snappy="yes"
1048 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001049 --disable-bzip2) bzip2="no"
1050 ;;
1051 --enable-bzip2) bzip2="yes"
1052 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001053 --enable-guest-agent) guest_agent="yes"
1054 ;;
1055 --disable-guest-agent) guest_agent="no"
1056 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001057 --enable-guest-agent-msi) guest_agent_msi="yes"
1058 ;;
1059 --disable-guest-agent-msi) guest_agent_msi="no"
1060 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001061 --with-vss-sdk) vss_win32_sdk=""
1062 ;;
1063 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1064 ;;
1065 --without-vss-sdk) vss_win32_sdk="no"
1066 ;;
1067 --with-win-sdk) win_sdk=""
1068 ;;
1069 --with-win-sdk=*) win_sdk="$optarg"
1070 ;;
1071 --without-win-sdk) win_sdk="no"
1072 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001073 --enable-tools) want_tools="yes"
1074 ;;
1075 --disable-tools) want_tools="no"
1076 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001077 --enable-seccomp) seccomp="yes"
1078 ;;
1079 --disable-seccomp) seccomp="no"
1080 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301081 --disable-glusterfs) glusterfs="no"
1082 ;;
1083 --enable-glusterfs) glusterfs="yes"
1084 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001085 --disable-archipelago) archipelago="no"
1086 ;;
1087 --enable-archipelago) archipelago="yes"
1088 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001089 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1090 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001091 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001092 --disable-gtk) gtk="no"
1093 ;;
1094 --enable-gtk) gtk="yes"
1095 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001096 --disable-gnutls) gnutls="no"
1097 ;;
1098 --enable-gnutls) gnutls="yes"
1099 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001100 --disable-nettle) nettle="no"
1101 ;;
1102 --enable-nettle) nettle="yes"
1103 ;;
1104 --disable-gcrypt) gcrypt="no"
1105 ;;
1106 --enable-gcrypt) gcrypt="yes"
1107 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001108 --enable-rdma) rdma="yes"
1109 ;;
1110 --disable-rdma) rdma="no"
1111 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001112 --with-gtkabi=*) gtkabi="$optarg"
1113 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001114 --disable-vte) vte="no"
1115 ;;
1116 --enable-vte) vte="yes"
1117 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001118 --disable-virglrenderer) virglrenderer="no"
1119 ;;
1120 --enable-virglrenderer) virglrenderer="yes"
1121 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001122 --disable-tpm) tpm="no"
1123 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001124 --enable-tpm) tpm="yes"
1125 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001126 --disable-libssh2) libssh2="no"
1127 ;;
1128 --enable-libssh2) libssh2="yes"
1129 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001130 --enable-vhdx) vhdx="yes"
1131 ;;
1132 --disable-vhdx) vhdx="no"
1133 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001134 --disable-numa) numa="no"
1135 ;;
1136 --enable-numa) numa="yes"
1137 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001138 --disable-tcmalloc) tcmalloc="no"
1139 ;;
1140 --enable-tcmalloc) tcmalloc="yes"
1141 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001142 --disable-jemalloc) jemalloc="no"
1143 ;;
1144 --enable-jemalloc) jemalloc="yes"
1145 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001146 *)
1147 echo "ERROR: unknown option $opt"
1148 echo "Try '$0 --help' for more information"
1149 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001150 ;;
bellard7d132992003-03-06 23:23:54 +00001151 esac
1152done
1153
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001154if ! has $python; then
1155 error_exit "Python not found. Use --python=/path/to/python"
1156fi
1157
1158# Note that if the Python conditional here evaluates True we will exit
1159# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001160if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1161 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001162 "Note that Python 3 or later is not yet supported." \
1163 "Use --python=/path/to/python to specify a supported Python."
1164fi
1165
Markus Armbrusterfec21032015-09-04 21:53:03 +02001166# Suppress writing compiled files
1167python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001168
bellard40293e52008-01-31 11:32:10 +00001169case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001170 ppc)
1171 CPU_CFLAGS="-m32"
1172 LDFLAGS="-m32 $LDFLAGS"
1173 ;;
1174 ppc64)
1175 CPU_CFLAGS="-m64"
1176 LDFLAGS="-m64 $LDFLAGS"
1177 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001178 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001179 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001180 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001181 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001182 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001183 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001184 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001185 ;;
ths76d83bd2007-11-18 21:22:10 +00001186 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001187 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001188 LDFLAGS="-m31 $LDFLAGS"
1189 ;;
1190 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001191 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001192 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001193 ;;
bellard40293e52008-01-31 11:32:10 +00001194 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001195 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001196 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001197 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001198 ;;
1199 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001200 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001201 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001202 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001203 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001204 x32)
1205 CPU_CFLAGS="-mx32"
1206 LDFLAGS="-mx32 $LDFLAGS"
1207 cc_i386='$(CC) -m32'
1208 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001209 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001210esac
1211
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001212QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1213EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1214
Peter Maydell60e0df22011-05-03 14:50:13 +01001215default_target_list=""
1216
Peter Maydell6e92f822013-05-20 16:16:15 +01001217mak_wilds=""
1218
1219if [ "$softmmu" = "yes" ]; then
1220 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001221fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001222if [ "$linux_user" = "yes" ]; then
1223 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001224fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001225if [ "$bsd_user" = "yes" ]; then
1226 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001227fi
1228
Peter Maydell6e92f822013-05-20 16:16:15 +01001229for config in $mak_wilds; do
1230 default_target_list="${default_target_list} $(basename "$config" .mak)"
1231done
1232
pbrookaf5db582006-04-08 14:26:41 +00001233if test x"$show_help" = x"yes" ; then
1234cat << EOF
1235
1236Usage: configure [options]
1237Options: [defaults in brackets after descriptions]
1238
Stefan Weil08fb77e2013-12-18 22:09:39 +01001239Standard options:
1240 --help print this message
1241 --prefix=PREFIX install in PREFIX [$prefix]
1242 --interp-prefix=PREFIX where to find shared libraries, etc.
1243 use %M for cpu name [$interp_prefix]
1244 --target-list=LIST set target list (default: build everything)
1245$(echo Available targets: $default_target_list | \
1246 fold -s -w 53 | sed -e 's/^/ /')
1247
1248Advanced options (experts only):
1249 --source-path=PATH path of source code [$source_path]
1250 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1251 --cc=CC use C compiler CC [$cc]
1252 --iasl=IASL use ACPI compiler IASL [$iasl]
1253 --host-cc=CC use C compiler CC [$host_cc] for code run at
1254 build time
1255 --cxx=CXX use C++ compiler CXX [$cxx]
1256 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1257 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1258 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1259 --make=MAKE use specified make [$make]
1260 --install=INSTALL use specified install [$install]
1261 --python=PYTHON use specified python [$python]
1262 --smbd=SMBD use specified smbd [$smbd]
1263 --static enable static build [$static]
1264 --mandir=PATH install man pages in PATH
1265 --datadir=PATH install firmware in PATH$confsuffix
1266 --docdir=PATH install documentation in PATH$confsuffix
1267 --bindir=PATH install binaries in PATH
1268 --libdir=PATH install libraries in PATH
1269 --sysconfdir=PATH install config in PATH$confsuffix
1270 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001271 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001272 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001273 --disable-strip disable stripping binaries
1274 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001275 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001276 --audio-drv-list=LIST set audio drivers list:
1277 Available drivers: $audio_possible_drivers
1278 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1279 --block-drv-rw-whitelist=L
1280 set block driver read-write whitelist
1281 (affects only QEMU, not qemu-img)
1282 --block-drv-ro-whitelist=L
1283 set block driver read-only whitelist
1284 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001285 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001286 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1287 --with-trace-file=NAME Full PATH,NAME of file to store traces
1288 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001289 --disable-slirp disable SLIRP userspace network connectivity
1290 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1291 --oss-lib path to OSS library
1292 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001293 --with-coroutine=BACKEND coroutine backend. Supported options:
1294 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001295 --enable-gcov enable test coverage analysis with gcov
1296 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001297 --disable-blobs disable installing provided firmware blobs
1298 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1299 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1300
1301Optional features, enabled with --enable-FEATURE and
1302disabled with --disable-FEATURE, default is enabled if available:
1303
1304 system all system emulation targets
1305 user supported user emulation targets
1306 linux-user all linux usermode emulation targets
1307 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001308 docs build documentation
1309 guest-agent build the QEMU Guest Agent
1310 guest-agent-msi build guest agent Windows MSI installation package
1311 pie Position Independent Executables
1312 modules modules support
1313 debug-tcg TCG debugging (default is disabled)
1314 debug-info debugging information
1315 sparse sparse checker
1316
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001317 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001318 nettle nettle cryptography support
1319 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001320 sdl SDL UI
1321 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1322 gtk gtk UI
1323 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1324 vte vte support for the gtk UI
1325 curses curses UI
1326 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001327 vnc-sasl SASL encryption for VNC server
1328 vnc-jpeg JPEG lossy compression for VNC server
1329 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001330 cocoa Cocoa UI (Mac OS X only)
1331 virtfs VirtFS
1332 xen xen backend driver support
1333 xen-pci-passthrough
1334 brlapi BrlAPI (Braile)
1335 curl curl connectivity
1336 fdt fdt device tree
1337 bluez bluez stack connectivity
1338 kvm KVM acceleration support
1339 rdma RDMA-based migration support
1340 uuid uuid support
1341 vde support for vde network
1342 netmap support for netmap network
1343 linux-aio Linux AIO support
1344 cap-ng libcap-ng support
1345 attr attr and xattr support
1346 vhost-net vhost-net acceleration support
1347 spice spice
1348 rbd rados block device (rbd)
1349 libiscsi iscsi support
1350 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001351 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001352 libusb libusb (for usb passthrough)
1353 usb-redir usb network redirection support
1354 lzo support of lzo compression library
1355 snappy support of snappy compression library
1356 bzip2 support of bzip2 compression library
1357 (for reading bzip2-compressed dmg images)
1358 seccomp seccomp support
1359 coroutine-pool coroutine freelist (better performance)
1360 glusterfs GlusterFS backend
1361 archipelago Archipelago backend
1362 tpm TPM support
1363 libssh2 ssh block device support
1364 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001365 numa libnuma support
1366 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001367 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001368
1369NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001370EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001371exit 0
pbrookaf5db582006-04-08 14:26:41 +00001372fi
1373
Peter Maydell359bc952011-12-24 13:07:25 +00001374# Now we have handled --enable-tcg-interpreter and know we're not just
1375# printing the help message, bail out if the host CPU isn't supported.
1376if test "$ARCH" = "unknown"; then
1377 if test "$tcg_interpreter" = "yes" ; then
1378 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1379 ARCH=tci
1380 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001381 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001382 fi
1383fi
1384
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001385# Consult white-list to determine whether to enable werror
1386# by default. Only enable by default for git builds
1387z_version=`cut -f3 -d. $source_path/VERSION`
1388
1389if test -z "$werror" ; then
1390 if test -d "$source_path/.git" -a \
1391 "$linux" = "yes" ; then
1392 werror="yes"
1393 else
1394 werror="no"
1395 fi
1396fi
1397
Paolo Bonzini8d050952010-12-23 11:43:52 +01001398# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001399write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001400if compile_object ; then
1401 : C compiler works ok
1402else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001403 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001404fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001405if ! compile_prog ; then
1406 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1407fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001408
Peter Maydell98b21dc2014-02-20 15:10:16 +00001409# Check that the C++ compiler exists and works with the C compiler
1410if has $cxx; then
1411 cat > $TMPC <<EOF
1412int c_function(void);
1413int main(void) { return c_function(); }
1414EOF
1415
1416 compile_object
1417
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001418 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001419extern "C" {
1420 int c_function(void);
1421}
1422int c_function(void) { return 42; }
1423EOF
1424
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001425 update_cxxflags
1426
1427 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001428 # C++ compiler $cxx works ok with C compiler $cc
1429 :
1430 else
1431 echo "C++ compiler $cxx does not work with C compiler $cc"
1432 echo "Disabling C++ specific optional code"
1433 cxx=
1434 fi
1435else
1436 echo "No C++ compiler available; disabling C++ specific optional code"
1437 cxx=
1438fi
1439
Paolo Bonzini8d050952010-12-23 11:43:52 +01001440gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1441gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1442gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001443gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001444gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001445gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001446# Note that we do not add -Werror to gcc_flags here, because that would
1447# enable it for all configure tests. If a configure test failed due
1448# to -Werror this would just silently disable some features,
1449# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001450
1451cc_has_warning_flag() {
1452 write_c_skeleton;
1453
Peter Maydella1d29d62012-10-27 22:19:07 +01001454 # Use the positive sense of the flag when testing for -Wno-wombat
1455 # support (gcc will happily accept the -Wno- form of unknown
1456 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001457 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1458 compile_prog "-Werror $optflag" ""
1459}
1460
1461for flag in $gcc_flags; do
1462 if cc_has_warning_flag $flag ; then
1463 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001464 fi
1465done
1466
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001467if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001468 cat > $TMPC << EOF
1469int main(int argc, char *argv[])
1470{
1471 char arr[64], *p = arr, *c = argv[0];
1472 while (*c) {
1473 *p++ = *c++;
1474 }
1475 return 0;
1476}
1477EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001478 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001479 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001480 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001481 # We need to check both a compile and a link, since some compiler
1482 # setups fail only on a .c->.o compile and some only at link time
1483 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1484 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001485 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001486 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001487 break
1488 fi
1489 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001490 if test "$stack_protector" = yes; then
1491 if test $sp_on = 0; then
1492 error_exit "Stack protector not supported"
1493 fi
1494 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001495fi
1496
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001497# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1498# large functions that use global variables. The bug is in all releases of
1499# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1500# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1501cat > $TMPC << EOF
1502#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1503int main(void) { return 0; }
1504#else
1505#error No bug in this compiler.
1506#endif
1507EOF
1508if compile_prog "-Werror -fno-gcse" "" ; then
1509 TRANSLATE_OPT_CFLAGS=-fno-gcse
1510fi
1511
Avi Kivity40d64442011-11-15 20:12:17 +02001512if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001513 if test "$modules" = "yes" ; then
1514 error_exit "static and modules are mutually incompatible"
1515 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001516 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001517 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001518 else
1519 pie="no"
1520 fi
1521fi
1522
Emilio G. Cota768b7852015-04-29 13:09:02 +02001523# Unconditional check for compiler __thread support
1524 cat > $TMPC << EOF
1525static __thread int tls_var;
1526int main(void) { return tls_var; }
1527EOF
1528
1529if ! compile_prog "-Werror" "" ; then
1530 error_exit "Your compiler does not support the __thread specifier for " \
1531 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1532fi
1533
Avi Kivity40d64442011-11-15 20:12:17 +02001534if test "$pie" = ""; then
1535 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001536 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001537 ;;
1538 *)
1539 pie="no"
1540 ;;
1541 esac
1542fi
1543
1544if test "$pie" != "no" ; then
1545 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001546
1547#ifdef __linux__
1548# define THREAD __thread
1549#else
1550# define THREAD
1551#endif
1552
1553static THREAD int tls_var;
1554
1555int main(void) { return tls_var; }
1556
Avi Kivity40d64442011-11-15 20:12:17 +02001557EOF
1558 if compile_prog "-fPIE -DPIE" "-pie"; then
1559 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1560 LDFLAGS="-pie $LDFLAGS"
1561 pie="yes"
1562 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1563 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1564 fi
1565 else
1566 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001567 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001568 else
1569 echo "Disabling PIE due to missing toolchain support"
1570 pie="no"
1571 fi
1572 fi
Brad46eef332013-12-10 19:49:08 -05001573
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001574 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001575 CFLAGS_NOPIE="-fno-pie"
1576 LDFLAGS_NOPIE="-nopie"
1577 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001578fi
1579
Paolo Bonzini09dada42013-04-17 16:26:47 +02001580##########################################
1581# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1582# use i686 as default anyway, but for those that don't, an explicit
1583# specification is necessary
1584
1585if test "$cpu" = "i386"; then
1586 cat > $TMPC << EOF
1587static int sfaa(int *ptr)
1588{
1589 return __sync_fetch_and_and(ptr, 0);
1590}
1591
1592int main(void)
1593{
1594 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001595 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001596 sfaa(&val);
1597 return val;
1598}
1599EOF
1600 if ! compile_prog "" "" ; then
1601 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1602 fi
1603fi
1604
1605#########################################
bellardec530c82006-04-25 22:36:06 +00001606# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001607
bellardec530c82006-04-25 22:36:06 +00001608if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001609 if has $install; then
1610 :
1611 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001612 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1613 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1614 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001615 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001616 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001617 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1618 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1619 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001620 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001621 if has ar; then
1622 :
1623 else
bellardec530c82006-04-25 22:36:06 +00001624 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001625 error_exit "No path includes ar" \
1626 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001627 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001628 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001629 fi
ths5fafdf22007-09-16 21:08:06 +00001630fi
bellardec530c82006-04-25 22:36:06 +00001631
Stefan Weilafb63eb2012-09-26 22:04:38 +02001632if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001633 target_list="$default_target_list"
1634else
1635 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001636fi
Peter Maydell25b48332013-05-20 16:16:16 +01001637
1638# Check that we recognised the target name; this allows a more
1639# friendly error message than if we let it fall through.
1640for target in $target_list; do
1641 case " $default_target_list " in
1642 *" $target "*)
1643 ;;
1644 *)
1645 error_exit "Unknown target name '$target'"
1646 ;;
1647 esac
1648done
1649
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001650# see if system emulation was really requested
1651case " $target_list " in
1652 *"-softmmu "*) softmmu=yes
1653 ;;
1654 *) softmmu=no
1655 ;;
1656esac
bellard5327cf42005-01-10 23:18:50 +00001657
Juan Quintela249247c2009-08-12 18:20:25 +02001658feature_not_found() {
1659 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001660 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001661
Peter Maydell76ad07a2013-04-08 12:11:26 +01001662 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001663 "configure was not able to find it." \
1664 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001665}
1666
bellard7d132992003-03-06 23:23:54 +00001667# ---
1668# big/little endian test
1669cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001670short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1671short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1672extern int foo(short *, short *);
1673int main(int argc, char *argv[]) {
1674 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001675}
1676EOF
1677
Mike Frysinger61cc9192013-06-30 23:30:18 -04001678if compile_object ; then
1679 if grep -q BiGeNdIaN $TMPO ; then
1680 bigendian="yes"
1681 elif grep -q LiTtLeEnDiAn $TMPO ; then
1682 bigendian="no"
1683 else
1684 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001685 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001686else
1687 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001688fi
1689
Juan Quintelab0a47e72009-08-12 18:29:49 +02001690##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001691# cocoa implies not SDL or GTK
1692# (the cocoa UI code currently assumes it is always the active UI
1693# and doesn't interact well with other UI frontend code)
1694if test "$cocoa" = "yes"; then
1695 if test "$sdl" = "yes"; then
1696 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1697 fi
1698 if test "$gtk" = "yes"; then
1699 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1700 fi
1701 gtk=no
1702 sdl=no
1703fi
1704
1705##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001706# L2TPV3 probe
1707
1708cat > $TMPC <<EOF
1709#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001710#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001711int main(void) { return sizeof(struct mmsghdr); }
1712EOF
1713if compile_prog "" "" ; then
1714 l2tpv3=yes
1715else
1716 l2tpv3=no
1717fi
1718
1719##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001720# MinGW / Mingw-w64 localtime_r/gmtime_r check
1721
1722if test "$mingw32" = "yes"; then
1723 # Some versions of MinGW / Mingw-w64 lack localtime_r
1724 # and gmtime_r entirely.
1725 #
1726 # Some versions of Mingw-w64 define a macro for
1727 # localtime_r/gmtime_r.
1728 #
1729 # Some versions of Mingw-w64 will define functions
1730 # for localtime_r/gmtime_r, but only if you have
1731 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1732 # though, unistd.h and pthread.h both define
1733 # that for you.
1734 #
1735 # So this #undef localtime_r and #include <unistd.h>
1736 # are not in fact redundant.
1737cat > $TMPC << EOF
1738#include <unistd.h>
1739#include <time.h>
1740#undef localtime_r
1741int main(void) { localtime_r(NULL, NULL); return 0; }
1742EOF
1743 if compile_prog "" "" ; then
1744 localtime_r="yes"
1745 else
1746 localtime_r="no"
1747 fi
1748fi
1749
1750##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001751# pkg-config probe
1752
1753if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001754 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001755fi
1756
1757##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001758# NPTL probe
1759
Peter Maydell24cb36a2013-07-16 18:45:00 +01001760if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001761 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001762#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001763#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001764int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001765#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1766#error bork
1767#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001768 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001769}
1770EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001771 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001772 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001773 fi
pbrookbd0c5662008-05-29 14:34:11 +00001774fi
1775
bellard11d9f692004-04-02 20:55:59 +00001776##########################################
Liang Li99f2dbd2016-03-08 13:53:16 +08001777# avx2 optimization requirement check
1778
1779cat > $TMPC << EOF
1780static void bar(void) {}
1781static void *bar_ifunc(void) {return (void*) bar;}
1782static void foo(void) __attribute__((ifunc("bar_ifunc")));
1783int main(void) { foo(); return 0; }
1784EOF
1785if compile_prog "-mavx2" "" ; then
1786 if readelf --syms $TMPE |grep "IFUNC.*foo" >/dev/null 2>&1; then
1787 avx2_opt="yes"
1788 fi
1789fi
1790
1791#########################################
balrogac629222008-10-11 09:56:04 +00001792# zlib check
1793
Alon Levy1ece9902011-07-26 12:30:40 +03001794if test "$zlib" != "no" ; then
1795 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001796#include <zlib.h>
1797int main(void) { zlibVersion(); return 0; }
1798EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001799 if compile_prog "" "-lz" ; then
1800 :
1801 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001802 error_exit "zlib check failed" \
1803 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001804 fi
balrogac629222008-10-11 09:56:04 +00001805fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001806LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001807
1808##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001809# lzo check
1810
1811if test "$lzo" != "no" ; then
1812 cat > $TMPC << EOF
1813#include <lzo/lzo1x.h>
1814int main(void) { lzo_version(); return 0; }
1815EOF
1816 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001817 libs_softmmu="$libs_softmmu -llzo2"
1818 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001819 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001820 if test "$lzo" = "yes"; then
1821 feature_not_found "liblzo2" "Install liblzo2 devel"
1822 fi
1823 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001824 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001825fi
1826
1827##########################################
1828# snappy check
1829
1830if test "$snappy" != "no" ; then
1831 cat > $TMPC << EOF
1832#include <snappy-c.h>
1833int main(void) { snappy_max_compressed_length(4096); return 0; }
1834EOF
1835 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001836 libs_softmmu="$libs_softmmu -lsnappy"
1837 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001838 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001839 if test "$snappy" = "yes"; then
1840 feature_not_found "libsnappy" "Install libsnappy devel"
1841 fi
1842 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001843 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001844fi
1845
1846##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001847# bzip2 check
1848
1849if test "$bzip2" != "no" ; then
1850 cat > $TMPC << EOF
1851#include <bzlib.h>
1852int main(void) { BZ2_bzlibVersion(); return 0; }
1853EOF
1854 if compile_prog "" "-lbz2" ; then
1855 bzip2="yes"
1856 else
1857 if test "$bzip2" = "yes"; then
1858 feature_not_found "libbzip2" "Install libbzip2 devel"
1859 fi
1860 bzip2="no"
1861 fi
1862fi
1863
1864##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001865# libseccomp check
1866
1867if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04001868 case "$cpu" in
1869 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06001870 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04001871 ;;
1872 arm|aarch64)
1873 libseccomp_minver="2.2.3"
1874 ;;
1875 *)
1876 libseccomp_minver=""
1877 ;;
1878 esac
1879
1880 if test "$libseccomp_minver" != "" &&
1881 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001882 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001883 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Andrew Jones693e5912015-09-30 11:59:18 -04001884 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03001885 else
Andrew Jones693e5912015-09-30 11:59:18 -04001886 if test "$seccomp" = "yes" ; then
1887 if test "$libseccomp_minver" != "" ; then
1888 feature_not_found "libseccomp" \
1889 "Install libseccomp devel >= $libseccomp_minver"
1890 else
1891 feature_not_found "libseccomp" \
1892 "libseccomp is not supported for host cpu $cpu"
1893 fi
1894 fi
1895 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001896 fi
1897fi
1898##########################################
aliguorie37630c2009-04-22 15:19:10 +00001899# xen probe
1900
Juan Quintelafc321b42009-08-12 18:29:55 +02001901if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001902 xen_libs="-lxenstore -lxenctrl -lxenguest"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001903 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001904
Stefan Weil50ced5b2011-12-17 09:27:39 +01001905 # First we test whether Xen headers and libraries are available.
1906 # If no, we are done and there is no Xen support.
1907 # If yes, more tests are run to detect the Xen version.
1908
1909 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001910 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001911#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001912int main(void) {
1913 return 0;
1914}
1915EOF
1916 if ! compile_prog "" "$xen_libs" ; then
1917 # Xen not found
1918 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001919 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001920 fi
1921 xen=no
1922
1923 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001924 elif
1925 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001926/*
1927 * If we have stable libs the we don't want the libxc compat
1928 * layers, regardless of what CFLAGS we may have been given.
1929 */
1930#undef XC_WANT_COMPAT_EVTCHN_API
1931#undef XC_WANT_COMPAT_GNTTAB_API
1932#undef XC_WANT_COMPAT_MAP_FOREIGN_API
1933#include <xenctrl.h>
1934#include <xenstore.h>
1935#include <xenevtchn.h>
1936#include <xengnttab.h>
1937#include <xenforeignmemory.h>
1938#include <stdint.h>
1939#include <xen/hvm/hvm_info_table.h>
1940#if !defined(HVM_MAX_VCPUS)
1941# error HVM_MAX_VCPUS not defined
1942#endif
1943int main(void) {
1944 xc_interface *xc = NULL;
1945 xenforeignmemory_handle *xfmem;
1946 xenevtchn_handle *xe;
1947 xengnttab_handle *xg;
1948 xen_domain_handle_t handle;
1949
1950 xs_daemon_open();
1951
1952 xc = xc_interface_open(0, 0, 0);
1953 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1954 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1955 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1956 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1957 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1958
1959 xfmem = xenforeignmemory_open(0, 0);
1960 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
1961
1962 xe = xenevtchn_open(0, 0);
1963 xenevtchn_fd(xe);
1964
1965 xg = xengnttab_open(0, 0);
1966 xengnttab_map_grant_ref(xg, 0, 0, 0);
1967
1968 return 0;
1969}
1970EOF
1971 compile_prog "" "$xen_libs $xen_stable_libs"
1972 then
1973 xen_ctrl_version=471
1974 xen=yes
1975 elif
1976 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001977#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00001978#include <stdint.h>
1979int main(void) {
1980 xc_interface *xc = NULL;
1981 xen_domain_handle_t handle;
1982 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1983 return 0;
1984}
1985EOF
1986 compile_prog "" "$xen_libs"
1987 then
1988 xen_ctrl_version=470
1989 xen=yes
1990
1991 # Xen 4.6
1992 elif
1993 cat > $TMPC <<EOF &&
1994#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001995#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001996#include <stdint.h>
1997#include <xen/hvm/hvm_info_table.h>
1998#if !defined(HVM_MAX_VCPUS)
1999# error HVM_MAX_VCPUS not defined
2000#endif
2001int main(void) {
2002 xc_interface *xc;
2003 xs_daemon_open();
2004 xc = xc_interface_open(0, 0, 0);
2005 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2006 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002007 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002008 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002009 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002010 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002011 return 0;
2012}
2013EOF
2014 compile_prog "" "$xen_libs"
2015 then
2016 xen_ctrl_version=460
2017 xen=yes
2018
2019 # Xen 4.5
2020 elif
2021 cat > $TMPC <<EOF &&
2022#include <xenctrl.h>
2023#include <xenstore.h>
2024#include <stdint.h>
2025#include <xen/hvm/hvm_info_table.h>
2026#if !defined(HVM_MAX_VCPUS)
2027# error HVM_MAX_VCPUS not defined
2028#endif
2029int main(void) {
2030 xc_interface *xc;
2031 xs_daemon_open();
2032 xc = xc_interface_open(0, 0, 0);
2033 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2034 xc_gnttab_open(NULL, 0);
2035 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2036 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002037 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2038 return 0;
2039}
2040EOF
2041 compile_prog "" "$xen_libs"
2042 then
2043 xen_ctrl_version=450
2044 xen=yes
2045
2046 elif
2047 cat > $TMPC <<EOF &&
2048#include <xenctrl.h>
2049#include <xenstore.h>
2050#include <stdint.h>
2051#include <xen/hvm/hvm_info_table.h>
2052#if !defined(HVM_MAX_VCPUS)
2053# error HVM_MAX_VCPUS not defined
2054#endif
2055int main(void) {
2056 xc_interface *xc;
2057 xs_daemon_open();
2058 xc = xc_interface_open(0, 0, 0);
2059 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2060 xc_gnttab_open(NULL, 0);
2061 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2062 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002063 return 0;
2064}
2065EOF
2066 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002067 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002068 xen_ctrl_version=420
2069 xen=yes
2070
Juan Quintelab2266be2009-07-27 16:13:16 +02002071 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002072 if test "$xen" = "yes" ; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002073 feature_not_found "xen (unsupported version)" \
2074 "Install a supported xen (xen 4.2 or newer)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002075 fi
2076 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002077 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002078
2079 if test "$xen" = yes; then
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002080 if test $xen_ctrl_version -ge 471 ; then
2081 libs_softmmu="$xen_stable_libs $libs_softmmu"
2082 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002083 libs_softmmu="$xen_libs $libs_softmmu"
2084 fi
aliguorie37630c2009-04-22 15:19:10 +00002085fi
2086
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002087if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002088 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002089 xen_pci_passthrough=yes
2090 else
2091 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002092 error_exit "User requested feature Xen PCI Passthrough" \
2093 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002094 fi
2095 xen_pci_passthrough=no
2096 fi
2097fi
2098
Ian Campbell64a7ad62016-01-15 13:23:44 +00002099if test "$xen_pv_domain_build" = "yes" &&
2100 test "$xen" != "yes"; then
2101 error_exit "User requested Xen PV domain builder support" \
2102 "which requires Xen support."
2103fi
2104
aliguorie37630c2009-04-22 15:19:10 +00002105##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002106# Sparse probe
2107if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002108 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002109 sparse=yes
2110 else
2111 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002112 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002113 fi
2114 sparse=no
2115 fi
2116fi
2117
2118##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002119# X11 probe
2120x11_cflags=
2121x11_libs=-lX11
2122if $pkg_config --exists "x11"; then
2123 x11_cflags=`$pkg_config --cflags x11`
2124 x11_libs=`$pkg_config --libs x11`
2125fi
2126
2127##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002128# GTK probe
2129
Stefan Weil9e04c682014-05-17 16:29:18 +02002130if test "$gtkabi" = ""; then
2131 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2132 # Use 3.0 as a fallback if that is available.
2133 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2134 gtkabi=2.0
2135 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2136 gtkabi=3.0
2137 else
2138 gtkabi=2.0
2139 fi
2140fi
2141
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002142if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002143 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002144 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002145 if test "$gtkabi" = "3.0" ; then
2146 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002147 else
2148 gtkversion="2.18.0"
2149 fi
2150 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2151 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2152 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002153 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002154 gtk_cflags="$gtk_cflags $x11_cflags"
2155 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002156 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002157 libs_softmmu="$gtk_libs $libs_softmmu"
2158 gtk="yes"
2159 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002160 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002161 else
2162 gtk="no"
2163 fi
2164fi
2165
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002166
2167##########################################
2168# GNUTLS probe
2169
Peter Maydell37371292015-07-24 18:28:08 +01002170gnutls_works() {
2171 # Unfortunately some distros have bad pkg-config information for gnutls
2172 # such that it claims to exist but you get a compiler error if you try
2173 # to use the options returned by --libs. Specifically, Ubuntu for --static
2174 # builds doesn't work:
2175 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2176 #
2177 # So sanity check the cflags/libs before assuming gnutls can be used.
2178 if ! $pkg_config --exists "gnutls"; then
2179 return 1
2180 fi
2181
2182 write_c_skeleton
2183 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2184}
2185
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002186gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002187gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002188if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002189 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002190 gnutls_cflags=`$pkg_config --cflags gnutls`
2191 gnutls_libs=`$pkg_config --libs gnutls`
2192 libs_softmmu="$gnutls_libs $libs_softmmu"
2193 libs_tools="$gnutls_libs $libs_tools"
2194 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2195 gnutls="yes"
2196
2197 # gnutls_hash_init requires >= 2.9.10
2198 if $pkg_config --exists "gnutls >= 2.9.10"; then
2199 gnutls_hash="yes"
2200 else
2201 gnutls_hash="no"
2202 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002203
2204 if $pkg_config --exists 'gnutls >= 3.0'; then
2205 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002206 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002207 elif $pkg_config --exists 'gnutls >= 2.12'; then
2208 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002209 *gcrypt*)
2210 gnutls_gcrypt=yes
2211 gnutls_nettle=no
2212 ;;
2213 *nettle*)
2214 gnutls_gcrypt=no
2215 gnutls_nettle=yes
2216 ;;
2217 *)
2218 gnutls_gcrypt=yes
2219 gnutls_nettle=no
2220 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002221 esac
2222 else
2223 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002224 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002225 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002226 elif test "$gnutls" = "yes"; then
2227 feature_not_found "gnutls" "Install gnutls devel"
2228 else
2229 gnutls="no"
2230 gnutls_hash="no"
2231 fi
2232else
2233 gnutls_hash="no"
2234fi
2235
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002236
2237# If user didn't give a --disable/enable-gcrypt flag,
2238# then mark as disabled if user requested nettle
2239# explicitly, or if gnutls links to nettle
2240if test -z "$gcrypt"
2241then
2242 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2243 then
2244 gcrypt="no"
2245 fi
2246fi
2247
2248# If user didn't give a --disable/enable-nettle flag,
2249# then mark as disabled if user requested gcrypt
2250# explicitly, or if gnutls links to gcrypt
2251if test -z "$nettle"
2252then
2253 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2254 then
2255 nettle="no"
2256 fi
2257fi
2258
2259has_libgcrypt_config() {
2260 if ! has "libgcrypt-config"
2261 then
2262 return 1
2263 fi
2264
2265 if test -n "$cross_prefix"
2266 then
2267 host=`libgcrypt-config --host`
2268 if test "$host-" != $cross_prefix
2269 then
2270 return 1
2271 fi
2272 fi
2273
2274 return 0
2275}
2276
2277if test "$gcrypt" != "no"; then
2278 if has_libgcrypt_config; then
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002279 gcrypt_cflags=`libgcrypt-config --cflags`
2280 gcrypt_libs=`libgcrypt-config --libs`
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002281 # Debian has remove -lgpg-error from libgcrypt-config
2282 # as it "spreads unnecessary dependencies" which in
2283 # turn breaks static builds...
2284 if test "$static" = "yes"
2285 then
2286 gcrypt_libs="$gcrypt_libs -lgpg-error"
2287 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002288 libs_softmmu="$gcrypt_libs $libs_softmmu"
2289 libs_tools="$gcrypt_libs $libs_tools"
2290 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002291 gcrypt="yes"
2292 if test -z "$nettle"; then
2293 nettle="no"
2294 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002295 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002296 if test "$gcrypt" = "yes"; then
2297 feature_not_found "gcrypt" "Install gcrypt devel"
2298 else
2299 gcrypt="no"
2300 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002301 fi
2302fi
2303
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002304
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002305if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002306 if $pkg_config --exists "nettle"; then
2307 nettle_cflags=`$pkg_config --cflags nettle`
2308 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002309 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002310 libs_softmmu="$nettle_libs $libs_softmmu"
2311 libs_tools="$nettle_libs $libs_tools"
2312 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002313 nettle="yes"
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002314 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002315 if test "$nettle" = "yes"; then
2316 feature_not_found "nettle" "Install nettle devel"
2317 else
2318 nettle="no"
2319 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002320 fi
2321fi
2322
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002323if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2324then
2325 error_exit "Only one of gcrypt & nettle can be enabled"
2326fi
2327
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002328##########################################
2329# libtasn1 - only for the TLS creds/session test suite
2330
2331tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002332tasn1_cflags=""
2333tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002334if $pkg_config --exists "libtasn1"; then
2335 tasn1_cflags=`$pkg_config --cflags libtasn1`
2336 tasn1_libs=`$pkg_config --libs libtasn1`
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002337else
2338 tasn1=no
2339fi
2340
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002341
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002342##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002343# getifaddrs (for tests/test-io-channel-socket )
2344
2345have_ifaddrs_h=yes
2346if ! check_include "ifaddrs.h" ; then
2347 have_ifaddrs_h=no
2348fi
2349
2350##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002351# VTE probe
2352
2353if test "$vte" != "no"; then
2354 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002355 vtepackage="vte-2.90"
2356 vteversion="0.32.0"
2357 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002358 vtepackage="vte"
2359 vteversion="0.24.0"
2360 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002361 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2362 vte_cflags=`$pkg_config --cflags $vtepackage`
2363 vte_libs=`$pkg_config --libs $vtepackage`
2364 libs_softmmu="$vte_libs $libs_softmmu"
2365 vte="yes"
2366 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002367 if test "$gtkabi" = "3.0"; then
2368 feature_not_found "vte" "Install libvte-2.90 devel"
2369 else
2370 feature_not_found "vte" "Install libvte devel"
2371 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002372 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002373 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002374 fi
2375fi
2376
2377##########################################
bellard11d9f692004-04-02 20:55:59 +00002378# SDL probe
2379
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002380# Look for sdl configuration program (pkg-config or sdl-config). Try
2381# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002382
2383if test $sdlabi = "2.0"; then
2384 sdl_config=$sdl2_config
2385 sdlname=sdl2
2386 sdlconfigname=sdl2_config
2387else
2388 sdlname=sdl
2389 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002390fi
2391
Dave Airlie47c03742013-12-10 14:05:51 +10002392if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2393 sdl_config=$sdlconfigname
2394fi
2395
2396if $pkg_config $sdlname --exists; then
2397 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002398 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002399elif has ${sdl_config}; then
2400 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002401 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002402else
2403 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002404 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002405 fi
2406 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002407fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002408if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002409 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2410fi
bellard11d9f692004-04-02 20:55:59 +00002411
Paolo Bonzini9316f802010-01-13 09:52:55 +01002412sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002413if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002414 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002415#include <SDL.h>
2416#undef main /* We don't want SDL to override our main() */
2417int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2418EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002419 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002420 if test "$static" = "yes" ; then
2421 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2422 else
2423 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2424 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002425 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002426 if test "$_sdlversion" -lt 121 ; then
2427 sdl_too_old=yes
2428 else
Peter Maydella30878e2015-08-14 16:10:52 +01002429 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002430 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002431
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002432 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002433 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002434 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002435 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2436 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002437 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002438 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002439 :
2440 else
2441 sdl=no
2442 fi
2443 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002444 else # sdl not found
2445 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002446 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002447 fi
2448 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002449 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002450fi
bellard11d9f692004-04-02 20:55:59 +00002451
aliguori5368a422009-03-03 17:37:21 +00002452if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002453 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002454#include <SDL.h>
2455#if defined(SDL_VIDEO_DRIVER_X11)
2456#include <X11/XKBlib.h>
2457#else
2458#error No x11 support
2459#endif
2460int main(void) { return 0; }
2461EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002462 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2463 sdl_cflags="$sdl_cflags $x11_cflags"
2464 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002465 fi
Juan Quintela07056672009-08-03 14:46:27 +02002466 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002467fi
2468
ths8f28f3f2007-01-05 21:25:54 +00002469##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002470# RDMA needs OpenFabrics libraries
2471if test "$rdma" != "no" ; then
2472 cat > $TMPC <<EOF
2473#include <rdma/rdma_cma.h>
2474int main(void) { return 0; }
2475EOF
2476 rdma_libs="-lrdmacm -libverbs"
2477 if compile_prog "" "$rdma_libs" ; then
2478 rdma="yes"
2479 libs_softmmu="$libs_softmmu $rdma_libs"
2480 else
2481 if test "$rdma" = "yes" ; then
2482 error_exit \
2483 " OpenFabrics librdmacm/libibverbs not present." \
2484 " Your options:" \
2485 " (1) Fast: Install infiniband packages from your distro." \
2486 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2487 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2488 fi
2489 rdma="no"
2490 fi
2491fi
2492
ths8d5d2d42007-08-25 01:37:51 +00002493
2494##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002495# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002496if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002497 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002498#include <sasl/sasl.h>
2499#include <stdio.h>
2500int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2501EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002502 # Assuming Cyrus-SASL installed in /usr prefix
2503 vnc_sasl_cflags=""
2504 vnc_sasl_libs="-lsasl2"
2505 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2506 vnc_sasl=yes
2507 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002508 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002509 else
2510 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002511 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002512 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002513 vnc_sasl=no
2514 fi
aliguori2f9606b2009-03-06 20:27:28 +00002515fi
2516
2517##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002518# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002519if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002520cat > $TMPC <<EOF
2521#include <stdio.h>
2522#include <jpeglib.h>
2523int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2524EOF
2525 vnc_jpeg_cflags=""
2526 vnc_jpeg_libs="-ljpeg"
2527 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2528 vnc_jpeg=yes
2529 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002530 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002531 else
2532 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002533 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002534 fi
2535 vnc_jpeg=no
2536 fi
2537fi
2538
2539##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002540# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002541if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002542cat > $TMPC <<EOF
2543//#include <stdio.h>
2544#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002545#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002546int main(void) {
2547 png_structp png_ptr;
2548 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002549 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002550}
2551EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002552 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002553 vnc_png_cflags=`$pkg_config libpng --cflags`
2554 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002555 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002556 vnc_png_cflags=""
2557 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002558 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002559 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2560 vnc_png=yes
2561 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002562 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002563 else
2564 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002565 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002566 fi
2567 vnc_png=no
2568 fi
2569fi
2570
2571##########################################
aliguori76655d62009-03-06 20:27:37 +00002572# fnmatch() probe, used for ACL routines
2573fnmatch="no"
2574cat > $TMPC << EOF
2575#include <fnmatch.h>
2576int main(void)
2577{
2578 fnmatch("foo", "foo", 0);
2579 return 0;
2580}
2581EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002582if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002583 fnmatch="yes"
2584fi
2585
2586##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002587# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002588# Note that on some systems (notably MacOSX) no extra library
2589# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002590if test "$uuid" != "no" ; then
2591 uuid_libs="-luuid"
2592 cat > $TMPC << EOF
2593#include <uuid/uuid.h>
2594int main(void)
2595{
2596 uuid_t my_uuid;
2597 uuid_generate(my_uuid);
2598 return 0;
2599}
2600EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002601 if compile_prog "" "" ; then
2602 uuid="yes"
2603 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002604 uuid="yes"
2605 libs_softmmu="$uuid_libs $libs_softmmu"
2606 libs_tools="$uuid_libs $libs_tools"
2607 else
2608 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002609 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002610 fi
2611 uuid=no
2612 fi
2613fi
2614
Jeff Cody4f18b782013-10-30 10:44:39 -04002615if test "$vhdx" = "yes" ; then
2616 if test "$uuid" = "no" ; then
2617 error_exit "uuid required for VHDX support"
2618 fi
2619elif test "$vhdx" != "no" ; then
2620 if test "$uuid" = "yes" ; then
2621 vhdx=yes
2622 else
2623 vhdx=no
2624 fi
2625fi
2626
Stefan Weilee682d22009-10-01 20:10:37 +02002627##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002628# xfsctl() probe, used for raw-posix
2629if test "$xfs" != "no" ; then
2630 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002631#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002632#include <xfs/xfs.h>
2633int main(void)
2634{
2635 xfsctl(NULL, 0, 0, NULL);
2636 return 0;
2637}
2638EOF
2639 if compile_prog "" "" ; then
2640 xfs="yes"
2641 else
2642 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002643 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002644 fi
2645 xfs=no
2646 fi
2647fi
2648
2649##########################################
ths8a16d272008-07-19 09:56:24 +00002650# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002651if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002652 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002653 cat > $TMPC << EOF
2654#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002655int main(void)
2656{
2657 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002658 char s[] = "";
2659 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002660 return 0;
2661}
ths8a16d272008-07-19 09:56:24 +00002662EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002663 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002664 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002665 libs_softmmu="$vde_libs $libs_softmmu"
2666 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002667 else
2668 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002669 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002670 fi
2671 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002672 fi
ths8a16d272008-07-19 09:56:24 +00002673fi
2674
2675##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002676# netmap support probe
2677# Apart from looking for netmap headers, we make sure that the host API version
2678# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2679# a minor/major version number. Minor new features will be marked with values up
2680# to 15, and if something happens that requires a change to the backend we will
2681# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002682if test "$netmap" != "no" ; then
2683 cat > $TMPC << EOF
2684#include <inttypes.h>
2685#include <net/if.h>
2686#include <net/netmap.h>
2687#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002688#if (NETMAP_API < 11) || (NETMAP_API > 15)
2689#error
2690#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002691int main(void) { return 0; }
2692EOF
2693 if compile_prog "" "" ; then
2694 netmap=yes
2695 else
2696 if test "$netmap" = "yes" ; then
2697 feature_not_found "netmap"
2698 fi
2699 netmap=no
2700 fi
2701fi
2702
2703##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002704# libcap-ng library probe
2705if test "$cap_ng" != "no" ; then
2706 cap_libs="-lcap-ng"
2707 cat > $TMPC << EOF
2708#include <cap-ng.h>
2709int main(void)
2710{
2711 capng_capability_to_name(CAPNG_EFFECTIVE);
2712 return 0;
2713}
2714EOF
2715 if compile_prog "" "$cap_libs" ; then
2716 cap_ng=yes
2717 libs_tools="$cap_libs $libs_tools"
2718 else
2719 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002720 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002721 fi
2722 cap_ng=no
2723 fi
2724fi
2725
2726##########################################
malcc2de5c92008-06-28 19:13:06 +00002727# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002728
malcc2de5c92008-06-28 19:13:06 +00002729audio_drv_probe()
2730{
2731 drv=$1
2732 hdr=$2
2733 lib=$3
2734 exp=$4
2735 cfl=$5
2736 cat > $TMPC << EOF
2737#include <$hdr>
2738int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002739EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002740 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002741 :
2742 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002743 error_exit "$drv check failed" \
2744 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002745 fi
2746}
2747
malc2fa7d3b2008-07-29 12:58:44 +00002748audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002749for drv in $audio_drv_list; do
2750 case $drv in
2751 alsa)
2752 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002753 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002754 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002755 ;;
2756
malcb8e59f12008-07-02 21:03:08 +00002757 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002758 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2759 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2760 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002761 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002762 ;;
2763
Juan Quintela997e6902009-08-03 14:46:29 +02002764 coreaudio)
2765 libs_softmmu="-framework CoreAudio $libs_softmmu"
2766 ;;
2767
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002768 dsound)
2769 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002770 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002771 ;;
2772
2773 oss)
2774 libs_softmmu="$oss_lib $libs_softmmu"
2775 ;;
2776
2777 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002778 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2779 ;;
2780
malce4c63a62008-07-19 16:15:16 +00002781 *)
malc1c9b2a52008-07-19 16:57:30 +00002782 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002783 error_exit "Unknown driver '$drv' selected" \
2784 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002785 }
2786 ;;
malcc2de5c92008-06-28 19:13:06 +00002787 esac
2788done
ths8f28f3f2007-01-05 21:25:54 +00002789
balrog4d3b6f62008-02-10 16:33:14 +00002790##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002791# BrlAPI probe
2792
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002793if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002794 brlapi_libs="-lbrlapi"
2795 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002796#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002797#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002798int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2799EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002800 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002801 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002802 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002803 else
2804 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002805 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002806 fi
2807 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002808 fi
2809fi
aurel322e4d9fb2008-04-08 06:01:02 +00002810
2811##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002812# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002813if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002814 if test "$mingw32" = "yes" ; then
2815 curses_list="-lpdcurses"
2816 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002817 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002818 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002819 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002820 cat > $TMPC << EOF
2821#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002822int main(void) {
2823 const char *s = curses_version();
2824 resize_term(0, 0);
2825 return s != 0;
2826}
balrog4d3b6f62008-02-10 16:33:14 +00002827EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002828 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002829 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002830 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002831 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002832 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002833 libs_softmmu="$curses_lib $libs_softmmu"
2834 break
2835 fi
2836 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002837 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002838 if test "$curses_found" = "yes" ; then
2839 curses=yes
2840 else
2841 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002842 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002843 fi
2844 curses=no
2845 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002846fi
balrog4d3b6f62008-02-10 16:33:14 +00002847
blueswir1414f0da2008-08-15 18:20:52 +00002848##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002849# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002850if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002851 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002852 curlconfig="$pkg_config libcurl"
2853 else
2854 curlconfig=curl-config
2855 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002856 cat > $TMPC << EOF
2857#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002858int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002859EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002860 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2861 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002862 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002863 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002864 else
2865 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002866 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002867 fi
2868 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002869 fi
2870fi # test "$curl"
2871
2872##########################################
balrogfb599c92008-09-28 23:49:55 +00002873# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002874if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002875 cat > $TMPC << EOF
2876#include <bluetooth/bluetooth.h>
2877int main(void) { return bt_error(0); }
2878EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002879 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2880 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002881 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002882 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002883 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002884 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002885 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002886 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002887 fi
balroge820e3f2008-09-30 02:27:44 +00002888 bluez="no"
2889 fi
balrogfb599c92008-09-28 23:49:55 +00002890fi
2891
2892##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002893# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002894
John Snowf40685c2015-05-22 14:13:42 -04002895glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002896glib_modules=gthread-2.0
2897if test "$modules" = yes; then
2898 glib_modules="$glib_modules gmodule-2.0"
2899fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002900
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002901for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002902 if $pkg_config --atleast-version=$glib_req_ver $i; then
2903 glib_cflags=`$pkg_config --cflags $i`
2904 glib_libs=`$pkg_config --libs $i`
2905 CFLAGS="$glib_cflags $CFLAGS"
2906 LIBS="$glib_libs $LIBS"
2907 libs_qga="$glib_libs $libs_qga"
2908 else
2909 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2910 fi
2911done
2912
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00002913# Sanity check that the current size_t matches the
2914# size that glib thinks it should be. This catches
2915# problems on multi-arch where people try to build
2916# 32-bit QEMU while pointing at 64-bit glib headers
2917cat > $TMPC <<EOF
2918#include <glib.h>
2919#include <unistd.h>
2920
2921#define QEMU_BUILD_BUG_ON(x) \
2922 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
2923
2924int main(void) {
2925 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
2926 return 0;
2927}
2928EOF
2929
2930if ! compile_prog "-Werror $CFLAGS" "$LIBS" ; then
2931 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
2932 "You probably need to set PKG_CONFIG_LIBDIR"\
2933 "to point to the right pkg-config files for your"\
2934 "build target"
2935fi
2936
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002937# g_test_trap_subprocess added in 2.38. Used by some tests.
2938glib_subprocess=yes
2939if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2940 glib_subprocess=no
2941fi
2942
John Snowbbbf2e02015-03-25 18:57:38 -04002943# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2944cat > $TMPC << EOF
2945#include <glib.h>
2946int main(void) { return 0; }
2947EOF
2948if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2949 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2950 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2951 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2952 fi
2953fi
2954
Fam Zhenge26110c2014-02-10 14:48:57 +08002955##########################################
2956# SHA command probe for modules
2957if test "$modules" = yes; then
2958 shacmd_probe="sha1sum sha1 shasum"
2959 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002960 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002961 shacmd="$c"
2962 break
2963 fi
2964 done
2965 if test "$shacmd" = ""; then
2966 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2967 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002968fi
2969
2970##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002971# pixman support probe
2972
2973if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002974 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2975 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002976 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002977 pixman="system"
2978 else
2979 pixman="internal"
2980 fi
2981fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002982if test "$pixman" = "none"; then
2983 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002984 error_exit "pixman disabled but system emulation or tools build" \
2985 "enabled. You can turn off pixman only if you also" \
2986 "disable all system emulation targets and the tools" \
2987 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002988 fi
2989 pixman_cflags=
2990 pixman_libs=
2991elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002992 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002993 pixman_cflags=`$pkg_config --cflags pixman-1`
2994 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002995else
2996 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08002997 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01002998 " (1) Preferred: Install the pixman devel package (any recent" \
2999 " distro should have packages as Xorg needs pixman too)." \
3000 " (2) Fetch the pixman submodule, using:" \
3001 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003002 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003003 mkdir -p pixman/pixman
3004 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3005 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003006fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003007
3008##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303009# libcap probe
3010
3011if test "$cap" != "no" ; then
3012 cat > $TMPC <<EOF
3013#include <stdio.h>
3014#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003015int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303016EOF
3017 if compile_prog "" "-lcap" ; then
3018 cap=yes
3019 else
3020 cap=no
3021 fi
3022fi
3023
3024##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003025# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003026PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003027
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003028pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003029cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003030#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003031static void *f(void *p) { return NULL; }
3032int main(void) {
3033 pthread_t thread;
3034 pthread_create(&thread, 0, f, 0);
3035 return 0;
3036}
blueswir1414f0da2008-08-15 18:20:52 +00003037EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003038if compile_prog "" "" ; then
3039 pthread=yes
3040else
3041 for pthread_lib in $PTHREADLIBS_LIST; do
3042 if compile_prog "" "$pthread_lib" ; then
3043 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003044 found=no
3045 for lib_entry in $LIBS; do
3046 if test "$lib_entry" = "$pthread_lib"; then
3047 found=yes
3048 break
3049 fi
3050 done
3051 if test "$found" = "no"; then
3052 LIBS="$pthread_lib $LIBS"
3053 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003054 break
3055 fi
3056 done
3057fi
blueswir1414f0da2008-08-15 18:20:52 +00003058
Anthony Liguori4617e592009-08-25 17:21:56 -05003059if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003060 error_exit "pthread check failed" \
3061 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003062fi
3063
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003064# check for pthread_setname_np
3065pthread_setname_np=no
3066cat > $TMPC << EOF
3067#include <pthread.h>
3068
3069static void *f(void *p) { return NULL; }
3070int main(void)
3071{
3072 pthread_t thread;
3073 pthread_create(&thread, 0, f, 0);
3074 pthread_setname_np(thread, "QEMU");
3075 return 0;
3076}
3077EOF
3078if compile_prog "" "$pthread_lib" ; then
3079 pthread_setname_np=yes
3080fi
3081
aliguoribf9298b2008-12-05 20:05:26 +00003082##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003083# rbd probe
3084if test "$rbd" != "no" ; then
3085 cat > $TMPC <<EOF
3086#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003087#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003088int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003089 rados_t cluster;
3090 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003091 return 0;
3092}
3093EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003094 rbd_libs="-lrbd -lrados"
3095 if compile_prog "" "$rbd_libs" ; then
3096 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003097 else
3098 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003099 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003100 fi
3101 rbd=no
3102 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003103fi
3104
3105##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003106# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003107min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003108if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003109 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003110 libssh2_cflags=`$pkg_config libssh2 --cflags`
3111 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003112 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003113 else
3114 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003115 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003116 fi
3117 libssh2=no
3118 fi
3119fi
3120
3121##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003122# libssh2_sftp_fsync probe
3123
3124if test "$libssh2" = "yes"; then
3125 cat > $TMPC <<EOF
3126#include <stdio.h>
3127#include <libssh2.h>
3128#include <libssh2_sftp.h>
3129int main(void) {
3130 LIBSSH2_SESSION *session;
3131 LIBSSH2_SFTP *sftp;
3132 LIBSSH2_SFTP_HANDLE *sftp_handle;
3133 session = libssh2_session_init ();
3134 sftp = libssh2_sftp_init (session);
3135 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3136 libssh2_sftp_fsync (sftp_handle);
3137 return 0;
3138}
3139EOF
3140 # libssh2_cflags/libssh2_libs defined in previous test.
3141 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3142 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3143 fi
3144fi
3145
3146##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003147# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003148
3149if test "$linux_aio" != "no" ; then
3150 cat > $TMPC <<EOF
3151#include <libaio.h>
3152#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003153#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003154int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3155EOF
3156 if compile_prog "" "-laio" ; then
3157 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003158 else
3159 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003160 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003161 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003162 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003163 fi
3164fi
3165
3166##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003167# TPM passthrough is only on x86 Linux
3168
3169if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3170 tpm_passthrough=$tpm
3171else
3172 tpm_passthrough=no
3173fi
3174
3175##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003176# attr probe
3177
3178if test "$attr" != "no" ; then
3179 cat > $TMPC <<EOF
3180#include <stdio.h>
3181#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003182#ifdef CONFIG_LIBATTR
3183#include <attr/xattr.h>
3184#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003185#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003186#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003187int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3188EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003189 if compile_prog "" "" ; then
3190 attr=yes
3191 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003192 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003193 attr=yes
3194 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003195 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003196 else
3197 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003198 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003199 fi
3200 attr=no
3201 fi
3202fi
3203
3204##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003205# iovec probe
3206cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003207#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003208#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003209#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003210int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003211EOF
3212iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003213if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003214 iovec=yes
3215fi
3216
aurel32f652e6a2008-12-16 10:43:48 +00003217##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003218# preadv probe
3219cat > $TMPC <<EOF
3220#include <sys/types.h>
3221#include <sys/uio.h>
3222#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003223int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003224EOF
3225preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003226if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003227 preadv=yes
3228fi
3229
3230##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003231# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003232# fdt support is mandatory for at least some target architectures,
3233# so insist on it if we're building those system emulators.
3234fdt_required=no
3235for target in $target_list; do
3236 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003237 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003238 fdt_required=yes
3239 ;;
3240 esac
3241done
3242
3243if test "$fdt_required" = "yes"; then
3244 if test "$fdt" = "no"; then
3245 error_exit "fdt disabled but some requested targets require it." \
3246 "You can turn off fdt only if you also disable all the system emulation" \
3247 "targets which need it (by specifying a cut down --target-list)."
3248 fi
3249 fdt=yes
3250fi
3251
Juan Quintela2df87df2009-08-12 18:29:54 +02003252if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003253 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003254 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003255 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003256 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003257#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003258#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003259int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003260EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003261 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003262 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003263 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003264 elif test -d ${source_path}/dtc/libfdt ; then
3265 # have submodule DTC - use it
3266 fdt=yes
3267 dtc_internal="yes"
3268 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003269 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003270 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3271 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003272 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003273 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3274 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3275 elif test "$fdt" = "yes" ; then
3276 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003277 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003278 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003279 " (2) Fetch the DTC submodule, using:" \
3280 " git submodule update --init dtc"
3281 else
3282 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003283 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003284 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003285 fi
3286fi
3287
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003288libs_softmmu="$libs_softmmu $fdt_libs"
3289
Michael Walle20ff0752011-03-07 23:32:39 +01003290##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003291# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003292
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003293if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003294 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003295 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003296 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3297 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003298 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003299 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3300 gtk_gl="yes"
3301 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003302 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003303 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003304 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003305 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003306 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003307 opengl_libs=""
3308 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003309 fi
3310fi
3311
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003312if test "$opengl" = "yes"; then
3313 cat > $TMPC << EOF
3314#include <epoxy/egl.h>
3315#ifndef EGL_MESA_image_dma_buf_export
3316# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3317#endif
3318int main(void) { return 0; }
3319EOF
3320 if compile_prog "" "" ; then
3321 opengl_dmabuf=yes
3322 fi
3323fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003324
3325##########################################
3326# archipelago probe
3327if test "$archipelago" != "no" ; then
3328 cat > $TMPC <<EOF
3329#include <stdio.h>
3330#include <xseg/xseg.h>
3331#include <xseg/protocol.h>
3332int main(void) {
3333 xseg_initialize();
3334 return 0;
3335}
3336EOF
3337 archipelago_libs=-lxseg
3338 if compile_prog "" "$archipelago_libs"; then
3339 archipelago="yes"
3340 libs_tools="$archipelago_libs $libs_tools"
3341 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003342
3343 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3344 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3345 echo "license and therefore prevent redistribution."
3346 echo
3347 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003348 else
3349 if test "$archipelago" = "yes" ; then
3350 feature_not_found "Archipelago backend support" "Install libxseg devel"
3351 fi
3352 archipelago="no"
3353 fi
3354fi
3355
3356
Bharata B Raoeb100392012-09-24 14:42:45 +05303357##########################################
3358# glusterfs probe
3359if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003360 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303361 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003362 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3363 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003364 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303365 glusterfs_discard="yes"
3366 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303367 if $pkg_config --atleast-version=6 glusterfs-api; then
3368 glusterfs_zerofill="yes"
3369 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303370 else
3371 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003372 feature_not_found "GlusterFS backend support" \
3373 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303374 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303375 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303376 fi
3377fi
3378
aurel3239386ac2009-04-15 19:48:17 +00003379# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003380# emulator. This is done because older glibc versions don't
3381# have syscall stubs for these implemented. In that case we
3382# don't provide them even if kernel supports them.
3383#
3384inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003385cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003386#include <sys/inotify.h>
3387
3388int
3389main(void)
3390{
3391 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003392 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003393}
3394EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003395if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003396 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003397fi
3398
Riku Voipioc05c7a72010-03-26 15:25:11 +00003399inotify1=no
3400cat > $TMPC << EOF
3401#include <sys/inotify.h>
3402
3403int
3404main(void)
3405{
3406 /* try to start inotify */
3407 return inotify_init1(0);
3408}
3409EOF
3410if compile_prog "" "" ; then
3411 inotify1=yes
3412fi
3413
Riku Voipioebc996f2009-04-21 15:01:51 +03003414# check if utimensat and futimens are supported
3415utimens=no
3416cat > $TMPC << EOF
3417#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003418#include <stddef.h>
3419#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003420#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003421
3422int main(void)
3423{
3424 utimensat(AT_FDCWD, "foo", NULL, 0);
3425 futimens(0, NULL);
3426 return 0;
3427}
3428EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003429if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003430 utimens=yes
3431fi
3432
Riku Voipio099d6b02009-05-05 12:10:04 +03003433# check if pipe2 is there
3434pipe2=no
3435cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003436#include <unistd.h>
3437#include <fcntl.h>
3438
3439int main(void)
3440{
3441 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003442 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003443}
3444EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003445if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003446 pipe2=yes
3447fi
3448
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003449# check if accept4 is there
3450accept4=no
3451cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003452#include <sys/socket.h>
3453#include <stddef.h>
3454
3455int main(void)
3456{
3457 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3458 return 0;
3459}
3460EOF
3461if compile_prog "" "" ; then
3462 accept4=yes
3463fi
3464
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303465# check if tee/splice is there. vmsplice was added same time.
3466splice=no
3467cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303468#include <unistd.h>
3469#include <fcntl.h>
3470#include <limits.h>
3471
3472int main(void)
3473{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003474 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303475 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3476 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3477 return 0;
3478}
3479EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003480if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303481 splice=yes
3482fi
3483
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003484##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003485# libnuma probe
3486
3487if test "$numa" != "no" ; then
3488 cat > $TMPC << EOF
3489#include <numa.h>
3490int main(void) { return numa_available(); }
3491EOF
3492
3493 if compile_prog "" "-lnuma" ; then
3494 numa=yes
3495 libs_softmmu="-lnuma $libs_softmmu"
3496 else
3497 if test "$numa" = "yes" ; then
3498 feature_not_found "numa" "install numactl devel"
3499 fi
3500 numa=no
3501 fi
3502fi
3503
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003504if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3505 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3506 exit 1
3507fi
3508
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003509##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003510# tcmalloc probe
3511
3512if test "$tcmalloc" = "yes" ; then
3513 cat > $TMPC << EOF
3514#include <stdlib.h>
3515int main(void) { malloc(1); return 0; }
3516EOF
3517
3518 if compile_prog "" "-ltcmalloc" ; then
3519 LIBS="-ltcmalloc $LIBS"
3520 else
3521 feature_not_found "tcmalloc" "install gperftools devel"
3522 fi
3523fi
3524
3525##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003526# jemalloc probe
3527
3528if test "$jemalloc" = "yes" ; then
3529 cat > $TMPC << EOF
3530#include <stdlib.h>
3531int main(void) { malloc(1); return 0; }
3532EOF
3533
3534 if compile_prog "" "-ljemalloc" ; then
3535 LIBS="-ljemalloc $LIBS"
3536 else
3537 feature_not_found "jemalloc" "install jemalloc devel"
3538 fi
3539fi
3540
3541##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003542# signalfd probe
3543signalfd="no"
3544cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003545#include <unistd.h>
3546#include <sys/syscall.h>
3547#include <signal.h>
3548int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3549EOF
3550
3551if compile_prog "" "" ; then
3552 signalfd=yes
3553fi
3554
Riku Voipioc2882b92009-08-12 15:08:24 +03003555# check if eventfd is supported
3556eventfd=no
3557cat > $TMPC << EOF
3558#include <sys/eventfd.h>
3559
3560int main(void)
3561{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003562 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003563}
3564EOF
3565if compile_prog "" "" ; then
3566 eventfd=yes
3567fi
3568
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003569# check if memfd is supported
3570memfd=no
3571cat > $TMPC << EOF
3572#include <sys/memfd.h>
3573
3574int main(void)
3575{
3576 return memfd_create("foo", MFD_ALLOW_SEALING);
3577}
3578EOF
3579if compile_prog "" "" ; then
3580 memfd=yes
3581fi
3582
3583
3584
Ulrich Hechtd0927932009-09-17 20:22:14 +03003585# check for fallocate
3586fallocate=no
3587cat > $TMPC << EOF
3588#include <fcntl.h>
3589
3590int main(void)
3591{
3592 fallocate(0, 0, 0, 0);
3593 return 0;
3594}
3595EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003596if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003597 fallocate=yes
3598fi
3599
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003600# check for fallocate hole punching
3601fallocate_punch_hole=no
3602cat > $TMPC << EOF
3603#include <fcntl.h>
3604#include <linux/falloc.h>
3605
3606int main(void)
3607{
3608 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3609 return 0;
3610}
3611EOF
3612if compile_prog "" "" ; then
3613 fallocate_punch_hole=yes
3614fi
3615
Denis V. Lunevb953f072015-01-30 11:42:14 +03003616# check that fallocate supports range zeroing inside the file
3617fallocate_zero_range=no
3618cat > $TMPC << EOF
3619#include <fcntl.h>
3620#include <linux/falloc.h>
3621
3622int main(void)
3623{
3624 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3625 return 0;
3626}
3627EOF
3628if compile_prog "" "" ; then
3629 fallocate_zero_range=yes
3630fi
3631
Kevin Wolfed911432014-09-29 17:12:59 +02003632# check for posix_fallocate
3633posix_fallocate=no
3634cat > $TMPC << EOF
3635#include <fcntl.h>
3636
3637int main(void)
3638{
3639 posix_fallocate(0, 0, 0);
3640 return 0;
3641}
3642EOF
3643if compile_prog "" "" ; then
3644 posix_fallocate=yes
3645fi
3646
Peter Maydellc727f472011-01-06 11:05:10 +00003647# check for sync_file_range
3648sync_file_range=no
3649cat > $TMPC << EOF
3650#include <fcntl.h>
3651
3652int main(void)
3653{
3654 sync_file_range(0, 0, 0, 0);
3655 return 0;
3656}
3657EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003658if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003659 sync_file_range=yes
3660fi
3661
Peter Maydelldace20d2011-01-10 13:11:24 +00003662# check for linux/fiemap.h and FS_IOC_FIEMAP
3663fiemap=no
3664cat > $TMPC << EOF
3665#include <sys/ioctl.h>
3666#include <linux/fs.h>
3667#include <linux/fiemap.h>
3668
3669int main(void)
3670{
3671 ioctl(0, FS_IOC_FIEMAP, 0);
3672 return 0;
3673}
3674EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003675if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003676 fiemap=yes
3677fi
3678
Ulrich Hechtd0927932009-09-17 20:22:14 +03003679# check for dup3
3680dup3=no
3681cat > $TMPC << EOF
3682#include <unistd.h>
3683
3684int main(void)
3685{
3686 dup3(0, 0, 0);
3687 return 0;
3688}
3689EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003690if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003691 dup3=yes
3692fi
3693
Alex Bligh4e0c6522013-08-21 16:02:43 +01003694# check for ppoll support
3695ppoll=no
3696cat > $TMPC << EOF
3697#include <poll.h>
3698
3699int main(void)
3700{
3701 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3702 ppoll(&pfd, 1, 0, 0);
3703 return 0;
3704}
3705EOF
3706if compile_prog "" "" ; then
3707 ppoll=yes
3708fi
3709
Alex Blighcd758dd2013-08-21 16:02:44 +01003710# check for prctl(PR_SET_TIMERSLACK , ... ) support
3711prctl_pr_set_timerslack=no
3712cat > $TMPC << EOF
3713#include <sys/prctl.h>
3714
3715int main(void)
3716{
3717 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3718 return 0;
3719}
3720EOF
3721if compile_prog "" "" ; then
3722 prctl_pr_set_timerslack=yes
3723fi
3724
Peter Maydell3b6edd12011-02-15 18:35:05 +00003725# check for epoll support
3726epoll=no
3727cat > $TMPC << EOF
3728#include <sys/epoll.h>
3729
3730int main(void)
3731{
3732 epoll_create(0);
3733 return 0;
3734}
3735EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003736if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003737 epoll=yes
3738fi
3739
3740# epoll_create1 and epoll_pwait are later additions
3741# so we must check separately for their presence
3742epoll_create1=no
3743cat > $TMPC << EOF
3744#include <sys/epoll.h>
3745
3746int main(void)
3747{
Peter Maydell19e83f62011-04-26 16:56:40 +01003748 /* Note that we use epoll_create1 as a value, not as
3749 * a function being called. This is necessary so that on
3750 * old SPARC glibc versions where the function was present in
3751 * the library but not declared in the header file we will
3752 * fail the configure check. (Otherwise we will get a compiler
3753 * warning but not an error, and will proceed to fail the
3754 * qemu compile where we compile with -Werror.)
3755 */
Blue Swirlc075a722012-08-09 20:21:25 +00003756 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003757}
3758EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003759if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003760 epoll_create1=yes
3761fi
3762
3763epoll_pwait=no
3764cat > $TMPC << EOF
3765#include <sys/epoll.h>
3766
3767int main(void)
3768{
3769 epoll_pwait(0, 0, 0, 0, 0);
3770 return 0;
3771}
3772EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003773if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003774 epoll_pwait=yes
3775fi
3776
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003777# check for sendfile support
3778sendfile=no
3779cat > $TMPC << EOF
3780#include <sys/sendfile.h>
3781
3782int main(void)
3783{
3784 return sendfile(0, 0, 0, 0);
3785}
3786EOF
3787if compile_prog "" "" ; then
3788 sendfile=yes
3789fi
3790
Riku Voipio51834342014-06-22 11:25:42 +01003791# check for timerfd support (glibc 2.8 and newer)
3792timerfd=no
3793cat > $TMPC << EOF
3794#include <sys/timerfd.h>
3795
3796int main(void)
3797{
3798 return(timerfd_create(CLOCK_REALTIME, 0));
3799}
3800EOF
3801if compile_prog "" "" ; then
3802 timerfd=yes
3803fi
3804
Riku Voipio9af5c902014-08-12 15:58:57 +03003805# check for setns and unshare support
3806setns=no
3807cat > $TMPC << EOF
3808#include <sched.h>
3809
3810int main(void)
3811{
3812 int ret;
3813 ret = setns(0, 0);
3814 ret = unshare(0);
3815 return ret;
3816}
3817EOF
3818if compile_prog "" "" ; then
3819 setns=yes
3820fi
3821
pbrookcc8ae6d2006-04-23 17:57:59 +00003822# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003823if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003824 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003825 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003826 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003827 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003828 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003829 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003830 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003831 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003832fi
3833
Stefan Weilf514f412009-10-11 12:44:07 +02003834# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003835byteswap_h=no
3836cat > $TMPC << EOF
3837#include <byteswap.h>
3838int main(void) { return bswap_32(0); }
3839EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003840if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003841 byteswap_h=yes
3842fi
3843
Stefan Weil75f13592013-01-05 12:17:38 +01003844# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003845bswap_h=no
3846cat > $TMPC << EOF
3847#include <sys/endian.h>
3848#include <sys/types.h>
3849#include <machine/bswap.h>
3850int main(void) { return bswap32(0); }
3851EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003852if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003853 bswap_h=yes
3854fi
3855
aliguorida93a1f2008-12-12 20:02:52 +00003856##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003857# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003858if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003859 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003860 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003861 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3862 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003863 else
3864 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003865 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003866 fi
3867 libiscsi="no"
3868 fi
3869fi
3870
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003871##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003872# Do we need libm
3873cat > $TMPC << EOF
3874#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003875int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003876EOF
3877if compile_prog "" "" ; then
3878 :
3879elif compile_prog "" "-lm" ; then
3880 LIBS="-lm $LIBS"
3881 libs_qga="-lm $libs_qga"
3882else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003883 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003884fi
3885
3886##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003887# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003888# uClibc provides 2 versions of clock_gettime(), one with realtime
3889# support and one without. This means that the clock_gettime() don't
3890# need -lrt. We still need it for timer_create() so we check for this
3891# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003892cat > $TMPC <<EOF
3893#include <signal.h>
3894#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003895int main(void) {
3896 timer_create(CLOCK_REALTIME, NULL, NULL);
3897 return clock_gettime(CLOCK_REALTIME, NULL);
3898}
aliguorida93a1f2008-12-12 20:02:52 +00003899EOF
3900
Juan Quintela52166aa2009-08-03 14:46:03 +02003901if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003902 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003903# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003904elif compile_prog "" "$pthread_lib -lrt" ; then
3905 LIBS="$LIBS -lrt"
3906 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003907fi
3908
Blue Swirl31ff5042009-09-12 12:33:07 +00003909if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003910 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003911 libs_softmmu="-lutil $libs_softmmu"
3912fi
3913
Blue Swirlde5071c2009-09-12 09:58:46 +00003914##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003915# spice probe
3916if test "$spice" != "no" ; then
3917 cat > $TMPC << EOF
3918#include <spice.h>
3919int main(void) { spice_server_new(); return 0; }
3920EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003921 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3922 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003923 if $pkg_config --atleast-version=0.12.0 spice-server && \
3924 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003925 compile_prog "$spice_cflags" "$spice_libs" ; then
3926 spice="yes"
3927 libs_softmmu="$libs_softmmu $spice_libs"
3928 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003929 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3930 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003931 else
3932 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003933 feature_not_found "spice" \
3934 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003935 fi
3936 spice="no"
3937 fi
3938fi
3939
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003940# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003941smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003942if test "$smartcard" != "no"; then
3943 if $pkg_config libcacard; then
3944 libcacard_cflags=$($pkg_config --cflags libcacard)
3945 libcacard_libs=$($pkg_config --libs libcacard)
3946 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3947 libs_softmmu="$libs_softmmu $libcacard_libs"
3948 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003949 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003950 if test "$smartcard" = "yes"; then
3951 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003952 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003953 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003954 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003955fi
3956
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003957# check for libusb
3958if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003959 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003960 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003961 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3962 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003963 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3964 libs_softmmu="$libs_softmmu $libusb_libs"
3965 else
3966 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003967 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003968 fi
3969 libusb="no"
3970 fi
3971fi
3972
Hans de Goede69354a82011-07-19 11:04:10 +02003973# check for usbredirparser for usb network redirection support
3974if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003975 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003976 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003977 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3978 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003979 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003980 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003981 else
3982 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003983 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003984 fi
3985 usb_redir="no"
3986 fi
3987fi
3988
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003989##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003990# check if we have VSS SDK headers for win
3991
3992if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3993 case "$vss_win32_sdk" in
3994 "") vss_win32_include="-I$source_path" ;;
3995 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3996 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3997 vss_win32_include="-I$source_path/.sdk/vss"
3998 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3999 ;;
4000 *) vss_win32_include="-I$vss_win32_sdk"
4001 esac
4002 cat > $TMPC << EOF
4003#define __MIDL_user_allocate_free_DEFINED__
4004#include <inc/win2003/vss.h>
4005int main(void) { return VSS_CTX_BACKUP; }
4006EOF
4007 if compile_prog "$vss_win32_include" "" ; then
4008 guest_agent_with_vss="yes"
4009 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4010 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004011 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004012 else
4013 if test "$vss_win32_sdk" != "" ; then
4014 echo "ERROR: Please download and install Microsoft VSS SDK:"
4015 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4016 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4017 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4018 echo "ERROR: The headers are extracted in the directory \`inc'."
4019 feature_not_found "VSS support"
4020 fi
4021 guest_agent_with_vss="no"
4022 fi
4023fi
4024
4025##########################################
4026# lookup Windows platform SDK (if not specified)
4027# The SDK is needed only to build .tlb (type library) file of guest agent
4028# VSS provider from the source. It is usually unnecessary because the
4029# pre-compiled .tlb file is included.
4030
4031if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4032 if test -z "$win_sdk"; then
4033 programfiles="$PROGRAMFILES"
4034 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4035 if test -n "$programfiles"; then
4036 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4037 else
4038 feature_not_found "Windows SDK"
4039 fi
4040 elif test "$win_sdk" = "no"; then
4041 win_sdk=""
4042 fi
4043fi
4044
4045##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004046# check if mingw environment provides a recent ntddscsi.h
4047if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4048 cat > $TMPC << EOF
4049#include <windows.h>
4050#include <ntddscsi.h>
4051int main(void) {
4052#if !defined(IOCTL_SCSI_GET_ADDRESS)
4053#error Missing required ioctl definitions
4054#endif
4055 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4056 return addr.Lun;
4057}
4058EOF
4059 if compile_prog "" "" ; then
4060 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004061 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004062 fi
4063fi
4064
4065##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004066# virgl renderer probe
4067
4068if test "$virglrenderer" != "no" ; then
4069 cat > $TMPC << EOF
4070#include <virglrenderer.h>
4071int main(void) { virgl_renderer_poll(); return 0; }
4072EOF
4073 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4074 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4075 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4076 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4077 virglrenderer="yes"
4078 else
4079 if test "$virglrenderer" = "yes" ; then
4080 feature_not_found "virglrenderer"
4081 fi
4082 virglrenderer="no"
4083 fi
4084fi
4085
4086##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004087# check if we have fdatasync
4088
4089fdatasync=no
4090cat > $TMPC << EOF
4091#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004092int main(void) {
4093#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4094return fdatasync(0);
4095#else
Stefan Weile172fe12012-04-06 21:33:20 +02004096#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004097#endif
4098}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004099EOF
4100if compile_prog "" "" ; then
4101 fdatasync=yes
4102fi
4103
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004104##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004105# check if we have madvise
4106
4107madvise=no
4108cat > $TMPC << EOF
4109#include <sys/types.h>
4110#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004111#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004112int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4113EOF
4114if compile_prog "" "" ; then
4115 madvise=yes
4116fi
4117
4118##########################################
4119# check if we have posix_madvise
4120
4121posix_madvise=no
4122cat > $TMPC << EOF
4123#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004124#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004125int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4126EOF
4127if compile_prog "" "" ; then
4128 posix_madvise=yes
4129fi
4130
4131##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004132# check if we have usable SIGEV_THREAD_ID
4133
4134sigev_thread_id=no
4135cat > $TMPC << EOF
4136#include <signal.h>
4137int main(void) {
4138 struct sigevent ev;
4139 ev.sigev_notify = SIGEV_THREAD_ID;
4140 ev._sigev_un._tid = 0;
4141 asm volatile("" : : "g"(&ev));
4142 return 0;
4143}
4144EOF
4145if compile_prog "" "" ; then
4146 sigev_thread_id=yes
4147fi
4148
4149##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004150# check if trace backend exists
4151
Lluís Vilanova5b808272014-05-27 15:02:14 +02004152$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004153if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004154 error_exit "invalid trace backends" \
4155 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004156fi
4157
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004158##########################################
4159# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004160if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004161 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004162#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004163int main(void) { return 0; }
4164EOF
4165 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004166 if $pkg_config lttng-ust --exists; then
4167 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4168 else
4169 lttng_ust_libs="-llttng-ust"
4170 fi
4171 if $pkg_config liburcu-bp --exists; then
4172 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4173 else
4174 urcu_bp_libs="-lurcu-bp"
4175 fi
4176
4177 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4178 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004179 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004180 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004181 fi
4182fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004183
4184##########################################
4185# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004186if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004187 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004188 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004189 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004190 trace_backend_stap="no"
4191 if has 'stap' ; then
4192 trace_backend_stap="yes"
4193 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004194fi
4195
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004196##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004197# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304198
Peter Maydell7c2acc72013-04-08 12:11:27 +01004199# We prefer ucontext, but it's not always possible. The fallback
4200# is sigcontext. gthread is not selectable except explicitly, because
4201# it is not functional enough to run QEMU proper. (It is occasionally
4202# useful for debugging purposes.) On Windows the only valid backend
4203# is the Windows-specific one.
4204
4205ucontext_works=no
4206if test "$darwin" != "yes"; then
4207 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304208#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004209#ifdef __stub_makecontext
4210#error Ignoring glibc stub makecontext which will always fail
4211#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004212int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304213EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004214 if compile_prog "" "" ; then
4215 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304216 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004217fi
4218
4219if test "$coroutine" = ""; then
4220 if test "$mingw32" = "yes"; then
4221 coroutine=win32
4222 elif test "$ucontext_works" = "yes"; then
4223 coroutine=ucontext
4224 else
4225 coroutine=sigaltstack
4226 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004227else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004228 case $coroutine in
4229 windows)
4230 if test "$mingw32" != "yes"; then
4231 error_exit "'windows' coroutine backend only valid for Windows"
4232 fi
4233 # Unfortunately the user visible backend name doesn't match the
4234 # coroutine-*.c filename for this case, so we have to adjust it here.
4235 coroutine=win32
4236 ;;
4237 ucontext)
4238 if test "$ucontext_works" != "yes"; then
4239 feature_not_found "ucontext"
4240 fi
4241 ;;
4242 gthread|sigaltstack)
4243 if test "$mingw32" = "yes"; then
4244 error_exit "only the 'windows' coroutine backend is valid for Windows"
4245 fi
4246 ;;
4247 *)
4248 error_exit "unknown coroutine backend $coroutine"
4249 ;;
4250 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304251fi
4252
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004253if test "$coroutine_pool" = ""; then
4254 if test "$coroutine" = "gthread"; then
4255 coroutine_pool=no
4256 else
4257 coroutine_pool=yes
4258 fi
4259fi
4260if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4261 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4262fi
4263
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304264##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304265# check if we have open_by_handle_at
4266
Stefan Weil4e1797f2012-06-18 22:11:06 +02004267open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304268cat > $TMPC << EOF
4269#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004270#if !defined(AT_EMPTY_PATH)
4271# error missing definition
4272#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004273int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004274#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304275EOF
4276if compile_prog "" "" ; then
4277 open_by_handle_at=yes
4278fi
4279
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304280########################################
4281# check if we have linux/magic.h
4282
4283linux_magic_h=no
4284cat > $TMPC << EOF
4285#include <linux/magic.h>
4286int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004287 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304288}
4289EOF
4290if compile_prog "" "" ; then
4291 linux_magic_h=yes
4292fi
4293
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004294########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004295# check whether we can disable warning option with a pragma (this is needed
4296# to silence warnings in the headers of some versions of external libraries).
4297# This test has to be compiled with -Werror as otherwise an unknown pragma is
4298# only a warning.
4299#
4300# If we can't selectively disable warning in the code, disable -Werror so that
4301# the build doesn't fail anyway.
4302
Peter Maydell06d71fa2012-07-30 16:13:07 +01004303pragma_disable_unused_but_set=no
4304cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004305#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004306#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004307#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004308#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004309
Peter Maydell06d71fa2012-07-30 16:13:07 +01004310int main(void) {
4311 return 0;
4312}
4313EOF
4314if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004315 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004316else
4317 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004318fi
4319
4320########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004321# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004322
4323valgrind_h=no
4324cat > $TMPC << EOF
4325#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004326int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004327 return 0;
4328}
4329EOF
4330if compile_prog "" "" ; then
4331 valgrind_h=yes
4332fi
4333
4334########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004335# check if environ is declared
4336
4337has_environ=no
4338cat > $TMPC << EOF
4339#include <unistd.h>
4340int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004341 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004342 return 0;
4343}
4344EOF
4345if compile_prog "" "" ; then
4346 has_environ=yes
4347fi
4348
Richard Henderson76a347e2012-12-28 14:17:02 -08004349########################################
4350# check if cpuid.h is usable.
4351
4352cpuid_h=no
4353cat > $TMPC << EOF
4354#include <cpuid.h>
4355int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004356 unsigned a, b, c, d;
4357 int max = __get_cpuid_max(0, 0);
4358
4359 if (max >= 1) {
4360 __cpuid(1, a, b, c, d);
4361 }
4362
4363 if (max >= 7) {
4364 __cpuid_count(7, 0, a, b, c, d);
4365 }
4366
4367 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004368}
4369EOF
4370if compile_prog "" "" ; then
4371 cpuid_h=yes
4372fi
4373
Richard Hendersonf5401662013-02-16 12:46:59 -08004374########################################
4375# check if __[u]int128_t is usable.
4376
4377int128=no
4378cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004379#if defined(__clang_major__) && defined(__clang_minor__)
4380# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4381# error __int128_t does not work in CLANG before 3.2
4382# endif
4383#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004384__int128_t a;
4385__uint128_t b;
4386int main (void) {
4387 a = a + b;
4388 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004389 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004390 return 0;
4391}
4392EOF
4393if compile_prog "" "" ; then
4394 int128=yes
4395fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004396
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004397########################################
4398# check if getauxval is available.
4399
4400getauxval=no
4401cat > $TMPC << EOF
4402#include <sys/auxv.h>
4403int main(void) {
4404 return getauxval(AT_HWCAP) == 0;
4405}
4406EOF
4407if compile_prog "" "" ; then
4408 getauxval=yes
4409fi
4410
John Snowfd0e6052015-03-25 18:57:39 -04004411########################################
4412# check if ccache is interfering with
4413# semantic analysis of macros
4414
John Snow5e4dfd32015-10-28 13:56:40 -04004415unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004416ccache_cpp2=no
4417cat > $TMPC << EOF
4418static const int Z = 1;
4419#define fn() ({ Z; })
4420#define TAUT(X) ((X) == Z)
4421#define PAREN(X, Y) (X == Y)
4422#define ID(X) (X)
4423int main(int argc, char *argv[])
4424{
4425 int x = 0, y = 0;
4426 x = ID(x);
4427 x = fn();
4428 fn();
4429 if (PAREN(x, y)) return 0;
4430 if (TAUT(Z)) return 0;
4431 return 0;
4432}
4433EOF
4434
4435if ! compile_object "-Werror"; then
4436 ccache_cpp2=yes
4437fi
4438
John Snowb553a042015-11-03 15:43:42 -05004439#################################################
4440# clang does not support glibc + FORTIFY_SOURCE.
4441
4442if test "$fortify_source" != "no"; then
4443 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4444 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004445 elif test -n "$cxx" &&
4446 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004447 fortify_source="no";
4448 else
4449 fortify_source="yes"
4450 fi
4451fi
4452
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304453##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004454# End of CC checks
4455# After here, no more $cc or $ld runs
4456
Blue Swirl1d728c32012-05-01 18:45:39 +00004457if test "$gcov" = "yes" ; then
4458 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4459 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004460elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004461 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004462elif test "$debug" = "no"; then
4463 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004464fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004465
Peter Lieven6542aa92014-02-03 10:26:13 +01004466##########################################
4467# Do we have libnfs
4468if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004469 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004470 libnfs="yes"
4471 libnfs_libs=$($pkg_config --libs libnfs)
4472 LIBS="$LIBS $libnfs_libs"
4473 else
4474 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004475 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004476 fi
4477 libnfs="no"
4478 fi
4479fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004480
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004481# Disable zero malloc errors for official releases unless explicitly told to
4482# enable/disable
4483if test -z "$zero_malloc" ; then
4484 if test "$z_version" = "50" ; then
4485 zero_malloc="no"
4486 else
4487 zero_malloc="yes"
4488 fi
4489fi
4490
Peter Maydell6ca026c2012-07-18 15:10:18 +01004491# Now we've finished running tests it's OK to add -Werror to the compiler flags
4492if test "$werror" = "yes"; then
4493 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4494fi
4495
Juan Quintelae86ecd42009-08-03 14:45:59 +02004496if test "$solaris" = "no" ; then
4497 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004498 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004499 fi
4500fi
4501
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004502# test if pod2man has --utf8 option
4503if pod2man --help | grep -q utf8; then
4504 POD2MAN="pod2man --utf8"
4505else
4506 POD2MAN="pod2man"
4507fi
4508
Blue Swirl952afb72010-09-19 08:36:34 +00004509# Use ASLR, no-SEH and DEP if available
4510if test "$mingw32" = "yes" ; then
4511 for flag in --dynamicbase --no-seh --nxcompat; do
4512 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4513 LDFLAGS="-Wl,$flag $LDFLAGS"
4514 fi
4515 done
4516fi
4517
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004518qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004519qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004520qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004521qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004522
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004523tools=""
4524if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004525 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004526 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4527 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004528 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004529 fi
4530fi
4531if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304532 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004533 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4534 virtfs=yes
4535 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4536 else
4537 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004538 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304539 fi
Andreas Färber17500372012-05-01 01:12:03 +02004540 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004541 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304542 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004543fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004544
4545# Probe for guest agent support/options
4546
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004547if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004548 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004549 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004550 guest_agent=yes
4551 elif [ "$guest_agent" != yes ]; then
4552 guest_agent=no
4553 else
4554 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004555 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004556fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004557
Michael Roth9d6bc272015-08-26 10:49:13 -05004558# Guest agent Window MSI package
4559
4560if test "$guest_agent" != yes; then
4561 if test "$guest_agent_msi" = yes; then
4562 error_exit "MSI guest agent package requires guest agent enabled"
4563 fi
4564 guest_agent_msi=no
4565elif test "$mingw32" != "yes"; then
4566 if test "$guest_agent_msi" = "yes"; then
4567 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4568 fi
4569 guest_agent_msi=no
4570elif ! has wixl; then
4571 if test "$guest_agent_msi" = "yes"; then
4572 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4573 fi
4574 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004575else
4576 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4577 # disabled explicitly
4578 if test "$guest_agent_msi" != "no"; then
4579 guest_agent_msi=yes
4580 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004581fi
4582
Michael Roth1a349042015-08-26 11:14:31 -05004583if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004584 if test "$guest_agent_with_vss" = "yes"; then
4585 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4586 fi
4587
4588 if test "$QEMU_GA_MANUFACTURER" = ""; then
4589 QEMU_GA_MANUFACTURER=QEMU
4590 fi
4591
4592 if test "$QEMU_GA_DISTRO" = ""; then
4593 QEMU_GA_DISTRO=Linux
4594 fi
4595
4596 if test "$QEMU_GA_VERSION" = ""; then
4597 QEMU_GA_VERSION=`cat $source_path/VERSION`
4598 fi
4599
4600 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4601
4602 case "$cpu" in
4603 x86_64)
4604 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4605 ;;
4606 i386)
4607 QEMU_GA_MSI_ARCH="-D Arch=32"
4608 ;;
4609 *)
4610 error_exit "CPU $cpu not supported for building installation package"
4611 ;;
4612 esac
4613fi
4614
Paolo Bonzinica35f782010-05-26 16:08:29 +02004615# Mac OS X ships with a broken assembler
4616roms=
4617if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4618 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4619 "$softmmu" = yes ; then
4620 roms="optionrom"
4621fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004622if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004623 roms="$roms spapr-rtas"
4624fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004625
Christian Borntraeger9933c302013-04-23 01:23:03 +00004626if test "$cpu" = "s390x" ; then
4627 roms="$roms s390-ccw"
4628fi
4629
Richard Henderson964c6fa2013-06-21 19:10:16 -07004630# Probe for the need for relocating the user-only binary.
4631if test "$pie" = "no" ; then
4632 textseg_addr=
4633 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004634 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4635 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004636 textseg_addr=0x60000000
4637 ;;
4638 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004639 # A 256M aligned address, high in the address space, with enough
4640 # room for the code_gen_buffer above it before the stack.
4641 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004642 ;;
4643 esac
4644 if [ -n "$textseg_addr" ]; then
4645 cat > $TMPC <<EOF
4646 int main(void) { return 0; }
4647EOF
4648 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4649 if ! compile_prog "" "$textseg_ldflags"; then
4650 # In case ld does not support -Ttext-segment, edit the default linker
4651 # script via sed to set the .text start addr. This is needed on FreeBSD
4652 # at least.
4653 $ld --verbose | sed \
4654 -e '1,/==================================================/d' \
4655 -e '/==================================================/,$d' \
4656 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4657 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4658 textseg_ldflags="-Wl,-T../config-host.ld"
4659 fi
4660 fi
4661fi
4662
Jan Kiszka50e12062014-10-02 10:03:55 +02004663# prepend pixman and ftd flags after all config tests are done
4664QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4665libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004666
bellard43ce4df2003-06-09 19:53:12 +00004667echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004668echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004669echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004670echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004671echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004672echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004673echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004674echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004675if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004676echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004677echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004678echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004679else
4680echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004681echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004682fi
bellard5a671352003-10-01 00:13:48 +00004683echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004684echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004685echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004686echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004687echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004688echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004689echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004690echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004691echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004692echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004693echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004694echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004695if test "$slirp" = "yes" ; then
4696 echo "smbd $smbd"
4697fi
Fam Zheng17969262014-02-10 14:48:56 +08004698echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004699echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004700echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004701echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004702echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004703echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004704echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004705echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004706echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004707echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004708if test "$darwin" = "yes" ; then
4709 echo "Cocoa support $cocoa"
4710fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004711echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004712echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004713echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004714echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004715echo "GNUTLS support $gnutls"
4716echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004717echo "libgcrypt $gcrypt"
Peter Maydell18f49882015-12-14 15:02:36 +00004718if test "$nettle" = "yes"; then
4719 echo "nettle $nettle ($nettle_version)"
4720else
4721 echo "nettle $nettle"
4722fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004723echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004724echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004725echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004726echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004727echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004728echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004729echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004730echo "Block whitelist (rw) $block_drv_rw_whitelist"
4731echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304732echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004733echo "VNC support $vnc"
4734if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004735 echo "VNC SASL support $vnc_sasl"
4736 echo "VNC JPEG support $vnc_jpeg"
4737 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004738fi
blueswir131422552007-04-16 18:27:06 +00004739if test -n "$sparc_cpu"; then
4740 echo "Target Sparc Arch $sparc_cpu"
4741fi
aliguorie37630c2009-04-22 15:19:10 +00004742echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004743if test "$xen" = "yes" ; then
4744 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00004745 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00004746fi
aurel322e4d9fb2008-04-08 06:01:02 +00004747echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004748echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004749echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004750echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004751echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004752echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004753echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004754echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004755echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004756echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004757echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004758echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004759echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004760echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004761echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004762echo "madvise $madvise"
4763echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004764echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004765echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004766echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004767echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004768echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004769echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01004770if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004771echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004772fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004773if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004774echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004775else
4776echo "spice support $spice"
4777fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004778echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004779echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004780echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004781echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004782echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004783echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01004784echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004785echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004786echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004787echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004788echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004789echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004790echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004791echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004792echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004793echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304794echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004795echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004796echo "gcov $gcov_tool"
4797echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004798echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004799echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004800echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004801echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004802echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004803echo "lzo support $lzo"
4804echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004805echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004806echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004807echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004808echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08004809echo "avx2 optimization $avx2_opt"
bellard67b915a2004-03-31 23:37:16 +00004810
Stefan Weil1ba16962011-07-29 22:40:45 +02004811if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004812echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004813fi
bellard97a847b2003-08-10 21:36:04 +00004814
Juan Quintela98ec69a2009-07-16 18:34:18 +02004815config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004816
Stefan Weildbd99ae2013-01-01 18:33:44 +01004817echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4818
Juan Quintela98ec69a2009-07-16 18:34:18 +02004819echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004820echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004821
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004822echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004823echo "prefix=$prefix" >> $config_host_mak
4824echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004825echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004826echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004827echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004828echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004829echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004830echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004831echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4832echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004833echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004834if test "$mingw32" = "no" ; then
4835 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4836fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004837echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004838echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4839echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004840echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004841echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004842
Juan Quintela98ec69a2009-07-16 18:34:18 +02004843echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004844
aurel32f8393942009-04-13 18:45:38 +00004845if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004846 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004847fi
aliguori1625af82009-04-05 17:41:02 +00004848if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004849 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004850fi
bellard7d132992003-03-06 23:23:54 +00004851if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004852 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004853fi
bellard67b915a2004-03-31 23:37:16 +00004854if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004855 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004856 rc_version=`cat $source_path/VERSION`
4857 version_major=${rc_version%%.*}
4858 rc_version=${rc_version#*.}
4859 version_minor=${rc_version%%.*}
4860 rc_version=${rc_version#*.}
4861 version_subminor=${rc_version%%.*}
4862 version_micro=0
4863 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4864 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004865 if test "$guest_agent_with_vss" = "yes" ; then
4866 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004867 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004868 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4869 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004870 if test "$guest_agent_ntddscsi" = "yes" ; then
4871 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4872 fi
Michael Roth1a349042015-08-26 11:14:31 -05004873 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004874 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4875 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4876 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4877 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4878 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4879 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4880 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4881 fi
pbrook210fa552007-02-27 21:04:49 +00004882else
Juan Quintela35f4df22009-07-27 16:13:07 +02004883 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004884fi
blueswir1128ab2f2008-08-15 18:33:42 +00004885
Mark McLoughlindffcb712009-10-22 17:49:11 +01004886if test "$linux" = "yes" ; then
4887 echo "CONFIG_LINUX=y" >> $config_host_mak
4888fi
4889
bellard83fb7ad2004-07-05 21:25:26 +00004890if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004891 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004892fi
malcb29fe3e2008-11-18 01:42:22 +00004893
4894if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004895 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004896fi
4897
bellardec530c82006-04-25 22:36:06 +00004898if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004899 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004900 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004901 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004902 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004903 fi
bellardec530c82006-04-25 22:36:06 +00004904fi
Andreas Färber179cf402010-09-20 00:50:43 +02004905if test "$haiku" = "yes" ; then
4906 echo "CONFIG_HAIKU=y" >> $config_host_mak
4907fi
bellard97a847b2003-08-10 21:36:04 +00004908if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004909 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004910fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004911if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004912 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004913fi
bellardc20709a2004-04-21 23:27:19 +00004914if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004915 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004916 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004917fi
ths8a16d272008-07-19 09:56:24 +00004918if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004919 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004920fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004921if test "$netmap" = "yes" ; then
4922 echo "CONFIG_NETMAP=y" >> $config_host_mak
4923fi
Gonglei015a33b2014-07-01 20:58:08 +08004924if test "$l2tpv3" = "yes" ; then
4925 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4926fi
Corey Bryant47e98652012-01-26 09:42:26 -05004927if test "$cap_ng" = "yes" ; then
4928 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4929fi
Juan Quintela2358a492009-07-27 16:13:25 +02004930echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004931for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004932 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004933 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004934done
Juan Quintela67f86e82009-08-03 14:46:59 +02004935if test "$audio_pt_int" = "yes" ; then
4936 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4937fi
malcd5631632009-10-10 01:13:41 +04004938if test "$audio_win_int" = "yes" ; then
4939 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4940fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004941echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4942echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004943if test "$vnc" = "yes" ; then
4944 echo "CONFIG_VNC=y" >> $config_host_mak
4945fi
aliguori2f9606b2009-03-06 20:27:28 +00004946if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004947 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004948fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004949if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004950 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004951fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004952if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004953 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004954fi
aliguori76655d62009-03-06 20:27:37 +00004955if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004956 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004957fi
Stefan Weilee682d22009-10-01 20:10:37 +02004958if test "$uuid" = "yes" ; then
4959 echo "CONFIG_UUID=y" >> $config_host_mak
4960fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004961if test "$xfs" = "yes" ; then
4962 echo "CONFIG_XFS=y" >> $config_host_mak
4963fi
pbrookb1a550a2006-04-16 13:28:56 +00004964qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004965echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004966echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004967echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004968echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004969if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004970 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004971fi
Fam Zheng17969262014-02-10 14:48:56 +08004972if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004973 # $shacmd can generate a hash started with digit, which the compiler doesn't
4974 # like as an symbol. So prefix it with an underscore
4975 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004976 echo "CONFIG_MODULES=y" >> $config_host_mak
4977fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004978if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004979 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004980 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004981 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004982fi
4983if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004984 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004985fi
4986if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004987 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004988fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004989if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004990 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004991fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004992if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004993 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004994fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004995if test "$accept4" = "yes" ; then
4996 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4997fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304998if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004999 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305000fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005001if test "$eventfd" = "yes" ; then
5002 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5003fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005004if test "$memfd" = "yes" ; then
5005 echo "CONFIG_MEMFD=y" >> $config_host_mak
5006fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005007if test "$fallocate" = "yes" ; then
5008 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5009fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005010if test "$fallocate_punch_hole" = "yes" ; then
5011 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5012fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005013if test "$fallocate_zero_range" = "yes" ; then
5014 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5015fi
Kevin Wolfed911432014-09-29 17:12:59 +02005016if test "$posix_fallocate" = "yes" ; then
5017 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5018fi
Peter Maydellc727f472011-01-06 11:05:10 +00005019if test "$sync_file_range" = "yes" ; then
5020 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5021fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005022if test "$fiemap" = "yes" ; then
5023 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5024fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005025if test "$dup3" = "yes" ; then
5026 echo "CONFIG_DUP3=y" >> $config_host_mak
5027fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005028if test "$ppoll" = "yes" ; then
5029 echo "CONFIG_PPOLL=y" >> $config_host_mak
5030fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005031if test "$prctl_pr_set_timerslack" = "yes" ; then
5032 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5033fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005034if test "$epoll" = "yes" ; then
5035 echo "CONFIG_EPOLL=y" >> $config_host_mak
5036fi
5037if test "$epoll_create1" = "yes" ; then
5038 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5039fi
5040if test "$epoll_pwait" = "yes" ; then
5041 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
5042fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005043if test "$sendfile" = "yes" ; then
5044 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5045fi
Riku Voipio51834342014-06-22 11:25:42 +01005046if test "$timerfd" = "yes" ; then
5047 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5048fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005049if test "$setns" = "yes" ; then
5050 echo "CONFIG_SETNS=y" >> $config_host_mak
5051fi
aurel323b3f24a2009-04-15 16:12:13 +00005052if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005053 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005054fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005055if test "$inotify1" = "yes" ; then
5056 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5057fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005058if test "$byteswap_h" = "yes" ; then
5059 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5060fi
5061if test "$bswap_h" = "yes" ; then
5062 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5063fi
Alexander Graf769ce762009-05-11 17:41:42 +02005064if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005065 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005066 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005067 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005068fi
aurel322e4d9fb2008-04-08 06:01:02 +00005069if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005070 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005071fi
balrogfb599c92008-09-28 23:49:55 +00005072if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005073 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005074 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005075fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005076if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005077 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5078fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005079echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005080if test "$gtk" = "yes" ; then
5081 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005082 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005083 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005084 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005085 if test "$gtk_gl" = "yes" ; then
5086 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5087 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005088fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005089if test "$gnutls" = "yes" ; then
5090 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5091fi
5092if test "$gnutls_hash" = "yes" ; then
5093 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
5094fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005095if test "$gcrypt" = "yes" ; then
5096 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005097fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005098if test "$nettle" = "yes" ; then
5099 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005100 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005101fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005102if test "$tasn1" = "yes" ; then
5103 echo "CONFIG_TASN1=y" >> $config_host_mak
5104fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005105if test "$have_ifaddrs_h" = "yes" ; then
5106 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5107fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005108if test "$vte" = "yes" ; then
5109 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005110 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5111fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005112if test "$virglrenderer" = "yes" ; then
5113 echo "CONFIG_VIRGL=y" >> $config_host_mak
5114 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5115 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5116fi
aliguorie37630c2009-04-22 15:19:10 +00005117if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005118 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005119 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005120 if test "$xen_pv_domain_build" = "yes" ; then
5121 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5122 fi
aliguorie37630c2009-04-22 15:19:10 +00005123fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005124if test "$linux_aio" = "yes" ; then
5125 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5126fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005127if test "$attr" = "yes" ; then
5128 echo "CONFIG_ATTR=y" >> $config_host_mak
5129fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005130if test "$libattr" = "yes" ; then
5131 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5132fi
Meador Inge983eef52012-02-24 14:00:42 +05305133if test "$virtfs" = "yes" ; then
5134 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005135fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005136if test "$vhost_scsi" = "yes" ; then
5137 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5138fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005139if test "$vhost_net" = "yes" ; then
5140 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5141fi
ths77755342008-11-27 15:45:16 +00005142if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005143 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005144fi
aliguoribf9298b2008-12-05 20:05:26 +00005145if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005146 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005147fi
aliguoriceb42de2009-04-07 18:43:28 +00005148if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005149 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005150fi
aurel32f652e6a2008-12-16 10:43:48 +00005151if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005152 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005153fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005154if test "$signalfd" = "yes" ; then
5155 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5156fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005157if test "$tcg_interpreter" = "yes" ; then
5158 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5159fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005160if test "$fdatasync" = "yes" ; then
5161 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5162fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005163if test "$madvise" = "yes" ; then
5164 echo "CONFIG_MADVISE=y" >> $config_host_mak
5165fi
5166if test "$posix_madvise" = "yes" ; then
5167 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5168fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005169if test "$sigev_thread_id" = "yes" ; then
5170 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5171fi
bellard97a847b2003-08-10 21:36:04 +00005172
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005173if test "$spice" = "yes" ; then
5174 echo "CONFIG_SPICE=y" >> $config_host_mak
5175fi
5176
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005177if test "$smartcard" = "yes" ; then
5178 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005179fi
5180
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005181if test "$libusb" = "yes" ; then
5182 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5183fi
5184
Hans de Goede69354a82011-07-19 11:04:10 +02005185if test "$usb_redir" = "yes" ; then
5186 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5187fi
5188
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005189if test "$opengl" = "yes" ; then
5190 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005191 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005192 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005193 if test "$opengl_dmabuf" = "yes" ; then
5194 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5195 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005196fi
5197
Liang Li99f2dbd2016-03-08 13:53:16 +08005198if test "$avx2_opt" = "yes" ; then
5199 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5200fi
5201
qiaonuohan607dacd2014-02-18 14:11:30 +08005202if test "$lzo" = "yes" ; then
5203 echo "CONFIG_LZO=y" >> $config_host_mak
5204fi
5205
5206if test "$snappy" = "yes" ; then
5207 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5208fi
5209
Peter Wu6b383c02015-01-06 18:48:14 +01005210if test "$bzip2" = "yes" ; then
5211 echo "CONFIG_BZIP2=y" >> $config_host_mak
5212 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5213fi
5214
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005215if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005216 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005217 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5218 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005219fi
5220
Peter Lieven6542aa92014-02-03 10:26:13 +01005221if test "$libnfs" = "yes" ; then
5222 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5223fi
5224
Eduardo Otubof7945732012-08-14 18:44:05 -03005225if test "$seccomp" = "yes"; then
5226 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5227fi
5228
bellard83fb7ad2004-07-05 21:25:26 +00005229# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005230if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005231 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005232fi
5233
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005234if test "$zero_malloc" = "yes" ; then
5235 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5236fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005237if test "$localtime_r" = "yes" ; then
5238 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5239fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005240if test "$qom_cast_debug" = "yes" ; then
5241 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5242fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005243if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005244 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005245 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5246 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005247fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005248
Peter Maydell7c2acc72013-04-08 12:11:27 +01005249echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005250if test "$coroutine_pool" = "yes" ; then
5251 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5252else
5253 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5254fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305255
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305256if test "$open_by_handle_at" = "yes" ; then
5257 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5258fi
5259
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305260if test "$linux_magic_h" = "yes" ; then
5261 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5262fi
5263
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005264if test "$pragma_diagnostic_available" = "yes" ; then
5265 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005266fi
5267
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005268if test "$valgrind_h" = "yes" ; then
5269 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5270fi
5271
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005272if test "$has_environ" = "yes" ; then
5273 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5274fi
5275
Richard Henderson76a347e2012-12-28 14:17:02 -08005276if test "$cpuid_h" = "yes" ; then
5277 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5278fi
5279
Richard Hendersonf5401662013-02-16 12:46:59 -08005280if test "$int128" = "yes" ; then
5281 echo "CONFIG_INT128=y" >> $config_host_mak
5282fi
5283
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005284if test "$getauxval" = "yes" ; then
5285 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5286fi
5287
Bharata B Raoeb100392012-09-24 14:42:45 +05305288if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005289 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005290 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5291 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305292fi
5293
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305294if test "$glusterfs_discard" = "yes" ; then
5295 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5296fi
5297
Bharata B Rao7c815372013-12-21 14:51:25 +05305298if test "$glusterfs_zerofill" = "yes" ; then
5299 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5300fi
5301
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005302if test "$archipelago" = "yes" ; then
5303 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5304 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5305fi
5306
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005307if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005308 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005309 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5310 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005311fi
5312
Jeff Cody4f18b782013-10-30 10:44:39 -04005313if test "$vhdx" = "yes" ; then
5314 echo "CONFIG_VHDX=y" >> $config_host_mak
5315fi
5316
blueswir168063642008-11-22 21:03:55 +00005317# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005318if test "$libusb" = "yes"; then
5319 echo "HOST_USB=libusb legacy" >> $config_host_mak
5320else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005321 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005322fi
blueswir168063642008-11-22 21:03:55 +00005323
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005324# TPM passthrough support?
5325if test "$tpm" = "yes"; then
5326 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5327 if test "$tpm_passthrough" = "yes"; then
5328 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5329 fi
5330fi
5331
Lluís Vilanova5b808272014-05-27 15:02:14 +02005332echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5333if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005334 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305335fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005336if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005337 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5338 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005339 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005340fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03005341if have_backend "log"; then
5342 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02005343fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005344if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005345 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5346fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005347if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005348 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5349 if test "$trace_backend_stap" = "yes" ; then
5350 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5351 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005352fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005353if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005354 if test "$linux" = "yes" ; then
5355 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005356 else
Stewart Smith21684af2014-01-24 12:39:10 +11005357 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005358 fi
5359fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005360echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5361
Michael R. Hines2da776d2013-07-22 10:01:54 -04005362if test "$rdma" = "yes" ; then
5363 echo "CONFIG_RDMA=y" >> $config_host_mak
5364fi
5365
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005366# Hold two types of flag:
5367# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5368# a thread we have a handle to
5369# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5370# platform
5371if test "$pthread_setname_np" = "yes" ; then
5372 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5373 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5374fi
5375
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005376if test "$tcg_interpreter" = "yes"; then
5377 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5378elif test "$ARCH" = "sparc64" ; then
5379 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5380elif test "$ARCH" = "s390x" ; then
5381 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005382elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005383 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005384elif test "$ARCH" = "ppc64" ; then
5385 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005386else
5387 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5388fi
5389QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5390
Juan Quintela98ec69a2009-07-16 18:34:18 +02005391echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005392echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005393echo "MAKE=$make" >> $config_host_mak
5394echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005395echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5396echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03005397echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5398echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00005399echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005400echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005401if $iasl -h > /dev/null 2>&1; then
5402 echo "IASL=$iasl" >> $config_host_mak
5403fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005404echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005405echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005406echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005407echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005408echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005409echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005410echo "AS=$as" >> $config_host_mak
5411echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005412echo "OBJCOPY=$objcopy" >> $config_host_mak
5413echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005414echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005415echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005416echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005417echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005418echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005419echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005420if test "$sparse" = "yes" ; then
5421 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005422 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005423 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005424 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5425 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5426fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005427if test "$cross_prefix" != ""; then
5428 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5429else
5430 echo "AUTOCONF_HOST := " >> $config_host_mak
5431fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005432echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005433echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005434echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005435echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005436echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005437echo "DSOSUF=$DSOSUF" >> $config_host_mak
5438echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005439echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005440echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5441echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005442echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005443echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005444if test "$gcov" = "yes" ; then
5445 echo "CONFIG_GCOV=y" >> $config_host_mak
5446 echo "GCOV=$gcov_tool" >> $config_host_mak
5447fi
Juan Quintela804edf22009-07-27 16:12:49 +02005448
Peter Maydell6efd7512011-11-30 11:59:04 +00005449# use included Linux headers
5450if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005451 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005452 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005453 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005454 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005455 ;;
5456 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005457 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005458 ;;
5459 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005460 linux_arch=s390
5461 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005462 aarch64)
5463 linux_arch=arm64
5464 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005465 mips64)
5466 linux_arch=mips
5467 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005468 *)
5469 # For most CPUs the kernel architecture name and QEMU CPU name match.
5470 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005471 ;;
5472 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005473 # For non-KVM architectures we will not have asm headers
5474 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5475 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5476 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005477fi
5478
bellard1d14ffa2005-10-30 18:58:22 +00005479for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005480target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005481config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005482target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005483target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005484
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005485case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005486 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 +02005487 target_bigendian=yes
5488 ;;
5489esac
bellard97a847b2003-08-10 21:36:04 +00005490target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005491target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005492target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005493target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005494case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005495 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005496 target_softmmu="yes"
5497 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005498 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005499 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005500 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005501 fi
pbrook9e407a82007-05-26 16:38:53 +00005502 target_user_only="yes"
5503 target_linux_user="yes"
5504 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005505 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005506 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005507 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005508 fi
blueswir184778502008-10-26 20:33:16 +00005509 target_user_only="yes"
5510 target_bsd_user="yes"
5511 ;;
pbrook9e407a82007-05-26 16:38:53 +00005512 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005513 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005514 exit 1
5515 ;;
5516esac
ths831b7822007-01-18 20:06:33 +00005517
bellard97a847b2003-08-10 21:36:04 +00005518mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005519echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005520
pbrooke5fe0c52006-06-11 13:32:59 +00005521bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005522interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005523gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005524
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005525TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005526TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005527TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005528
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005529case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005530 i386)
aurel322408a522008-04-20 20:19:44 +00005531 ;;
5532 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005533 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005534 ;;
5535 alpha)
aurel322408a522008-04-20 20:19:44 +00005536 ;;
5537 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005538 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005539 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005540 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005541 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005542 aarch64)
5543 TARGET_BASE_ARCH=arm
5544 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005545 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 +01005546 ;;
aurel322408a522008-04-20 20:19:44 +00005547 cris)
aurel322408a522008-04-20 20:19:44 +00005548 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005549 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005550 ;;
aurel322408a522008-04-20 20:19:44 +00005551 m68k)
aurel322408a522008-04-20 20:19:44 +00005552 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005553 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005554 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005555 microblaze|microblazeel)
5556 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005557 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005558 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005559 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005560 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005561 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005562 ;;
5563 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005564 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005565 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005566 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005567 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005568 ;;
5569 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005570 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005571 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005572 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005573 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005574 moxie)
5575 ;;
Jia Liue67db062012-07-20 15:50:39 +08005576 or32)
5577 TARGET_ARCH=openrisc
5578 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005579 ;;
aurel322408a522008-04-20 20:19:44 +00005580 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005581 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005582 ;;
5583 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005584 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005585 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005586 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005587 ;;
5588 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005589 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005590 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005591 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005592 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005593 ppc64le)
5594 TARGET_ARCH=ppc64
5595 TARGET_BASE_ARCH=ppc
5596 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005597 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 -05005598 ;;
aurel322408a522008-04-20 20:19:44 +00005599 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005600 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005601 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005602 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005603 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01005604 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005605 ;;
5606 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005607 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005608 bflt="yes"
5609 ;;
5610 sparc)
aurel322408a522008-04-20 20:19:44 +00005611 ;;
5612 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005613 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005614 ;;
5615 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005616 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005617 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005618 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005619 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005620 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005621 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005622 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 +01005623 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005624 tilegx)
5625 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005626 tricore)
5627 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005628 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005629 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005630 xtensa|xtensaeb)
5631 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005632 ;;
aurel322408a522008-04-20 20:19:44 +00005633 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005634 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005635 ;;
5636esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005637# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5638if [ "$TARGET_BASE_ARCH" = "" ]; then
5639 TARGET_BASE_ARCH=$TARGET_ARCH
5640fi
5641
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005642symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5643
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005644upper() {
5645 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5646}
5647
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005648target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005649echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005650echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005651echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005652if [ "$TARGET_ABI_DIR" = "" ]; then
5653 TARGET_ABI_DIR=$TARGET_ARCH
5654fi
Juan Quintela25be2102009-10-07 02:41:00 +02005655echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005656if [ "$HOST_VARIANT_DIR" != "" ]; then
5657 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5658fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005659case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005660 i386|x86_64)
5661 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005662 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005663 if test "$xen_pci_passthrough" = yes; then
5664 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5665 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005666 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005667 ;;
5668 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005669esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005670case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005671 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005672 # Make sure the target and host cpus are compatible
5673 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005674 \( "$target_name" = "$cpu" -o \
5675 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5676 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5677 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5678 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005679 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005680 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005681 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5682 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5683 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005684 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005685 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005686 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureau421f4442015-10-26 15:32:00 +01005687 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005688 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005689 fi
5690esac
bellardde83cd02003-06-15 20:25:43 +00005691if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005692 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005693fi
5694if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005695 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005696fi
bellard997344f2003-10-27 21:10:39 +00005697if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005698 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005699 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005700fi
ths831b7822007-01-18 20:06:33 +00005701if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005702 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005703fi
pbrook56aebc82008-10-11 17:55:29 +00005704list=""
5705if test ! -z "$gdb_xml_files" ; then
5706 for x in $gdb_xml_files; do
5707 list="$list $source_path/gdb-xml/$x"
5708 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005709 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005710fi
bellardde83cd02003-06-15 20:25:43 +00005711
pbrooke5fe0c52006-06-11 13:32:59 +00005712if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005713 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005714fi
blueswir184778502008-10-26 20:33:16 +00005715if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005716 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005717fi
bellard5b0753e2005-03-01 21:37:28 +00005718
Juan Quintela4afddb52009-08-03 14:46:45 +02005719# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005720
Juan Quintela4afddb52009-08-03 14:46:45 +02005721cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005722ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005723
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005724disas_config() {
5725 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5726 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5727}
5728
Juan Quintela64656022009-08-03 14:46:53 +02005729for i in $ARCH $TARGET_BASE_ARCH ; do
5730 case "$i" in
5731 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005732 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005733 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005734 aarch64)
5735 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005736 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005737 fi
5738 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005739 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005740 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005741 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005742 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005743 fi
Juan Quintela64656022009-08-03 14:46:53 +02005744 ;;
5745 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005746 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005747 ;;
5748 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005749 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005750 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005751 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005752 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005753 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005754 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005755 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005756 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005757 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005758 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005759 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005760 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005761 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005762 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005763 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005764 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005765 ;;
5766 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005767 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005768 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005769 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005770 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005771 ;;
Jia Liue67db062012-07-20 15:50:39 +08005772 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005773 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005774 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005775 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005776 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005777 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005778 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005779 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005780 ;;
5781 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005782 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005783 ;;
5784 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005785 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005786 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005787 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005788 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005789 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005790 esac
5791done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005792if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005793 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005794fi
Juan Quintela64656022009-08-03 14:46:53 +02005795
Juan Quintela6ee71262009-08-03 14:46:47 +02005796case "$ARCH" in
5797alpha)
5798 # Ensure there's only a single GP
5799 cflags="-msmall-data $cflags"
5800;;
5801esac
5802
Juan Quintelad02c1db2009-08-03 14:46:50 +02005803if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005804 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005805 if test "$target_linux_user" = "yes" ; then
5806 cflags="-p $cflags"
5807 ldflags="-p $ldflags"
5808 fi
5809 if test "$target_softmmu" = "yes" ; then
5810 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005811 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005812 fi
5813fi
5814
Juan Quintela9b8e1112009-08-03 14:46:46 +02005815if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005816 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005817fi
Juan Quintelafa282482009-07-22 22:37:39 +02005818
Juan Quintela25be2102009-10-07 02:41:00 +02005819echo "LDFLAGS+=$ldflags" >> $config_target_mak
5820echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005821
bellard97a847b2003-08-10 21:36:04 +00005822done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005823
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005824if [ "$pixman" = "internal" ]; then
5825 echo "config-host.h: subdir-pixman" >> $config_host_mak
5826fi
5827
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005828if [ "$dtc_internal" = "yes" ]; then
5829 echo "config-host.h: subdir-dtc" >> $config_host_mak
5830fi
5831
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005832if test "$numa" = "yes"; then
5833 echo "CONFIG_NUMA=y" >> $config_host_mak
5834fi
5835
John Snowfd0e6052015-03-25 18:57:39 -04005836if test "$ccache_cpp2" = "yes"; then
5837 echo "export CCACHE_CPP2=y" >> $config_host_mak
5838fi
5839
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005840# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005841DIRS="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 +04005842DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005843DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005844DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005845DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005846FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5847FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005848FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005849FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005850FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005851FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005852FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005853FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005854for bios_file in \
5855 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005856 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005857 $source_path/pc-bios/*.rom \
5858 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005859 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005860 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005861 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005862 $source_path/pc-bios/palcode-*
5863do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005864 FILES="$FILES pc-bios/`basename $bios_file`"
5865done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005866for test_file in `find $source_path/tests/acpi-test-data -type f`
5867do
5868 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5869done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005870mkdir -p $DIRS
5871for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005872 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005873 symlink "$source_path/$f" "$f"
5874 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005875done
Paul Brook1ad21342009-05-19 16:17:58 +01005876
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005877# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005878for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005879 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005880 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005881 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005882 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005883 echo "CC=$cc" >> $config_mak
5884 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005885 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005886 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005887 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005888 echo "LD=$ld" >> $config_mak
5889done
5890
Max Reitz76c75602014-05-24 23:24:56 +02005891# set up qemu-iotests in this build directory
5892iotests_common_env="tests/qemu-iotests/common.env"
5893iotests_check="tests/qemu-iotests/check"
5894
5895echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5896echo >> "$iotests_common_env"
5897echo "export PYTHON='$python'" >> "$iotests_common_env"
5898
5899if [ ! -e "$iotests_check" ]; then
5900 symlink "$source_path/$iotests_check" "$iotests_check"
5901fi
5902
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005903# Save the configure command line for later reuse.
5904cat <<EOD >config.status
5905#!/bin/sh
5906# Generated by configure.
5907# Run this file to recreate the current configuration.
5908# Compiler output produced by configure, useful for debugging
5909# configure, is in config.log if it exists.
5910EOD
5911printf "exec" >>config.status
5912printf " '%s'" "$0" "$@" >>config.status
5913echo >>config.status
5914chmod +x config.status
5915
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005916rm -r "$TMPDIR1"