blob: f4c589fb603469bb43681dfe542d9b0c74afe734 [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"
James Clarke6969ec62016-06-06 12:02:50 +010034TMPMO="${TMPDIR1}/${TMPB}.mo"
bellard7d132992003-03-06 23:23:54 +000035
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020036rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000037
Peter Maydellb48e3612011-11-23 17:26:44 +000038# Print a helpful header at the top of config.log
39echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000040printf "# Configured with:" >> config.log
41printf " '%s'" "$0" "$@" >> config.log
42echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000043echo "#" >> config.log
44
Peter Maydell76ad07a2013-04-08 12:11:26 +010045error_exit() {
46 echo
47 echo "ERROR: $1"
48 while test -n "$2"; do
49 echo " $2"
50 shift
51 done
52 echo
53 exit 1
54}
55
Peter Maydell9c83ffd2014-02-25 18:27:49 +000056do_compiler() {
57 # Run the compiler, capturing its output to the log. First argument
58 # is compiler binary to execute.
59 local compiler="$1"
60 shift
61 echo $compiler "$@" >> config.log
62 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010063 # Test passed. If this is an --enable-werror build, rerun
64 # the test with -Werror and bail out if it fails. This
65 # makes warning-generating-errors in configure test code
66 # obvious to developers.
67 if test "$werror" != "yes"; then
68 return 0
69 fi
70 # Don't bother rerunning the compile if we were already using -Werror
71 case "$*" in
72 *-Werror*)
73 return 0
74 ;;
75 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000076 echo $compiler -Werror "$@" >> config.log
77 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010078 error_exit "configure test passed without -Werror but failed with -Werror." \
79 "This is probably a bug in the configure script. The failing command" \
80 "will be at the bottom of config.log." \
81 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010082}
83
Peter Maydell9c83ffd2014-02-25 18:27:49 +000084do_cc() {
85 do_compiler "$cc" "$@"
86}
87
88do_cxx() {
89 do_compiler "$cxx" "$@"
90}
91
92update_cxxflags() {
93 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
94 # options which some versions of GCC's C++ compiler complain about
95 # because they only make sense for C programs.
96 QEMU_CXXFLAGS=
97 for arg in $QEMU_CFLAGS; do
98 case $arg in
99 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
100 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
101 ;;
102 *)
103 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
104 ;;
105 esac
106 done
107}
108
Juan Quintela52166aa2009-08-03 14:46:03 +0200109compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400110 local_cflags="$1"
111 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200112}
113
114compile_prog() {
115 local_cflags="$1"
116 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100117 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200118}
119
Paolo Bonzini11568d62010-12-23 11:43:58 +0100120# symbolically link $1 to $2. Portable version of "ln -sf".
121symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100122 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800123 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100124 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100125}
126
Loïc Minier0dba6192010-01-28 21:26:51 +0000127# check whether a command is available to this shell (may be either an
128# executable or a builtin)
129has() {
130 type "$1" >/dev/null 2>&1
131}
132
133# search for an executable in PATH
134path_of() {
135 local_command="$1"
136 local_ifs="$IFS"
137 local_dir=""
138
139 # pathname has a dir component?
140 if [ "${local_command#*/}" != "$local_command" ]; then
141 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
142 echo "$local_command"
143 return 0
144 fi
145 fi
146 if [ -z "$local_command" ]; then
147 return 1
148 fi
149
150 IFS=:
151 for local_dir in $PATH; do
152 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
153 echo "$local_dir/$local_command"
154 IFS="${local_ifs:-$(printf ' \t\n')}"
155 return 0
156 fi
157 done
158 # not found
159 IFS="${local_ifs:-$(printf ' \t\n')}"
160 return 1
161}
162
Lluís Vilanova5b808272014-05-27 15:02:14 +0200163have_backend () {
164 echo "$trace_backends" | grep "$1" >/dev/null
165}
166
bellard7d132992003-03-06 23:23:54 +0000167# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200168source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200169cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300170iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000171interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000172static="no"
bellard7d132992003-03-06 23:23:54 +0000173cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000174audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800175block_drv_rw_whitelist=""
176block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000177host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200178libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200179libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200180audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400181audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200182cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500183libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100184debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100185stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000186
Stefan Weilafb63eb2012-09-26 22:04:38 +0200187# Don't accept a target_list environment variable.
188unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100189
190# Default value for a variable defining feature "foo".
191# * foo="no" feature will only be used if --enable-foo arg is given
192# * foo="" feature will be searched for, and if found, will be used
193# unless --disable-foo is given
194# * foo="yes" this value will only be set by --enable-foo flag.
195# feature will searched for,
196# if not found, configure exits with error
197#
198# Always add --enable-foo and --disable-foo command line args.
199# Distributions want to ensure that several features are compiled in, and it
200# is impossible without a --enable-foo that exits if a feature is not found.
201
202bluez=""
203brlapi=""
204curl=""
205curses=""
206docs=""
207fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100208netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200209pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100210sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400211sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530212virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100213vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100214sparse="no"
215uuid=""
216vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100217vnc_sasl=""
218vnc_jpeg=""
219vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100220xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000221xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000222xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000223xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100224linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500225cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100226attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200227libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100228xfs=""
229
Bradd41a75a2011-07-26 23:11:26 -0400230vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000231vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100232vhost_vsock="no"
Bradd41a75a2011-07-26 23:11:26 -0400233kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400234rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100235gprof="no"
236debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100237debug="no"
John Snowb553a042015-11-03 15:43:42 -0500238fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100239strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200240tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100241bigendian="no"
242mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000243gcov="no"
244gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100245EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800246DSOSUF=".so"
247LDFLAGS_SHARED="-shared"
248modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100249prefix="/usr/local"
250mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300251datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300252qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100253bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300254libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400255libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200256includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100257sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300258local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100259confsuffix="/qemu"
260slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100261oss_lib=""
262bsd="no"
263linux="no"
264solaris="no"
265profiler="no"
266cocoa="no"
267softmmu="yes"
268linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100269bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100270aix="no"
271blobs="yes"
272pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200273pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200274qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300275trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100276trace_file="trace"
277spice=""
278rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200279smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100280libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200281usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100282opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100283opengl_dmabuf="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800284avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300285zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200286lzo=""
287snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100288bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400289guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400290guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500291guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300292guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400293vss_win32_sdk=""
294win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100295want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100296libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100297libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100298coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200299coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300300seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530301glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400302glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530303glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530304glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100305archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600306gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200307gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200308gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100309tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100310gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900311gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100312nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100313nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100314gcrypt=""
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100315gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100316vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200317virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400318tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100319libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400320vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800321numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800322tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200323jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800324replication="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100325
aliguoriac0df512008-12-29 17:14:15 +0000326# parse CC options first
327for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200328 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000329 case "$opt" in
330 --cross-prefix=*) cross_prefix="$optarg"
331 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100332 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000333 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400334 --cxx=*) CXX="$optarg"
335 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100336 --source-path=*) source_path="$optarg"
337 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200338 --cpu=*) cpu="$optarg"
339 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100340 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100341 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200342 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100343 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100344 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200345 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100346 --enable-debug-info) debug_info="yes"
347 ;;
348 --disable-debug-info) debug_info="no"
349 ;;
aliguoriac0df512008-12-29 17:14:15 +0000350 esac
351done
aliguoriac0df512008-12-29 17:14:15 +0000352# OS specific
353# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100354# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000355
Peter Maydelle49d0212012-12-07 15:39:13 +0000356# Preferred compiler:
357# ${CC} (if set)
358# ${cross_prefix}gcc (if cross-prefix specified)
359# system compiler
360if test -z "${CC}${cross_prefix}"; then
361 cc="$host_cc"
362else
363 cc="${CC-${cross_prefix}gcc}"
364fi
365
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400366if test -z "${CXX}${cross_prefix}"; then
367 cxx="c++"
368else
369 cxx="${CXX-${cross_prefix}g++}"
370fi
371
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500372ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700373as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700374ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000375cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500376objcopy="${OBJCOPY-${cross_prefix}objcopy}"
377ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200378nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500379strip="${STRIP-${cross_prefix}strip}"
380windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300381pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
382query_pkg_config() {
383 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
384}
385pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500386sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000387sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000388
Peter Maydell45d285a2013-10-21 21:03:06 +0100389# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
390ARFLAGS="${ARFLAGS-rv}"
391
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200392# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100393# We use -fwrapv to tell the compiler that we require a C dialect where
394# left shift of signed integers is well defined and has the expected
395# 2s-complement style results. (Both clang and gcc agree that it
396# provides these semantics.)
397QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400398QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100399QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200400QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200401QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100402if test "$debug_info" = "yes"; then
403 CFLAGS="-g $CFLAGS"
404 LDFLAGS="-g $LDFLAGS"
405fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200406
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100407# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200408source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100409
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300410# running configure in the source tree?
411# we know that's the case if configure is there.
412if test -f "./configure"; then
413 pwd_is_source_path="y"
414else
415 pwd_is_source_path="n"
416fi
417
aliguoriac0df512008-12-29 17:14:15 +0000418check_define() {
419cat > $TMPC <<EOF
420#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000421#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000422#endif
423int main(void) { return 0; }
424EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200425 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000426}
427
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200428check_include() {
429cat > $TMPC <<EOF
430#include <$1>
431int main(void) { return 0; }
432EOF
433 compile_object
434}
435
John Snow93b25862015-03-25 18:57:37 -0400436write_c_skeleton() {
437 cat > $TMPC <<EOF
438int main(void) { return 0; }
439EOF
440}
441
Peter Maydellbbea4052012-08-14 15:35:34 +0100442if check_define __linux__ ; then
443 targetos="Linux"
444elif check_define _WIN32 ; then
445 targetos='MINGW32'
446elif check_define __OpenBSD__ ; then
447 targetos='OpenBSD'
448elif check_define __sun__ ; then
449 targetos='SunOS'
450elif check_define __HAIKU__ ; then
451 targetos='Haiku'
452else
Stefan Weil89138852016-05-16 15:10:20 +0200453 targetos=$(uname -s)
Peter Maydellbbea4052012-08-14 15:35:34 +0100454fi
455
456# Some host OSes need non-standard checks for which CPU to use.
457# Note that these checks are broken for cross-compilation: if you're
458# cross-compiling to one of these OSes then you'll need to specify
459# the correct CPU with the --cpu option.
460case $targetos in
461Darwin)
462 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
463 # run 64-bit userspace code.
464 # If the user didn't specify a CPU explicitly and the kernel says this is
465 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
466 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
467 cpu="x86_64"
468 fi
469 ;;
470SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200471 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100472 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
473 cpu="x86_64"
474 fi
475esac
476
Juan Quintela2ff6b912009-08-03 14:45:55 +0200477if test ! -z "$cpu" ; then
478 # command line argument
479 :
480elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000481 cpu="i386"
482elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700483 if check_define __ILP32__ ; then
484 cpu="x32"
485 else
486 cpu="x86_64"
487 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000488elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000489 if check_define __arch64__ ; then
490 cpu="sparc64"
491 else
492 cpu="sparc"
493 fi
malcfdf7ed92009-01-14 18:39:52 +0000494elif check_define _ARCH_PPC ; then
495 if check_define _ARCH_PPC64 ; then
496 cpu="ppc64"
497 else
498 cpu="ppc"
499 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200500elif check_define __mips__ ; then
501 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200502elif check_define __ia64__ ; then
503 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200504elif check_define __s390__ ; then
505 if check_define __s390x__ ; then
506 cpu="s390x"
507 else
508 cpu="s390"
509 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100510elif check_define __arm__ ; then
511 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100512elif check_define __aarch64__ ; then
513 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400514elif check_define __hppa__ ; then
515 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000516else
Stefan Weil89138852016-05-16 15:10:20 +0200517 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000518fi
519
Peter Maydell359bc952011-12-24 13:07:25 +0000520ARCH=
521# Normalise host CPU name and set ARCH.
522# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000523case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700524 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200525 cpu="$cpu"
526 ;;
bellard7d132992003-03-06 23:23:54 +0000527 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000528 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000529 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000530 x86_64|amd64)
531 cpu="x86_64"
532 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100533 armv*b|armv*l|arm)
534 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000535 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100536 aarch64)
537 cpu="aarch64"
538 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200539 mips*)
540 cpu="mips"
541 ;;
blueswir131422552007-04-16 18:27:06 +0000542 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000543 cpu="sparc"
544 ;;
bellard7d132992003-03-06 23:23:54 +0000545 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000546 # This will result in either an error or falling back to TCI later
547 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000548 ;;
549esac
Peter Maydell359bc952011-12-24 13:07:25 +0000550if test -z "$ARCH"; then
551 ARCH="$cpu"
552fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200553
bellard7d132992003-03-06 23:23:54 +0000554# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200555
Stacey Sonadfc3e92014-06-08 09:57:22 -0700556# host *BSD for user mode
557HOST_VARIANT_DIR=""
558
bellard7d132992003-03-06 23:23:54 +0000559case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000560CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200561 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200562 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200563 audio_possible_drivers="sdl"
564 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000565;;
bellard67b915a2004-03-31 23:37:16 +0000566MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200567 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200568 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200569 if check_include dsound.h; then
570 audio_drv_list="dsound"
571 else
572 audio_drv_list=""
573 fi
bellard67b915a2004-03-31 23:37:16 +0000574;;
ths5c40d2b2007-06-23 16:03:36 +0000575GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100576 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200577 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200578 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000579;;
bellard7d3505c2004-05-12 19:32:15 +0000580FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200581 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100582 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200583 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200584 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100585 # needed for kinfo_getvmmap(3) in libutil.h
586 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100587 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700588 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000589;;
blueswir1c5e97232009-03-07 20:06:23 +0000590DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200591 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100592 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200593 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200594 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700595 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000596;;
bellard7d3505c2004-05-12 19:32:15 +0000597NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200598 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100599 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200600 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200601 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700603 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000604;;
605OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200606 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100607 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400608 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200609 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700610 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000611;;
bellard83fb7ad2004-07-05 21:25:26 +0000612Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200613 bsd="yes"
614 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800615 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200616 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200617 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200618 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200619 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200620 cocoa="yes"
621 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200622 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200623 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200624 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100625 # Disable attempts to use ObjectiveC features in os/object.h since they
626 # won't work when we're compiling with gcc as a C compiler.
627 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700628 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000629;;
bellardec530c82006-04-25 22:36:06 +0000630SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200631 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100632 make="${MAKE-gmake}"
633 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000634 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400635 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200636 needs_libsunmath="no"
Stefan Weil89138852016-05-16 15:10:20 +0200637 solarisrev=$(uname -r | cut -f2 -d.)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200638 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
639 if test "$solarisrev" -le 9 ; then
640 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
641 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200642 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
643 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
644 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200645 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100646 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
647 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
648 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
649 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200650 fi
thsef18c882007-09-16 22:12:39 +0000651 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200652 fi
653 if test -f /usr/include/sys/soundcard.h ; then
654 audio_drv_list="oss"
655 fi
656 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000657# needed for CMSG_ macros in sys/socket.h
658 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
659# needed for TIOCWIN* defines in termios.h
660 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200661 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200662 solarisnetlibs="-lsocket -lnsl -lresolv"
663 LIBS="$solarisnetlibs $LIBS"
664 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000665;;
malcb29fe3e2008-11-18 01:42:22 +0000666AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200667 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100668 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000669;;
Andreas Färber179cf402010-09-20 00:50:43 +0200670Haiku)
671 haiku="yes"
672 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
673 LIBS="-lposix_error_mapper -lnetwork $LIBS"
674;;
bellard1d14ffa2005-10-30 18:58:22 +0000675*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200676 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200677 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200678 linux="yes"
679 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200680 kvm="yes"
681 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000682 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100683 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000684 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000685;;
bellard7d132992003-03-06 23:23:54 +0000686esac
687
bellard7d3505c2004-05-12 19:32:15 +0000688if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000689 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200690 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000691 fi
bellard7d3505c2004-05-12 19:32:15 +0000692fi
693
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100694: ${make=${MAKE-make}}
695: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100696: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400697: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100698
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100699# Default objcc to clang if available, otherwise use CC
700if has clang; then
701 objcc=clang
702else
703 objcc="$cc"
704fi
705
Juan Quintela3457a3f2009-08-03 14:46:07 +0200706if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200707 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800708 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200709 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100710 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
711 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100712 # MinGW needs -mthreads for TLS and macro _MT.
713 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100714 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400715 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100716 if compile_prog "" "-liberty" ; then
717 LIBS="-liberty $LIBS"
718 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200719 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200720 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300721 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300722 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200723 bindir="\${prefix}"
724 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200725 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200726 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200727 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200728fi
729
Anthony Liguori487fefd2009-06-11 13:28:25 -0500730werror=""
bellard85aa5182007-11-11 20:17:03 +0000731
bellard7d132992003-03-06 23:23:54 +0000732for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200733 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000734 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000735 --help|-h) show_help=yes
736 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400737 --version|-V) exec cat $source_path/VERSION
738 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000739 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000740 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000741 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000742 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100743 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000744 ;;
aliguoriac0df512008-12-29 17:14:15 +0000745 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000746 ;;
aliguoriac0df512008-12-29 17:14:15 +0000747 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000748 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000749 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000750 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400751 --cxx=*)
752 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200753 --iasl=*) iasl="$optarg"
754 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100755 --objcc=*) objcc="$optarg"
756 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000757 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000758 ;;
pbrook6a882642006-04-17 13:57:12 +0000759 --install=*) install="$optarg"
760 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000761 --python=*) python="$optarg"
762 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000763 --gcov=*) gcov_tool="$optarg"
764 ;;
Brade2d88302011-09-02 16:53:28 -0400765 --smbd=*) smbd="$optarg"
766 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200767 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000768 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200769 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000770 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100771 --enable-debug-info)
772 ;;
773 --disable-debug-info)
774 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800775 --enable-modules)
776 modules="yes"
777 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000778 --disable-modules)
779 modules="no"
780 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200781 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000782 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000783 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000784 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200785 --enable-trace-backends=*) trace_backends="$optarg"
786 ;;
787 # XXX: backwards compatibility
788 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100789 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100790 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100791 ;;
bellard7d132992003-03-06 23:23:54 +0000792 --enable-gprof) gprof="yes"
793 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000794 --enable-gcov) gcov="yes"
795 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100796 --static)
797 static="yes"
798 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300799 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000800 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200801 --mandir=*) mandir="$optarg"
802 ;;
803 --bindir=*) bindir="$optarg"
804 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300805 --libdir=*) libdir="$optarg"
806 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400807 --libexecdir=*) libexecdir="$optarg"
808 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200809 --includedir=*) includedir="$optarg"
810 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300811 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200812 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300813 --with-confsuffix=*) confsuffix="$optarg"
814 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300815 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200816 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100817 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600818 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300819 --localstatedir=*) local_statedir="$optarg"
820 ;;
821 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400822 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
823 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
824 # These switches are silently ignored, for compatibility with
825 # autoconf-generated configure scripts. This allows QEMU's
826 # configure to be used by RPM and similar macros that set
827 # lots of directory switches by default.
828 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200829 --with-system-pixman) pixman="system"
830 ;;
831 --without-system-pixman) pixman="internal"
832 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100833 --without-pixman) pixman="none"
834 ;;
bellard97a847b2003-08-10 21:36:04 +0000835 --disable-sdl) sdl="no"
836 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200837 --enable-sdl) sdl="yes"
838 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000839 --with-sdlabi=*) sdlabi="$optarg"
840 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200841 --disable-qom-cast-debug) qom_cast_debug="no"
842 ;;
843 --enable-qom-cast-debug) qom_cast_debug="yes"
844 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530845 --disable-virtfs) virtfs="no"
846 ;;
847 --enable-virtfs) virtfs="yes"
848 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100849 --disable-vnc) vnc="no"
850 ;;
851 --enable-vnc) vnc="yes"
852 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000853 --oss-lib=*) oss_lib="$optarg"
854 ;;
malc0c58ac12008-06-25 21:04:05 +0000855 --audio-drv-list=*) audio_drv_list="$optarg"
856 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200857 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800858 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200859 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100860 ;;
aurel32f8393942009-04-13 18:45:38 +0000861 --enable-debug-tcg) debug_tcg="yes"
862 ;;
863 --disable-debug-tcg) debug_tcg="no"
864 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100865 --enable-debug)
866 # Enable debugging options that aren't excessively noisy
867 debug_tcg="yes"
868 debug="yes"
869 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500870 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100871 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000872 --enable-sparse) sparse="yes"
873 ;;
874 --disable-sparse) sparse="no"
875 ;;
aliguori1625af82009-04-05 17:41:02 +0000876 --disable-strip) strip_opt="no"
877 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000878 --disable-vnc-sasl) vnc_sasl="no"
879 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200880 --enable-vnc-sasl) vnc_sasl="yes"
881 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200882 --disable-vnc-jpeg) vnc_jpeg="no"
883 ;;
884 --enable-vnc-jpeg) vnc_jpeg="yes"
885 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200886 --disable-vnc-png) vnc_png="no"
887 ;;
888 --enable-vnc-png) vnc_png="yes"
889 ;;
bellard443f1372004-06-04 11:13:20 +0000890 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000891 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200892 --disable-uuid) uuid="no"
893 ;;
894 --enable-uuid) uuid="yes"
895 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000896 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000897 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200898 --enable-vde) vde="yes"
899 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100900 --disable-netmap) netmap="no"
901 ;;
902 --enable-netmap) netmap="yes"
903 ;;
aliguorie37630c2009-04-22 15:19:10 +0000904 --disable-xen) xen="no"
905 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200906 --enable-xen) xen="yes"
907 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000908 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
909 ;;
910 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
911 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +0000912 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
913 ;;
914 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
915 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000916 --disable-brlapi) brlapi="no"
917 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200918 --enable-brlapi) brlapi="yes"
919 ;;
balrogfb599c92008-09-28 23:49:55 +0000920 --disable-bluez) bluez="no"
921 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200922 --enable-bluez) bluez="yes"
923 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000924 --disable-kvm) kvm="no"
925 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200926 --enable-kvm) kvm="yes"
927 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200928 --disable-tcg-interpreter) tcg_interpreter="no"
929 ;;
930 --enable-tcg-interpreter) tcg_interpreter="yes"
931 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500932 --disable-cap-ng) cap_ng="no"
933 ;;
934 --enable-cap-ng) cap_ng="yes"
935 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100936 --disable-spice) spice="no"
937 ;;
938 --enable-spice) spice="yes"
939 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100940 --disable-libiscsi) libiscsi="no"
941 ;;
942 --enable-libiscsi) libiscsi="yes"
943 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100944 --disable-libnfs) libnfs="no"
945 ;;
946 --enable-libnfs) libnfs="yes"
947 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000948 --enable-profiler) profiler="yes"
949 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400950 --disable-cocoa) cocoa="no"
951 ;;
malcc2de5c92008-06-28 19:13:06 +0000952 --enable-cocoa)
953 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +0200954 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +0000955 ;;
pbrookcad25d62006-03-19 16:31:11 +0000956 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000957 ;;
pbrookcad25d62006-03-19 16:31:11 +0000958 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000959 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000960 --disable-user)
961 linux_user="no" ;
962 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000963 ;;
964 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000965 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000966 ;;
ths831b7822007-01-18 20:06:33 +0000967 --enable-linux-user) linux_user="yes"
968 ;;
blueswir184778502008-10-26 20:33:16 +0000969 --disable-bsd-user) bsd_user="no"
970 ;;
971 --enable-bsd-user) bsd_user="yes"
972 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200973 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300974 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200975 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300976 ;;
bellard85aa5182007-11-11 20:17:03 +0000977 --enable-werror) werror="yes"
978 ;;
979 --disable-werror) werror="no"
980 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100981 --enable-stack-protector) stack_protector="yes"
982 ;;
983 --disable-stack-protector) stack_protector="no"
984 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000985 --disable-curses) curses="no"
986 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200987 --enable-curses) curses="yes"
988 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200989 --disable-curl) curl="no"
990 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200991 --enable-curl) curl="yes"
992 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200993 --disable-fdt) fdt="no"
994 ;;
995 --enable-fdt) fdt="yes"
996 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +0200997 --disable-linux-aio) linux_aio="no"
998 ;;
999 --enable-linux-aio) linux_aio="yes"
1000 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001001 --disable-attr) attr="no"
1002 ;;
1003 --enable-attr) attr="yes"
1004 ;;
ths77755342008-11-27 15:45:16 +00001005 --disable-blobs) blobs="no"
1006 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001007 --with-pkgversion=*) pkgversion=" ($optarg)"
1008 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001009 --with-coroutine=*) coroutine="$optarg"
1010 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001011 --disable-coroutine-pool) coroutine_pool="no"
1012 ;;
1013 --enable-coroutine-pool) coroutine_pool="yes"
1014 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001015 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001016 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001017 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001018 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001019 --disable-vhost-net) vhost_net="no"
1020 ;;
1021 --enable-vhost-net) vhost_net="yes"
1022 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001023 --disable-vhost-scsi) vhost_scsi="no"
1024 ;;
1025 --enable-vhost-scsi) vhost_scsi="yes"
1026 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001027 --disable-vhost-vsock) vhost_vsock="no"
1028 ;;
1029 --enable-vhost-vsock) vhost_vsock="yes"
1030 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001031 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001032 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001033 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001034 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001035 --disable-rbd) rbd="no"
1036 ;;
1037 --enable-rbd) rbd="yes"
1038 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001039 --disable-xfsctl) xfs="no"
1040 ;;
1041 --enable-xfsctl) xfs="yes"
1042 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001043 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001044 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001045 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001046 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001047 --disable-libusb) libusb="no"
1048 ;;
1049 --enable-libusb) libusb="yes"
1050 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001051 --disable-usb-redir) usb_redir="no"
1052 ;;
1053 --enable-usb-redir) usb_redir="yes"
1054 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001055 --disable-zlib-test) zlib="no"
1056 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001057 --disable-lzo) lzo="no"
1058 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001059 --enable-lzo) lzo="yes"
1060 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001061 --disable-snappy) snappy="no"
1062 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001063 --enable-snappy) snappy="yes"
1064 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001065 --disable-bzip2) bzip2="no"
1066 ;;
1067 --enable-bzip2) bzip2="yes"
1068 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001069 --enable-guest-agent) guest_agent="yes"
1070 ;;
1071 --disable-guest-agent) guest_agent="no"
1072 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001073 --enable-guest-agent-msi) guest_agent_msi="yes"
1074 ;;
1075 --disable-guest-agent-msi) guest_agent_msi="no"
1076 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001077 --with-vss-sdk) vss_win32_sdk=""
1078 ;;
1079 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1080 ;;
1081 --without-vss-sdk) vss_win32_sdk="no"
1082 ;;
1083 --with-win-sdk) win_sdk=""
1084 ;;
1085 --with-win-sdk=*) win_sdk="$optarg"
1086 ;;
1087 --without-win-sdk) win_sdk="no"
1088 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001089 --enable-tools) want_tools="yes"
1090 ;;
1091 --disable-tools) want_tools="no"
1092 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001093 --enable-seccomp) seccomp="yes"
1094 ;;
1095 --disable-seccomp) seccomp="no"
1096 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301097 --disable-glusterfs) glusterfs="no"
1098 ;;
1099 --enable-glusterfs) glusterfs="yes"
1100 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001101 --disable-archipelago) archipelago="no"
1102 ;;
1103 --enable-archipelago) archipelago="yes"
1104 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001105 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1106 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001107 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001108 --disable-gtk) gtk="no"
1109 ;;
1110 --enable-gtk) gtk="yes"
1111 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001112 --tls-priority=*) tls_priority="$optarg"
1113 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001114 --disable-gnutls) gnutls="no"
1115 ;;
1116 --enable-gnutls) gnutls="yes"
1117 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001118 --disable-nettle) nettle="no"
1119 ;;
1120 --enable-nettle) nettle="yes"
1121 ;;
1122 --disable-gcrypt) gcrypt="no"
1123 ;;
1124 --enable-gcrypt) gcrypt="yes"
1125 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001126 --enable-rdma) rdma="yes"
1127 ;;
1128 --disable-rdma) rdma="no"
1129 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001130 --with-gtkabi=*) gtkabi="$optarg"
1131 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001132 --disable-vte) vte="no"
1133 ;;
1134 --enable-vte) vte="yes"
1135 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001136 --disable-virglrenderer) virglrenderer="no"
1137 ;;
1138 --enable-virglrenderer) virglrenderer="yes"
1139 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001140 --disable-tpm) tpm="no"
1141 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001142 --enable-tpm) tpm="yes"
1143 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001144 --disable-libssh2) libssh2="no"
1145 ;;
1146 --enable-libssh2) libssh2="yes"
1147 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001148 --enable-vhdx) vhdx="yes"
1149 ;;
1150 --disable-vhdx) vhdx="no"
1151 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001152 --disable-numa) numa="no"
1153 ;;
1154 --enable-numa) numa="yes"
1155 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001156 --disable-tcmalloc) tcmalloc="no"
1157 ;;
1158 --enable-tcmalloc) tcmalloc="yes"
1159 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001160 --disable-jemalloc) jemalloc="no"
1161 ;;
1162 --enable-jemalloc) jemalloc="yes"
1163 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001164 --disable-replication) replication="no"
1165 ;;
1166 --enable-replication) replication="yes"
1167 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001168 *)
1169 echo "ERROR: unknown option $opt"
1170 echo "Try '$0 --help' for more information"
1171 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001172 ;;
bellard7d132992003-03-06 23:23:54 +00001173 esac
1174done
1175
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001176if ! has $python; then
1177 error_exit "Python not found. Use --python=/path/to/python"
1178fi
1179
1180# Note that if the Python conditional here evaluates True we will exit
1181# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001182if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1183 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001184 "Note that Python 3 or later is not yet supported." \
1185 "Use --python=/path/to/python to specify a supported Python."
1186fi
1187
Markus Armbrusterfec21032015-09-04 21:53:03 +02001188# Suppress writing compiled files
1189python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001190
bellard40293e52008-01-31 11:32:10 +00001191case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001192 ppc)
1193 CPU_CFLAGS="-m32"
1194 LDFLAGS="-m32 $LDFLAGS"
1195 ;;
1196 ppc64)
1197 CPU_CFLAGS="-m64"
1198 LDFLAGS="-m64 $LDFLAGS"
1199 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001200 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001201 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001202 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001203 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001204 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001205 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001206 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001207 ;;
ths76d83bd2007-11-18 21:22:10 +00001208 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001209 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001210 LDFLAGS="-m31 $LDFLAGS"
1211 ;;
1212 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001213 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001214 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001215 ;;
bellard40293e52008-01-31 11:32:10 +00001216 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001217 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001218 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001219 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001220 ;;
1221 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001222 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001223 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001224 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001225 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001226 x32)
1227 CPU_CFLAGS="-mx32"
1228 LDFLAGS="-mx32 $LDFLAGS"
1229 cc_i386='$(CC) -m32'
1230 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001231 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001232esac
1233
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001234QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1235EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1236
Peter Maydellaffc88c2016-06-13 11:32:24 +01001237# For user-mode emulation the host arch has to be one we explicitly
1238# support, even if we're using TCI.
1239if [ "$ARCH" = "unknown" ]; then
1240 bsd_user="no"
1241 linux_user="no"
1242fi
1243
Peter Maydell60e0df22011-05-03 14:50:13 +01001244default_target_list=""
1245
Peter Maydell6e92f822013-05-20 16:16:15 +01001246mak_wilds=""
1247
1248if [ "$softmmu" = "yes" ]; then
1249 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001250fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001251if [ "$linux_user" = "yes" ]; then
1252 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001253fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001254if [ "$bsd_user" = "yes" ]; then
1255 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001256fi
1257
Peter Maydell6e92f822013-05-20 16:16:15 +01001258for config in $mak_wilds; do
1259 default_target_list="${default_target_list} $(basename "$config" .mak)"
1260done
1261
pbrookaf5db582006-04-08 14:26:41 +00001262if test x"$show_help" = x"yes" ; then
1263cat << EOF
1264
1265Usage: configure [options]
1266Options: [defaults in brackets after descriptions]
1267
Stefan Weil08fb77e2013-12-18 22:09:39 +01001268Standard options:
1269 --help print this message
1270 --prefix=PREFIX install in PREFIX [$prefix]
1271 --interp-prefix=PREFIX where to find shared libraries, etc.
1272 use %M for cpu name [$interp_prefix]
1273 --target-list=LIST set target list (default: build everything)
1274$(echo Available targets: $default_target_list | \
1275 fold -s -w 53 | sed -e 's/^/ /')
1276
1277Advanced options (experts only):
1278 --source-path=PATH path of source code [$source_path]
1279 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1280 --cc=CC use C compiler CC [$cc]
1281 --iasl=IASL use ACPI compiler IASL [$iasl]
1282 --host-cc=CC use C compiler CC [$host_cc] for code run at
1283 build time
1284 --cxx=CXX use C++ compiler CXX [$cxx]
1285 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1286 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1287 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1288 --make=MAKE use specified make [$make]
1289 --install=INSTALL use specified install [$install]
1290 --python=PYTHON use specified python [$python]
1291 --smbd=SMBD use specified smbd [$smbd]
1292 --static enable static build [$static]
1293 --mandir=PATH install man pages in PATH
1294 --datadir=PATH install firmware in PATH$confsuffix
1295 --docdir=PATH install documentation in PATH$confsuffix
1296 --bindir=PATH install binaries in PATH
1297 --libdir=PATH install libraries in PATH
1298 --sysconfdir=PATH install config in PATH$confsuffix
1299 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001300 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001301 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001302 --disable-strip disable stripping binaries
1303 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001304 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001305 --audio-drv-list=LIST set audio drivers list:
1306 Available drivers: $audio_possible_drivers
1307 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1308 --block-drv-rw-whitelist=L
1309 set block driver read-write whitelist
1310 (affects only QEMU, not qemu-img)
1311 --block-drv-ro-whitelist=L
1312 set block driver read-only whitelist
1313 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001314 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001315 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1316 --with-trace-file=NAME Full PATH,NAME of file to store traces
1317 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001318 --disable-slirp disable SLIRP userspace network connectivity
1319 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1320 --oss-lib path to OSS library
1321 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001322 --with-coroutine=BACKEND coroutine backend. Supported options:
1323 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001324 --enable-gcov enable test coverage analysis with gcov
1325 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001326 --disable-blobs disable installing provided firmware blobs
1327 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1328 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001329 --tls-priority default TLS protocol/cipher priority string
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001330
1331Optional features, enabled with --enable-FEATURE and
1332disabled with --disable-FEATURE, default is enabled if available:
1333
1334 system all system emulation targets
1335 user supported user emulation targets
1336 linux-user all linux usermode emulation targets
1337 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001338 docs build documentation
1339 guest-agent build the QEMU Guest Agent
1340 guest-agent-msi build guest agent Windows MSI installation package
1341 pie Position Independent Executables
1342 modules modules support
1343 debug-tcg TCG debugging (default is disabled)
1344 debug-info debugging information
1345 sparse sparse checker
1346
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001347 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001348 nettle nettle cryptography support
1349 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001350 sdl SDL UI
1351 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1352 gtk gtk UI
1353 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1354 vte vte support for the gtk UI
1355 curses curses UI
1356 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001357 vnc-sasl SASL encryption for VNC server
1358 vnc-jpeg JPEG lossy compression for VNC server
1359 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001360 cocoa Cocoa UI (Mac OS X only)
1361 virtfs VirtFS
1362 xen xen backend driver support
1363 xen-pci-passthrough
1364 brlapi BrlAPI (Braile)
1365 curl curl connectivity
1366 fdt fdt device tree
1367 bluez bluez stack connectivity
1368 kvm KVM acceleration support
1369 rdma RDMA-based migration support
1370 uuid uuid support
1371 vde support for vde network
1372 netmap support for netmap network
1373 linux-aio Linux AIO support
1374 cap-ng libcap-ng support
1375 attr attr and xattr support
1376 vhost-net vhost-net acceleration support
1377 spice spice
1378 rbd rados block device (rbd)
1379 libiscsi iscsi support
1380 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001381 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001382 libusb libusb (for usb passthrough)
1383 usb-redir usb network redirection support
1384 lzo support of lzo compression library
1385 snappy support of snappy compression library
1386 bzip2 support of bzip2 compression library
1387 (for reading bzip2-compressed dmg images)
1388 seccomp seccomp support
1389 coroutine-pool coroutine freelist (better performance)
1390 glusterfs GlusterFS backend
1391 archipelago Archipelago backend
1392 tpm TPM support
1393 libssh2 ssh block device support
1394 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001395 numa libnuma support
1396 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001397 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001398 replication replication support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001399
1400NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001401EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001402exit 0
pbrookaf5db582006-04-08 14:26:41 +00001403fi
1404
Peter Maydell359bc952011-12-24 13:07:25 +00001405# Now we have handled --enable-tcg-interpreter and know we're not just
1406# printing the help message, bail out if the host CPU isn't supported.
1407if test "$ARCH" = "unknown"; then
1408 if test "$tcg_interpreter" = "yes" ; then
1409 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001410 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001411 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001412 fi
1413fi
1414
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001415# Consult white-list to determine whether to enable werror
1416# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001417if test -z "$werror" ; then
1418 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001419 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001420 werror="yes"
1421 else
1422 werror="no"
1423 fi
1424fi
1425
Paolo Bonzini8d050952010-12-23 11:43:52 +01001426# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001427write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001428if compile_object ; then
1429 : C compiler works ok
1430else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001431 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001432fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001433if ! compile_prog ; then
1434 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1435fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001436
Peter Maydell98b21dc2014-02-20 15:10:16 +00001437# Check that the C++ compiler exists and works with the C compiler
1438if has $cxx; then
1439 cat > $TMPC <<EOF
1440int c_function(void);
1441int main(void) { return c_function(); }
1442EOF
1443
1444 compile_object
1445
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001446 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001447extern "C" {
1448 int c_function(void);
1449}
1450int c_function(void) { return 42; }
1451EOF
1452
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001453 update_cxxflags
1454
1455 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001456 # C++ compiler $cxx works ok with C compiler $cc
1457 :
1458 else
1459 echo "C++ compiler $cxx does not work with C compiler $cc"
1460 echo "Disabling C++ specific optional code"
1461 cxx=
1462 fi
1463else
1464 echo "No C++ compiler available; disabling C++ specific optional code"
1465 cxx=
1466fi
1467
Paolo Bonzini8d050952010-12-23 11:43:52 +01001468gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1469gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1470gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001471gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001472gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001473gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001474# Note that we do not add -Werror to gcc_flags here, because that would
1475# enable it for all configure tests. If a configure test failed due
1476# to -Werror this would just silently disable some features,
1477# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001478
1479cc_has_warning_flag() {
1480 write_c_skeleton;
1481
Peter Maydella1d29d62012-10-27 22:19:07 +01001482 # Use the positive sense of the flag when testing for -Wno-wombat
1483 # support (gcc will happily accept the -Wno- form of unknown
1484 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001485 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1486 compile_prog "-Werror $optflag" ""
1487}
1488
1489for flag in $gcc_flags; do
1490 if cc_has_warning_flag $flag ; then
1491 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001492 fi
1493done
1494
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001495if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001496 cat > $TMPC << EOF
1497int main(int argc, char *argv[])
1498{
1499 char arr[64], *p = arr, *c = argv[0];
1500 while (*c) {
1501 *p++ = *c++;
1502 }
1503 return 0;
1504}
1505EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001506 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001507 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001508 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001509 # We need to check both a compile and a link, since some compiler
1510 # setups fail only on a .c->.o compile and some only at link time
1511 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1512 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001513 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001514 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001515 break
1516 fi
1517 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001518 if test "$stack_protector" = yes; then
1519 if test $sp_on = 0; then
1520 error_exit "Stack protector not supported"
1521 fi
1522 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001523fi
1524
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001525# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1526# large functions that use global variables. The bug is in all releases of
1527# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1528# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1529cat > $TMPC << EOF
1530#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1531int main(void) { return 0; }
1532#else
1533#error No bug in this compiler.
1534#endif
1535EOF
1536if compile_prog "-Werror -fno-gcse" "" ; then
1537 TRANSLATE_OPT_CFLAGS=-fno-gcse
1538fi
1539
Avi Kivity40d64442011-11-15 20:12:17 +02001540if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001541 if test "$modules" = "yes" ; then
1542 error_exit "static and modules are mutually incompatible"
1543 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001544 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001545 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001546 else
1547 pie="no"
1548 fi
1549fi
1550
Emilio G. Cota768b7852015-04-29 13:09:02 +02001551# Unconditional check for compiler __thread support
1552 cat > $TMPC << EOF
1553static __thread int tls_var;
1554int main(void) { return tls_var; }
1555EOF
1556
1557if ! compile_prog "-Werror" "" ; then
1558 error_exit "Your compiler does not support the __thread specifier for " \
1559 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1560fi
1561
Avi Kivity40d64442011-11-15 20:12:17 +02001562if test "$pie" = ""; then
1563 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001564 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001565 ;;
1566 *)
1567 pie="no"
1568 ;;
1569 esac
1570fi
1571
1572if test "$pie" != "no" ; then
1573 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001574
1575#ifdef __linux__
1576# define THREAD __thread
1577#else
1578# define THREAD
1579#endif
1580
1581static THREAD int tls_var;
1582
1583int main(void) { return tls_var; }
1584
Avi Kivity40d64442011-11-15 20:12:17 +02001585EOF
1586 if compile_prog "-fPIE -DPIE" "-pie"; then
1587 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1588 LDFLAGS="-pie $LDFLAGS"
1589 pie="yes"
1590 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1591 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1592 fi
1593 else
1594 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001595 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001596 else
1597 echo "Disabling PIE due to missing toolchain support"
1598 pie="no"
1599 fi
1600 fi
Brad46eef332013-12-10 19:49:08 -05001601
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001602 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001603 CFLAGS_NOPIE="-fno-pie"
1604 LDFLAGS_NOPIE="-nopie"
1605 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001606fi
1607
Paolo Bonzini09dada42013-04-17 16:26:47 +02001608##########################################
1609# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1610# use i686 as default anyway, but for those that don't, an explicit
1611# specification is necessary
1612
1613if test "$cpu" = "i386"; then
1614 cat > $TMPC << EOF
1615static int sfaa(int *ptr)
1616{
1617 return __sync_fetch_and_and(ptr, 0);
1618}
1619
1620int main(void)
1621{
1622 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001623 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001624 sfaa(&val);
1625 return val;
1626}
1627EOF
1628 if ! compile_prog "" "" ; then
1629 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1630 fi
1631fi
1632
1633#########################################
bellardec530c82006-04-25 22:36:06 +00001634# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001635
bellardec530c82006-04-25 22:36:06 +00001636if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001637 if has $install; then
1638 :
1639 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001640 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1641 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1642 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001643 fi
Stefan Weil89138852016-05-16 15:10:20 +02001644 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001645 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1646 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1647 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001648 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001649 if has ar; then
1650 :
1651 else
bellardec530c82006-04-25 22:36:06 +00001652 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001653 error_exit "No path includes ar" \
1654 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001655 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001656 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001657 fi
ths5fafdf22007-09-16 21:08:06 +00001658fi
bellardec530c82006-04-25 22:36:06 +00001659
Stefan Weilafb63eb2012-09-26 22:04:38 +02001660if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001661 target_list="$default_target_list"
1662else
Stefan Weil89138852016-05-16 15:10:20 +02001663 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
bellard5327cf42005-01-10 23:18:50 +00001664fi
Peter Maydell25b48332013-05-20 16:16:16 +01001665
1666# Check that we recognised the target name; this allows a more
1667# friendly error message than if we let it fall through.
1668for target in $target_list; do
1669 case " $default_target_list " in
1670 *" $target "*)
1671 ;;
1672 *)
1673 error_exit "Unknown target name '$target'"
1674 ;;
1675 esac
1676done
1677
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001678# see if system emulation was really requested
1679case " $target_list " in
1680 *"-softmmu "*) softmmu=yes
1681 ;;
1682 *) softmmu=no
1683 ;;
1684esac
bellard5327cf42005-01-10 23:18:50 +00001685
Juan Quintela249247c2009-08-12 18:20:25 +02001686feature_not_found() {
1687 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001688 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001689
Peter Maydell76ad07a2013-04-08 12:11:26 +01001690 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001691 "configure was not able to find it." \
1692 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001693}
1694
bellard7d132992003-03-06 23:23:54 +00001695# ---
1696# big/little endian test
1697cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001698short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1699short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1700extern int foo(short *, short *);
1701int main(int argc, char *argv[]) {
1702 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001703}
1704EOF
1705
Mike Frysinger61cc9192013-06-30 23:30:18 -04001706if compile_object ; then
1707 if grep -q BiGeNdIaN $TMPO ; then
1708 bigendian="yes"
1709 elif grep -q LiTtLeEnDiAn $TMPO ; then
1710 bigendian="no"
1711 else
1712 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001713 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001714else
1715 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001716fi
1717
Juan Quintelab0a47e72009-08-12 18:29:49 +02001718##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001719# cocoa implies not SDL or GTK
1720# (the cocoa UI code currently assumes it is always the active UI
1721# and doesn't interact well with other UI frontend code)
1722if test "$cocoa" = "yes"; then
1723 if test "$sdl" = "yes"; then
1724 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1725 fi
1726 if test "$gtk" = "yes"; then
1727 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1728 fi
1729 gtk=no
1730 sdl=no
1731fi
1732
1733##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001734# L2TPV3 probe
1735
1736cat > $TMPC <<EOF
1737#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001738#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001739int main(void) { return sizeof(struct mmsghdr); }
1740EOF
1741if compile_prog "" "" ; then
1742 l2tpv3=yes
1743else
1744 l2tpv3=no
1745fi
1746
1747##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001748# MinGW / Mingw-w64 localtime_r/gmtime_r check
1749
1750if test "$mingw32" = "yes"; then
1751 # Some versions of MinGW / Mingw-w64 lack localtime_r
1752 # and gmtime_r entirely.
1753 #
1754 # Some versions of Mingw-w64 define a macro for
1755 # localtime_r/gmtime_r.
1756 #
1757 # Some versions of Mingw-w64 will define functions
1758 # for localtime_r/gmtime_r, but only if you have
1759 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1760 # though, unistd.h and pthread.h both define
1761 # that for you.
1762 #
1763 # So this #undef localtime_r and #include <unistd.h>
1764 # are not in fact redundant.
1765cat > $TMPC << EOF
1766#include <unistd.h>
1767#include <time.h>
1768#undef localtime_r
1769int main(void) { localtime_r(NULL, NULL); return 0; }
1770EOF
1771 if compile_prog "" "" ; then
1772 localtime_r="yes"
1773 else
1774 localtime_r="no"
1775 fi
1776fi
1777
1778##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001779# pkg-config probe
1780
1781if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001782 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001783fi
1784
1785##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001786# NPTL probe
1787
Peter Maydell24cb36a2013-07-16 18:45:00 +01001788if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001789 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001790#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001791#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001792int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001793#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1794#error bork
1795#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001796 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001797}
1798EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001799 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001800 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001801 fi
pbrookbd0c5662008-05-29 14:34:11 +00001802fi
1803
bellard11d9f692004-04-02 20:55:59 +00001804##########################################
Liang Li99f2dbd2016-03-08 13:53:16 +08001805# avx2 optimization requirement check
1806
Aaron Lindsay71fcd8e2016-07-14 15:38:14 -04001807
1808if test "$static" = "no" ; then
1809 cat > $TMPC << EOF
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001810#pragma GCC push_options
1811#pragma GCC target("avx2")
1812#include <cpuid.h>
1813#include <immintrin.h>
1814
1815static int bar(void *a) {
1816 return _mm256_movemask_epi8(_mm256_cmpeq_epi8(*(__m256i *)a, (__m256i){0}));
1817}
Liang Li99f2dbd2016-03-08 13:53:16 +08001818static void *bar_ifunc(void) {return (void*) bar;}
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001819int foo(void *a) __attribute__((ifunc("bar_ifunc")));
1820int main(int argc, char *argv[]) { return foo(argv[0]);}
Liang Li99f2dbd2016-03-08 13:53:16 +08001821EOF
Aaron Lindsay71fcd8e2016-07-14 15:38:14 -04001822 if compile_object "" ; then
1823 if has readelf; then
1824 if readelf --syms $TMPO 2>/dev/null |grep -q "IFUNC.*foo"; then
1825 avx2_opt="yes"
1826 fi
1827 fi
1828 fi
Liang Li99f2dbd2016-03-08 13:53:16 +08001829fi
1830
1831#########################################
balrogac629222008-10-11 09:56:04 +00001832# zlib check
1833
Alon Levy1ece9902011-07-26 12:30:40 +03001834if test "$zlib" != "no" ; then
1835 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001836#include <zlib.h>
1837int main(void) { zlibVersion(); return 0; }
1838EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001839 if compile_prog "" "-lz" ; then
1840 :
1841 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001842 error_exit "zlib check failed" \
1843 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001844 fi
balrogac629222008-10-11 09:56:04 +00001845fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001846LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001847
1848##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001849# lzo check
1850
1851if test "$lzo" != "no" ; then
1852 cat > $TMPC << EOF
1853#include <lzo/lzo1x.h>
1854int main(void) { lzo_version(); return 0; }
1855EOF
1856 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001857 libs_softmmu="$libs_softmmu -llzo2"
1858 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001859 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001860 if test "$lzo" = "yes"; then
1861 feature_not_found "liblzo2" "Install liblzo2 devel"
1862 fi
1863 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001864 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001865fi
1866
1867##########################################
1868# snappy check
1869
1870if test "$snappy" != "no" ; then
1871 cat > $TMPC << EOF
1872#include <snappy-c.h>
1873int main(void) { snappy_max_compressed_length(4096); return 0; }
1874EOF
1875 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001876 libs_softmmu="$libs_softmmu -lsnappy"
1877 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001878 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001879 if test "$snappy" = "yes"; then
1880 feature_not_found "libsnappy" "Install libsnappy devel"
1881 fi
1882 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001883 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001884fi
1885
1886##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001887# bzip2 check
1888
1889if test "$bzip2" != "no" ; then
1890 cat > $TMPC << EOF
1891#include <bzlib.h>
1892int main(void) { BZ2_bzlibVersion(); return 0; }
1893EOF
1894 if compile_prog "" "-lbz2" ; then
1895 bzip2="yes"
1896 else
1897 if test "$bzip2" = "yes"; then
1898 feature_not_found "libbzip2" "Install libbzip2 devel"
1899 fi
1900 bzip2="no"
1901 fi
1902fi
1903
1904##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001905# libseccomp check
1906
1907if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04001908 case "$cpu" in
1909 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06001910 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04001911 ;;
James Hogan5ce43972016-04-08 14:16:34 +01001912 mips)
1913 libseccomp_minver="2.2.0"
1914 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001915 arm|aarch64)
1916 libseccomp_minver="2.2.3"
1917 ;;
Michael Strosaker3e684452016-06-01 18:30:18 -05001918 ppc|ppc64)
1919 libseccomp_minver="2.3.0"
1920 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001921 *)
1922 libseccomp_minver=""
1923 ;;
1924 esac
1925
1926 if test "$libseccomp_minver" != "" &&
1927 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Stefan Weil89138852016-05-16 15:10:20 +02001928 libs_softmmu="$libs_softmmu $($pkg_config --libs libseccomp)"
1929 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04001930 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03001931 else
Andrew Jones693e5912015-09-30 11:59:18 -04001932 if test "$seccomp" = "yes" ; then
1933 if test "$libseccomp_minver" != "" ; then
1934 feature_not_found "libseccomp" \
1935 "Install libseccomp devel >= $libseccomp_minver"
1936 else
1937 feature_not_found "libseccomp" \
1938 "libseccomp is not supported for host cpu $cpu"
1939 fi
1940 fi
1941 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001942 fi
1943fi
1944##########################################
aliguorie37630c2009-04-22 15:19:10 +00001945# xen probe
1946
Juan Quintelafc321b42009-08-12 18:29:55 +02001947if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001948 xen_libs="-lxenstore -lxenctrl -lxenguest"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001949 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001950
Stefan Weil50ced5b2011-12-17 09:27:39 +01001951 # First we test whether Xen headers and libraries are available.
1952 # If no, we are done and there is no Xen support.
1953 # If yes, more tests are run to detect the Xen version.
1954
1955 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001956 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001957#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001958int main(void) {
1959 return 0;
1960}
1961EOF
1962 if ! compile_prog "" "$xen_libs" ; then
1963 # Xen not found
1964 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001965 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001966 fi
1967 xen=no
1968
1969 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001970 elif
1971 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001972/*
1973 * If we have stable libs the we don't want the libxc compat
1974 * layers, regardless of what CFLAGS we may have been given.
1975 */
1976#undef XC_WANT_COMPAT_EVTCHN_API
1977#undef XC_WANT_COMPAT_GNTTAB_API
1978#undef XC_WANT_COMPAT_MAP_FOREIGN_API
1979#include <xenctrl.h>
1980#include <xenstore.h>
1981#include <xenevtchn.h>
1982#include <xengnttab.h>
1983#include <xenforeignmemory.h>
1984#include <stdint.h>
1985#include <xen/hvm/hvm_info_table.h>
1986#if !defined(HVM_MAX_VCPUS)
1987# error HVM_MAX_VCPUS not defined
1988#endif
1989int main(void) {
1990 xc_interface *xc = NULL;
1991 xenforeignmemory_handle *xfmem;
1992 xenevtchn_handle *xe;
1993 xengnttab_handle *xg;
1994 xen_domain_handle_t handle;
1995
1996 xs_daemon_open();
1997
1998 xc = xc_interface_open(0, 0, 0);
1999 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2000 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2001 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2002 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2003 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2004
2005 xfmem = xenforeignmemory_open(0, 0);
2006 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2007
2008 xe = xenevtchn_open(0, 0);
2009 xenevtchn_fd(xe);
2010
2011 xg = xengnttab_open(0, 0);
2012 xengnttab_map_grant_ref(xg, 0, 0, 0);
2013
2014 return 0;
2015}
2016EOF
2017 compile_prog "" "$xen_libs $xen_stable_libs"
2018 then
2019 xen_ctrl_version=471
2020 xen=yes
2021 elif
2022 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002023#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002024#include <stdint.h>
2025int main(void) {
2026 xc_interface *xc = NULL;
2027 xen_domain_handle_t handle;
2028 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2029 return 0;
2030}
2031EOF
2032 compile_prog "" "$xen_libs"
2033 then
2034 xen_ctrl_version=470
2035 xen=yes
2036
2037 # Xen 4.6
2038 elif
2039 cat > $TMPC <<EOF &&
2040#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002041#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002042#include <stdint.h>
2043#include <xen/hvm/hvm_info_table.h>
2044#if !defined(HVM_MAX_VCPUS)
2045# error HVM_MAX_VCPUS not defined
2046#endif
2047int main(void) {
2048 xc_interface *xc;
2049 xs_daemon_open();
2050 xc = xc_interface_open(0, 0, 0);
2051 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2052 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002053 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002054 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002055 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002056 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002057 return 0;
2058}
2059EOF
2060 compile_prog "" "$xen_libs"
2061 then
2062 xen_ctrl_version=460
2063 xen=yes
2064
2065 # Xen 4.5
2066 elif
2067 cat > $TMPC <<EOF &&
2068#include <xenctrl.h>
2069#include <xenstore.h>
2070#include <stdint.h>
2071#include <xen/hvm/hvm_info_table.h>
2072#if !defined(HVM_MAX_VCPUS)
2073# error HVM_MAX_VCPUS not defined
2074#endif
2075int main(void) {
2076 xc_interface *xc;
2077 xs_daemon_open();
2078 xc = xc_interface_open(0, 0, 0);
2079 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2080 xc_gnttab_open(NULL, 0);
2081 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2082 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002083 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2084 return 0;
2085}
2086EOF
2087 compile_prog "" "$xen_libs"
2088 then
2089 xen_ctrl_version=450
2090 xen=yes
2091
2092 elif
2093 cat > $TMPC <<EOF &&
2094#include <xenctrl.h>
2095#include <xenstore.h>
2096#include <stdint.h>
2097#include <xen/hvm/hvm_info_table.h>
2098#if !defined(HVM_MAX_VCPUS)
2099# error HVM_MAX_VCPUS not defined
2100#endif
2101int main(void) {
2102 xc_interface *xc;
2103 xs_daemon_open();
2104 xc = xc_interface_open(0, 0, 0);
2105 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2106 xc_gnttab_open(NULL, 0);
2107 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2108 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002109 return 0;
2110}
2111EOF
2112 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002113 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002114 xen_ctrl_version=420
2115 xen=yes
2116
Juan Quintelab2266be2009-07-27 16:13:16 +02002117 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002118 if test "$xen" = "yes" ; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002119 feature_not_found "xen (unsupported version)" \
2120 "Install a supported xen (xen 4.2 or newer)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002121 fi
2122 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002123 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002124
2125 if test "$xen" = yes; then
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002126 if test $xen_ctrl_version -ge 471 ; then
2127 libs_softmmu="$xen_stable_libs $libs_softmmu"
2128 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002129 libs_softmmu="$xen_libs $libs_softmmu"
2130 fi
aliguorie37630c2009-04-22 15:19:10 +00002131fi
2132
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002133if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002134 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002135 xen_pci_passthrough=yes
2136 else
2137 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002138 error_exit "User requested feature Xen PCI Passthrough" \
2139 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002140 fi
2141 xen_pci_passthrough=no
2142 fi
2143fi
2144
Ian Campbell64a7ad62016-01-15 13:23:44 +00002145if test "$xen_pv_domain_build" = "yes" &&
2146 test "$xen" != "yes"; then
2147 error_exit "User requested Xen PV domain builder support" \
2148 "which requires Xen support."
2149fi
2150
aliguorie37630c2009-04-22 15:19:10 +00002151##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002152# Sparse probe
2153if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002154 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002155 sparse=yes
2156 else
2157 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002158 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002159 fi
2160 sparse=no
2161 fi
2162fi
2163
2164##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002165# X11 probe
2166x11_cflags=
2167x11_libs=-lX11
2168if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002169 x11_cflags=$($pkg_config --cflags x11)
2170 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002171fi
2172
2173##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002174# GTK probe
2175
Stefan Weil9e04c682014-05-17 16:29:18 +02002176if test "$gtkabi" = ""; then
2177 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2178 # Use 3.0 as a fallback if that is available.
2179 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2180 gtkabi=2.0
2181 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2182 gtkabi=3.0
2183 else
2184 gtkabi=2.0
2185 fi
2186fi
2187
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002188if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002189 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002190 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002191 if test "$gtkabi" = "3.0" ; then
2192 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002193 else
2194 gtkversion="2.18.0"
2195 fi
2196 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002197 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2198 gtk_libs=$($pkg_config --libs $gtkpackage)
2199 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002200 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002201 gtk_cflags="$gtk_cflags $x11_cflags"
2202 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002203 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002204 libs_softmmu="$gtk_libs $libs_softmmu"
2205 gtk="yes"
2206 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002207 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002208 else
2209 gtk="no"
2210 fi
2211fi
2212
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002213
2214##########################################
2215# GNUTLS probe
2216
Peter Maydell37371292015-07-24 18:28:08 +01002217gnutls_works() {
2218 # Unfortunately some distros have bad pkg-config information for gnutls
2219 # such that it claims to exist but you get a compiler error if you try
2220 # to use the options returned by --libs. Specifically, Ubuntu for --static
2221 # builds doesn't work:
2222 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2223 #
2224 # So sanity check the cflags/libs before assuming gnutls can be used.
2225 if ! $pkg_config --exists "gnutls"; then
2226 return 1
2227 fi
2228
2229 write_c_skeleton
2230 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2231}
2232
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002233gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002234gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002235if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002236 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002237 gnutls_cflags=$($pkg_config --cflags gnutls)
2238 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002239 libs_softmmu="$gnutls_libs $libs_softmmu"
2240 libs_tools="$gnutls_libs $libs_tools"
2241 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2242 gnutls="yes"
2243
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002244 # gnutls_rnd requires >= 2.11.0
2245 if $pkg_config --exists "gnutls >= 2.11.0"; then
2246 gnutls_rnd="yes"
2247 else
2248 gnutls_rnd="no"
2249 fi
2250
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002251 if $pkg_config --exists 'gnutls >= 3.0'; then
2252 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002253 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002254 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002255 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002256 *gcrypt*)
2257 gnutls_gcrypt=yes
2258 gnutls_nettle=no
2259 ;;
2260 *nettle*)
2261 gnutls_gcrypt=no
2262 gnutls_nettle=yes
2263 ;;
2264 *)
2265 gnutls_gcrypt=yes
2266 gnutls_nettle=no
2267 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002268 esac
2269 else
2270 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002271 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002272 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002273 elif test "$gnutls" = "yes"; then
2274 feature_not_found "gnutls" "Install gnutls devel"
2275 else
2276 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002277 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002278 fi
2279else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002280 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002281fi
2282
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002283
2284# If user didn't give a --disable/enable-gcrypt flag,
2285# then mark as disabled if user requested nettle
2286# explicitly, or if gnutls links to nettle
2287if test -z "$gcrypt"
2288then
2289 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2290 then
2291 gcrypt="no"
2292 fi
2293fi
2294
2295# If user didn't give a --disable/enable-nettle flag,
2296# then mark as disabled if user requested gcrypt
2297# explicitly, or if gnutls links to gcrypt
2298if test -z "$nettle"
2299then
2300 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2301 then
2302 nettle="no"
2303 fi
2304fi
2305
2306has_libgcrypt_config() {
2307 if ! has "libgcrypt-config"
2308 then
2309 return 1
2310 fi
2311
2312 if test -n "$cross_prefix"
2313 then
Stefan Weil89138852016-05-16 15:10:20 +02002314 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002315 if test "$host-" != $cross_prefix
2316 then
2317 return 1
2318 fi
2319 fi
2320
2321 return 0
2322}
2323
2324if test "$gcrypt" != "no"; then
2325 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002326 gcrypt_cflags=$(libgcrypt-config --cflags)
2327 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002328 # Debian has remove -lgpg-error from libgcrypt-config
2329 # as it "spreads unnecessary dependencies" which in
2330 # turn breaks static builds...
2331 if test "$static" = "yes"
2332 then
2333 gcrypt_libs="$gcrypt_libs -lgpg-error"
2334 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002335 libs_softmmu="$gcrypt_libs $libs_softmmu"
2336 libs_tools="$gcrypt_libs $libs_tools"
2337 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002338 gcrypt="yes"
2339 if test -z "$nettle"; then
2340 nettle="no"
2341 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002342
2343 cat > $TMPC << EOF
2344#include <gcrypt.h>
2345int main(void) {
2346 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2347 GCRY_MD_SHA256,
2348 NULL, 0, 0, 0, NULL);
2349 return 0;
2350}
2351EOF
2352 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2353 gcrypt_kdf=yes
2354 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002355 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002356 if test "$gcrypt" = "yes"; then
2357 feature_not_found "gcrypt" "Install gcrypt devel"
2358 else
2359 gcrypt="no"
2360 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002361 fi
2362fi
2363
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002364
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002365if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002366 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002367 nettle_cflags=$($pkg_config --cflags nettle)
2368 nettle_libs=$($pkg_config --libs nettle)
2369 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002370 libs_softmmu="$nettle_libs $libs_softmmu"
2371 libs_tools="$nettle_libs $libs_tools"
2372 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002373 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002374
2375 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002376#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002377#include <nettle/pbkdf2.h>
2378int main(void) {
2379 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2380 return 0;
2381}
2382EOF
2383 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2384 nettle_kdf=yes
2385 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002386 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002387 if test "$nettle" = "yes"; then
2388 feature_not_found "nettle" "Install nettle devel"
2389 else
2390 nettle="no"
2391 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002392 fi
2393fi
2394
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002395if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2396then
2397 error_exit "Only one of gcrypt & nettle can be enabled"
2398fi
2399
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002400##########################################
2401# libtasn1 - only for the TLS creds/session test suite
2402
2403tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002404tasn1_cflags=""
2405tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002406if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002407 tasn1_cflags=$($pkg_config --cflags libtasn1)
2408 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002409else
2410 tasn1=no
2411fi
2412
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002413
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002414##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002415# getifaddrs (for tests/test-io-channel-socket )
2416
2417have_ifaddrs_h=yes
2418if ! check_include "ifaddrs.h" ; then
2419 have_ifaddrs_h=no
2420fi
2421
2422##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002423# VTE probe
2424
2425if test "$vte" != "no"; then
2426 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002427 vteminversion="0.32.0"
2428 if $pkg_config --exists "vte-2.91"; then
2429 vtepackage="vte-2.91"
2430 else
2431 vtepackage="vte-2.90"
2432 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002433 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002434 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002435 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002436 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002437 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002438 vte_cflags=$($pkg_config --cflags $vtepackage)
2439 vte_libs=$($pkg_config --libs $vtepackage)
2440 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002441 libs_softmmu="$vte_libs $libs_softmmu"
2442 vte="yes"
2443 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002444 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002445 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002446 else
2447 feature_not_found "vte" "Install libvte devel"
2448 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002449 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002450 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002451 fi
2452fi
2453
2454##########################################
bellard11d9f692004-04-02 20:55:59 +00002455# SDL probe
2456
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002457# Look for sdl configuration program (pkg-config or sdl-config). Try
2458# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002459
Cole Robinsonee8466d2016-05-06 14:03:07 -04002460if test "$sdlabi" = ""; then
2461 if $pkg_config --exists "sdl"; then
2462 sdlabi=1.2
2463 elif $pkg_config --exists "sdl2"; then
2464 sdlabi=2.0
2465 else
2466 sdlabi=1.2
2467 fi
2468fi
2469
Dave Airlie47c03742013-12-10 14:05:51 +10002470if test $sdlabi = "2.0"; then
2471 sdl_config=$sdl2_config
2472 sdlname=sdl2
2473 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002474elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002475 sdlname=sdl
2476 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002477else
2478 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002479fi
2480
Stefan Weil89138852016-05-16 15:10:20 +02002481if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002482 sdl_config=$sdlconfigname
2483fi
2484
2485if $pkg_config $sdlname --exists; then
2486 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002487 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002488elif has ${sdl_config}; then
2489 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002490 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002491else
2492 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002493 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002494 fi
2495 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002496fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002497if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002498 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2499fi
bellard11d9f692004-04-02 20:55:59 +00002500
Paolo Bonzini9316f802010-01-13 09:52:55 +01002501sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002502if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002503 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002504#include <SDL.h>
2505#undef main /* We don't want SDL to override our main() */
2506int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2507EOF
Stefan Weil89138852016-05-16 15:10:20 +02002508 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002509 if test "$static" = "yes" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002510 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002511 else
Stefan Weil89138852016-05-16 15:10:20 +02002512 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002513 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002514 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002515 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002516 sdl_too_old=yes
2517 else
Peter Maydella30878e2015-08-14 16:10:52 +01002518 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002519 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002520
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002521 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002522 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002523 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002524 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2525 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002526 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002527 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002528 :
2529 else
2530 sdl=no
2531 fi
2532 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002533 else # sdl not found
2534 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002535 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002536 fi
2537 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002538 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002539fi
bellard11d9f692004-04-02 20:55:59 +00002540
aliguori5368a422009-03-03 17:37:21 +00002541if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002542 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002543#include <SDL.h>
2544#if defined(SDL_VIDEO_DRIVER_X11)
2545#include <X11/XKBlib.h>
2546#else
2547#error No x11 support
2548#endif
2549int main(void) { return 0; }
2550EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002551 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2552 sdl_cflags="$sdl_cflags $x11_cflags"
2553 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002554 fi
Juan Quintela07056672009-08-03 14:46:27 +02002555 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002556fi
2557
ths8f28f3f2007-01-05 21:25:54 +00002558##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002559# RDMA needs OpenFabrics libraries
2560if test "$rdma" != "no" ; then
2561 cat > $TMPC <<EOF
2562#include <rdma/rdma_cma.h>
2563int main(void) { return 0; }
2564EOF
2565 rdma_libs="-lrdmacm -libverbs"
2566 if compile_prog "" "$rdma_libs" ; then
2567 rdma="yes"
2568 libs_softmmu="$libs_softmmu $rdma_libs"
2569 else
2570 if test "$rdma" = "yes" ; then
2571 error_exit \
2572 " OpenFabrics librdmacm/libibverbs not present." \
2573 " Your options:" \
2574 " (1) Fast: Install infiniband packages from your distro." \
2575 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2576 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2577 fi
2578 rdma="no"
2579 fi
2580fi
2581
ths8d5d2d42007-08-25 01:37:51 +00002582
2583##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002584# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002585if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002586 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002587#include <sasl/sasl.h>
2588#include <stdio.h>
2589int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2590EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002591 # Assuming Cyrus-SASL installed in /usr prefix
2592 vnc_sasl_cflags=""
2593 vnc_sasl_libs="-lsasl2"
2594 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2595 vnc_sasl=yes
2596 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002597 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002598 else
2599 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002600 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002601 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002602 vnc_sasl=no
2603 fi
aliguori2f9606b2009-03-06 20:27:28 +00002604fi
2605
2606##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002607# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002608if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002609cat > $TMPC <<EOF
2610#include <stdio.h>
2611#include <jpeglib.h>
2612int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2613EOF
2614 vnc_jpeg_cflags=""
2615 vnc_jpeg_libs="-ljpeg"
2616 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2617 vnc_jpeg=yes
2618 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002619 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002620 else
2621 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002622 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002623 fi
2624 vnc_jpeg=no
2625 fi
2626fi
2627
2628##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002629# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002630if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002631cat > $TMPC <<EOF
2632//#include <stdio.h>
2633#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002634#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002635int main(void) {
2636 png_structp png_ptr;
2637 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002638 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002639}
2640EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002641 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002642 vnc_png_cflags=$($pkg_config libpng --cflags)
2643 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002644 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002645 vnc_png_cflags=""
2646 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002647 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002648 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2649 vnc_png=yes
2650 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002651 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002652 else
2653 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002654 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002655 fi
2656 vnc_png=no
2657 fi
2658fi
2659
2660##########################################
aliguori76655d62009-03-06 20:27:37 +00002661# fnmatch() probe, used for ACL routines
2662fnmatch="no"
2663cat > $TMPC << EOF
2664#include <fnmatch.h>
2665int main(void)
2666{
2667 fnmatch("foo", "foo", 0);
2668 return 0;
2669}
2670EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002671if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002672 fnmatch="yes"
2673fi
2674
2675##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002676# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002677# Note that on some systems (notably MacOSX) no extra library
2678# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002679if test "$uuid" != "no" ; then
2680 uuid_libs="-luuid"
2681 cat > $TMPC << EOF
2682#include <uuid/uuid.h>
2683int main(void)
2684{
2685 uuid_t my_uuid;
2686 uuid_generate(my_uuid);
2687 return 0;
2688}
2689EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002690 if compile_prog "" "" ; then
2691 uuid="yes"
2692 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002693 uuid="yes"
2694 libs_softmmu="$uuid_libs $libs_softmmu"
2695 libs_tools="$uuid_libs $libs_tools"
2696 else
2697 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002698 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002699 fi
2700 uuid=no
2701 fi
2702fi
2703
Jeff Cody4f18b782013-10-30 10:44:39 -04002704if test "$vhdx" = "yes" ; then
2705 if test "$uuid" = "no" ; then
2706 error_exit "uuid required for VHDX support"
2707 fi
2708elif test "$vhdx" != "no" ; then
2709 if test "$uuid" = "yes" ; then
2710 vhdx=yes
2711 else
2712 vhdx=no
2713 fi
2714fi
2715
Stefan Weilee682d22009-10-01 20:10:37 +02002716##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002717# xfsctl() probe, used for raw-posix
2718if test "$xfs" != "no" ; then
2719 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002720#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002721#include <xfs/xfs.h>
2722int main(void)
2723{
2724 xfsctl(NULL, 0, 0, NULL);
2725 return 0;
2726}
2727EOF
2728 if compile_prog "" "" ; then
2729 xfs="yes"
2730 else
2731 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002732 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002733 fi
2734 xfs=no
2735 fi
2736fi
2737
2738##########################################
ths8a16d272008-07-19 09:56:24 +00002739# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002740if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002741 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002742 cat > $TMPC << EOF
2743#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002744int main(void)
2745{
2746 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002747 char s[] = "";
2748 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002749 return 0;
2750}
ths8a16d272008-07-19 09:56:24 +00002751EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002752 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002753 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002754 libs_softmmu="$vde_libs $libs_softmmu"
2755 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002756 else
2757 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002758 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002759 fi
2760 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002761 fi
ths8a16d272008-07-19 09:56:24 +00002762fi
2763
2764##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002765# netmap support probe
2766# Apart from looking for netmap headers, we make sure that the host API version
2767# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2768# a minor/major version number. Minor new features will be marked with values up
2769# to 15, and if something happens that requires a change to the backend we will
2770# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002771if test "$netmap" != "no" ; then
2772 cat > $TMPC << EOF
2773#include <inttypes.h>
2774#include <net/if.h>
2775#include <net/netmap.h>
2776#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002777#if (NETMAP_API < 11) || (NETMAP_API > 15)
2778#error
2779#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002780int main(void) { return 0; }
2781EOF
2782 if compile_prog "" "" ; then
2783 netmap=yes
2784 else
2785 if test "$netmap" = "yes" ; then
2786 feature_not_found "netmap"
2787 fi
2788 netmap=no
2789 fi
2790fi
2791
2792##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002793# libcap-ng library probe
2794if test "$cap_ng" != "no" ; then
2795 cap_libs="-lcap-ng"
2796 cat > $TMPC << EOF
2797#include <cap-ng.h>
2798int main(void)
2799{
2800 capng_capability_to_name(CAPNG_EFFECTIVE);
2801 return 0;
2802}
2803EOF
2804 if compile_prog "" "$cap_libs" ; then
2805 cap_ng=yes
2806 libs_tools="$cap_libs $libs_tools"
2807 else
2808 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002809 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002810 fi
2811 cap_ng=no
2812 fi
2813fi
2814
2815##########################################
malcc2de5c92008-06-28 19:13:06 +00002816# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002817
malcc2de5c92008-06-28 19:13:06 +00002818audio_drv_probe()
2819{
2820 drv=$1
2821 hdr=$2
2822 lib=$3
2823 exp=$4
2824 cfl=$5
2825 cat > $TMPC << EOF
2826#include <$hdr>
2827int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002828EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002829 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002830 :
2831 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002832 error_exit "$drv check failed" \
2833 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002834 fi
2835}
2836
Stefan Weil89138852016-05-16 15:10:20 +02002837audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00002838for drv in $audio_drv_list; do
2839 case $drv in
2840 alsa)
2841 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002842 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002843 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002844 ;;
2845
malcb8e59f12008-07-02 21:03:08 +00002846 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02002847 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
2848 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002849 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002850 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002851 ;;
2852
Juan Quintela997e6902009-08-03 14:46:29 +02002853 coreaudio)
2854 libs_softmmu="-framework CoreAudio $libs_softmmu"
2855 ;;
2856
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002857 dsound)
2858 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002859 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002860 ;;
2861
2862 oss)
2863 libs_softmmu="$oss_lib $libs_softmmu"
2864 ;;
2865
2866 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002867 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2868 ;;
2869
malce4c63a62008-07-19 16:15:16 +00002870 *)
malc1c9b2a52008-07-19 16:57:30 +00002871 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002872 error_exit "Unknown driver '$drv' selected" \
2873 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002874 }
2875 ;;
malcc2de5c92008-06-28 19:13:06 +00002876 esac
2877done
ths8f28f3f2007-01-05 21:25:54 +00002878
balrog4d3b6f62008-02-10 16:33:14 +00002879##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002880# BrlAPI probe
2881
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002882if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002883 brlapi_libs="-lbrlapi"
2884 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002885#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002886#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002887int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2888EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002889 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002890 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002891 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002892 else
2893 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002894 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002895 fi
2896 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002897 fi
2898fi
aurel322e4d9fb2008-04-08 06:01:02 +00002899
2900##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002901# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002902if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002903 if test "$mingw32" = "yes" ; then
Stefan Weilae629632016-03-16 21:27:25 +01002904 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002905 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002906 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002907 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002908 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002909 cat > $TMPC << EOF
2910#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002911int main(void) {
2912 const char *s = curses_version();
2913 resize_term(0, 0);
2914 return s != 0;
2915}
balrog4d3b6f62008-02-10 16:33:14 +00002916EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002917 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002918 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002919 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002920 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002921 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002922 libs_softmmu="$curses_lib $libs_softmmu"
2923 break
2924 fi
2925 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002926 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002927 if test "$curses_found" = "yes" ; then
2928 curses=yes
2929 else
2930 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002931 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002932 fi
2933 curses=no
2934 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002935fi
balrog4d3b6f62008-02-10 16:33:14 +00002936
blueswir1414f0da2008-08-15 18:20:52 +00002937##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002938# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002939if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002940 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002941 curlconfig="$pkg_config libcurl"
2942 else
2943 curlconfig=curl-config
2944 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002945 cat > $TMPC << EOF
2946#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002947int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002948EOF
Stefan Weil89138852016-05-16 15:10:20 +02002949 curl_cflags=$($curlconfig --cflags 2>/dev/null)
2950 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02002951 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002952 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002953 else
2954 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002955 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002956 fi
2957 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002958 fi
2959fi # test "$curl"
2960
2961##########################################
balrogfb599c92008-09-28 23:49:55 +00002962# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002963if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002964 cat > $TMPC << EOF
2965#include <bluetooth/bluetooth.h>
2966int main(void) { return bt_error(0); }
2967EOF
Stefan Weil89138852016-05-16 15:10:20 +02002968 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
2969 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02002970 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002971 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002972 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002973 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002974 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002975 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002976 fi
balroge820e3f2008-09-30 02:27:44 +00002977 bluez="no"
2978 fi
balrogfb599c92008-09-28 23:49:55 +00002979fi
2980
2981##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002982# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002983
John Snowf40685c2015-05-22 14:13:42 -04002984glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002985glib_modules=gthread-2.0
2986if test "$modules" = yes; then
2987 glib_modules="$glib_modules gmodule-2.0"
2988fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002989
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002990for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002991 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02002992 glib_cflags=$($pkg_config --cflags $i)
2993 glib_libs=$($pkg_config --libs $i)
Fam Zhenge26110c2014-02-10 14:48:57 +08002994 CFLAGS="$glib_cflags $CFLAGS"
2995 LIBS="$glib_libs $LIBS"
2996 libs_qga="$glib_libs $libs_qga"
2997 else
2998 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2999 fi
3000done
3001
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003002# Sanity check that the current size_t matches the
3003# size that glib thinks it should be. This catches
3004# problems on multi-arch where people try to build
3005# 32-bit QEMU while pointing at 64-bit glib headers
3006cat > $TMPC <<EOF
3007#include <glib.h>
3008#include <unistd.h>
3009
3010#define QEMU_BUILD_BUG_ON(x) \
3011 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3012
3013int main(void) {
3014 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3015 return 0;
3016}
3017EOF
3018
Stefan Weil5919e032016-04-28 23:33:41 +02003019if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003020 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3021 "You probably need to set PKG_CONFIG_LIBDIR"\
3022 "to point to the right pkg-config files for your"\
3023 "build target"
3024fi
3025
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003026# g_test_trap_subprocess added in 2.38. Used by some tests.
3027glib_subprocess=yes
3028if ! $pkg_config --atleast-version=2.38 glib-2.0; then
3029 glib_subprocess=no
3030fi
3031
John Snowbbbf2e02015-03-25 18:57:38 -04003032# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3033cat > $TMPC << EOF
3034#include <glib.h>
3035int main(void) { return 0; }
3036EOF
3037if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3038 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3039 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3040 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3041 fi
3042fi
3043
Fam Zhenge26110c2014-02-10 14:48:57 +08003044##########################################
3045# SHA command probe for modules
3046if test "$modules" = yes; then
3047 shacmd_probe="sha1sum sha1 shasum"
3048 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003049 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003050 shacmd="$c"
3051 break
3052 fi
3053 done
3054 if test "$shacmd" = ""; then
3055 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3056 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003057fi
3058
3059##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003060# pixman support probe
3061
3062if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003063 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3064 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08003065 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003066 pixman="system"
3067 else
3068 pixman="internal"
3069 fi
3070fi
Robert Schiele74880fe2012-12-04 16:58:08 +01003071if test "$pixman" = "none"; then
3072 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003073 error_exit "pixman disabled but system emulation or tools build" \
3074 "enabled. You can turn off pixman only if you also" \
3075 "disable all system emulation targets and the tools" \
3076 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01003077 fi
3078 pixman_cflags=
3079 pixman_libs=
3080elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08003081 # pixman version has been checked above
Stefan Weil89138852016-05-16 15:10:20 +02003082 pixman_cflags=$($pkg_config --cflags pixman-1)
3083 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003084else
3085 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003086 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003087 " (1) Preferred: Install the pixman devel package (any recent" \
3088 " distro should have packages as Xorg needs pixman too)." \
3089 " (2) Fetch the pixman submodule, using:" \
3090 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003091 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003092 mkdir -p pixman/pixman
3093 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3094 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003095fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003096
3097##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303098# libcap probe
3099
3100if test "$cap" != "no" ; then
3101 cat > $TMPC <<EOF
3102#include <stdio.h>
3103#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003104int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303105EOF
3106 if compile_prog "" "-lcap" ; then
3107 cap=yes
3108 else
3109 cap=no
3110 fi
3111fi
3112
3113##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003114# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003115PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003116
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003117pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003118cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003119#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003120static void *f(void *p) { return NULL; }
3121int main(void) {
3122 pthread_t thread;
3123 pthread_create(&thread, 0, f, 0);
3124 return 0;
3125}
blueswir1414f0da2008-08-15 18:20:52 +00003126EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003127if compile_prog "" "" ; then
3128 pthread=yes
3129else
3130 for pthread_lib in $PTHREADLIBS_LIST; do
3131 if compile_prog "" "$pthread_lib" ; then
3132 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003133 found=no
3134 for lib_entry in $LIBS; do
3135 if test "$lib_entry" = "$pthread_lib"; then
3136 found=yes
3137 break
3138 fi
3139 done
3140 if test "$found" = "no"; then
3141 LIBS="$pthread_lib $LIBS"
3142 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003143 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003144 break
3145 fi
3146 done
3147fi
blueswir1414f0da2008-08-15 18:20:52 +00003148
Anthony Liguori4617e592009-08-25 17:21:56 -05003149if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003150 error_exit "pthread check failed" \
3151 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003152fi
3153
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003154# check for pthread_setname_np
3155pthread_setname_np=no
3156cat > $TMPC << EOF
3157#include <pthread.h>
3158
3159static void *f(void *p) { return NULL; }
3160int main(void)
3161{
3162 pthread_t thread;
3163 pthread_create(&thread, 0, f, 0);
3164 pthread_setname_np(thread, "QEMU");
3165 return 0;
3166}
3167EOF
3168if compile_prog "" "$pthread_lib" ; then
3169 pthread_setname_np=yes
3170fi
3171
aliguoribf9298b2008-12-05 20:05:26 +00003172##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003173# rbd probe
3174if test "$rbd" != "no" ; then
3175 cat > $TMPC <<EOF
3176#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003177#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003178int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003179 rados_t cluster;
3180 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003181 return 0;
3182}
3183EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003184 rbd_libs="-lrbd -lrados"
3185 if compile_prog "" "$rbd_libs" ; then
3186 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003187 else
3188 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003189 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003190 fi
3191 rbd=no
3192 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003193fi
3194
3195##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003196# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003197min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003198if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003199 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003200 libssh2_cflags=$($pkg_config libssh2 --cflags)
3201 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003202 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003203 else
3204 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003205 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003206 fi
3207 libssh2=no
3208 fi
3209fi
3210
3211##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003212# libssh2_sftp_fsync probe
3213
3214if test "$libssh2" = "yes"; then
3215 cat > $TMPC <<EOF
3216#include <stdio.h>
3217#include <libssh2.h>
3218#include <libssh2_sftp.h>
3219int main(void) {
3220 LIBSSH2_SESSION *session;
3221 LIBSSH2_SFTP *sftp;
3222 LIBSSH2_SFTP_HANDLE *sftp_handle;
3223 session = libssh2_session_init ();
3224 sftp = libssh2_sftp_init (session);
3225 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3226 libssh2_sftp_fsync (sftp_handle);
3227 return 0;
3228}
3229EOF
3230 # libssh2_cflags/libssh2_libs defined in previous test.
3231 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3232 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3233 fi
3234fi
3235
3236##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003237# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003238
3239if test "$linux_aio" != "no" ; then
3240 cat > $TMPC <<EOF
3241#include <libaio.h>
3242#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003243#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003244int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3245EOF
3246 if compile_prog "" "-laio" ; then
3247 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003248 else
3249 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003250 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003251 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003252 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003253 fi
3254fi
3255
3256##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003257# TPM passthrough is only on x86 Linux
3258
3259if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3260 tpm_passthrough=$tpm
3261else
3262 tpm_passthrough=no
3263fi
3264
3265##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003266# attr probe
3267
3268if test "$attr" != "no" ; then
3269 cat > $TMPC <<EOF
3270#include <stdio.h>
3271#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003272#ifdef CONFIG_LIBATTR
3273#include <attr/xattr.h>
3274#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003275#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003276#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003277int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3278EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003279 if compile_prog "" "" ; then
3280 attr=yes
3281 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003282 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003283 attr=yes
3284 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003285 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003286 else
3287 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003288 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003289 fi
3290 attr=no
3291 fi
3292fi
3293
3294##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003295# iovec probe
3296cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003297#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003298#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003299#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003300int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003301EOF
3302iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003303if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003304 iovec=yes
3305fi
3306
aurel32f652e6a2008-12-16 10:43:48 +00003307##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003308# preadv probe
3309cat > $TMPC <<EOF
3310#include <sys/types.h>
3311#include <sys/uio.h>
3312#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003313int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003314EOF
3315preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003316if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003317 preadv=yes
3318fi
3319
3320##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003321# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003322# fdt support is mandatory for at least some target architectures,
3323# so insist on it if we're building those system emulators.
3324fdt_required=no
3325for target in $target_list; do
3326 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003327 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003328 fdt_required=yes
3329 ;;
3330 esac
3331done
3332
3333if test "$fdt_required" = "yes"; then
3334 if test "$fdt" = "no"; then
3335 error_exit "fdt disabled but some requested targets require it." \
3336 "You can turn off fdt only if you also disable all the system emulation" \
3337 "targets which need it (by specifying a cut down --target-list)."
3338 fi
3339 fdt=yes
3340fi
3341
Juan Quintela2df87df2009-08-12 18:29:54 +02003342if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003343 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003344 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003345 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003346 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003347#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003348#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003349int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003350EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003351 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003352 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003353 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003354 elif test -d ${source_path}/dtc/libfdt ; then
3355 # have submodule DTC - use it
3356 fdt=yes
3357 dtc_internal="yes"
3358 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003359 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003360 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3361 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003362 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003363 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3364 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3365 elif test "$fdt" = "yes" ; then
3366 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003367 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003368 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003369 " (2) Fetch the DTC submodule, using:" \
3370 " git submodule update --init dtc"
3371 else
3372 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003373 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003374 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003375 fi
3376fi
3377
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003378libs_softmmu="$libs_softmmu $fdt_libs"
3379
Michael Walle20ff0752011-03-07 23:32:39 +01003380##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003381# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003382
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003383if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003384 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003385 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003386 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3387 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003388 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003389 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3390 gtk_gl="yes"
3391 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003392 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003393 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003394 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003395 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003396 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003397 opengl_libs=""
3398 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003399 fi
3400fi
3401
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003402if test "$opengl" = "yes"; then
3403 cat > $TMPC << EOF
3404#include <epoxy/egl.h>
3405#ifndef EGL_MESA_image_dma_buf_export
3406# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3407#endif
3408int main(void) { return 0; }
3409EOF
3410 if compile_prog "" "" ; then
3411 opengl_dmabuf=yes
3412 fi
3413fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003414
3415##########################################
3416# archipelago probe
3417if test "$archipelago" != "no" ; then
3418 cat > $TMPC <<EOF
3419#include <stdio.h>
3420#include <xseg/xseg.h>
3421#include <xseg/protocol.h>
3422int main(void) {
3423 xseg_initialize();
3424 return 0;
3425}
3426EOF
3427 archipelago_libs=-lxseg
3428 if compile_prog "" "$archipelago_libs"; then
3429 archipelago="yes"
3430 libs_tools="$archipelago_libs $libs_tools"
3431 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003432
3433 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3434 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3435 echo "license and therefore prevent redistribution."
3436 echo
3437 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003438 else
3439 if test "$archipelago" = "yes" ; then
3440 feature_not_found "Archipelago backend support" "Install libxseg devel"
3441 fi
3442 archipelago="no"
3443 fi
3444fi
3445
3446
Bharata B Raoeb100392012-09-24 14:42:45 +05303447##########################################
3448# glusterfs probe
3449if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003450 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303451 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003452 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3453 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003454 if $pkg_config --atleast-version=4 glusterfs-api; then
3455 glusterfs_xlator_opt="yes"
3456 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003457 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303458 glusterfs_discard="yes"
3459 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303460 if $pkg_config --atleast-version=6 glusterfs-api; then
3461 glusterfs_zerofill="yes"
3462 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303463 else
3464 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003465 feature_not_found "GlusterFS backend support" \
3466 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303467 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303468 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303469 fi
3470fi
3471
aurel3239386ac2009-04-15 19:48:17 +00003472# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003473# emulator. This is done because older glibc versions don't
3474# have syscall stubs for these implemented. In that case we
3475# don't provide them even if kernel supports them.
3476#
3477inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003478cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003479#include <sys/inotify.h>
3480
3481int
3482main(void)
3483{
3484 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003485 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003486}
3487EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003488if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003489 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003490fi
3491
Riku Voipioc05c7a72010-03-26 15:25:11 +00003492inotify1=no
3493cat > $TMPC << EOF
3494#include <sys/inotify.h>
3495
3496int
3497main(void)
3498{
3499 /* try to start inotify */
3500 return inotify_init1(0);
3501}
3502EOF
3503if compile_prog "" "" ; then
3504 inotify1=yes
3505fi
3506
Riku Voipioebc996f2009-04-21 15:01:51 +03003507# check if utimensat and futimens are supported
3508utimens=no
3509cat > $TMPC << EOF
3510#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003511#include <stddef.h>
3512#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003513#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003514
3515int main(void)
3516{
3517 utimensat(AT_FDCWD, "foo", NULL, 0);
3518 futimens(0, NULL);
3519 return 0;
3520}
3521EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003522if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003523 utimens=yes
3524fi
3525
Riku Voipio099d6b02009-05-05 12:10:04 +03003526# check if pipe2 is there
3527pipe2=no
3528cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003529#include <unistd.h>
3530#include <fcntl.h>
3531
3532int main(void)
3533{
3534 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003535 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003536}
3537EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003538if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003539 pipe2=yes
3540fi
3541
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003542# check if accept4 is there
3543accept4=no
3544cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003545#include <sys/socket.h>
3546#include <stddef.h>
3547
3548int main(void)
3549{
3550 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3551 return 0;
3552}
3553EOF
3554if compile_prog "" "" ; then
3555 accept4=yes
3556fi
3557
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303558# check if tee/splice is there. vmsplice was added same time.
3559splice=no
3560cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303561#include <unistd.h>
3562#include <fcntl.h>
3563#include <limits.h>
3564
3565int main(void)
3566{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003567 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303568 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3569 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3570 return 0;
3571}
3572EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003573if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303574 splice=yes
3575fi
3576
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003577##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003578# libnuma probe
3579
3580if test "$numa" != "no" ; then
3581 cat > $TMPC << EOF
3582#include <numa.h>
3583int main(void) { return numa_available(); }
3584EOF
3585
3586 if compile_prog "" "-lnuma" ; then
3587 numa=yes
3588 libs_softmmu="-lnuma $libs_softmmu"
3589 else
3590 if test "$numa" = "yes" ; then
3591 feature_not_found "numa" "install numactl devel"
3592 fi
3593 numa=no
3594 fi
3595fi
3596
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003597if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3598 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3599 exit 1
3600fi
3601
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003602##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003603# tcmalloc probe
3604
3605if test "$tcmalloc" = "yes" ; then
3606 cat > $TMPC << EOF
3607#include <stdlib.h>
3608int main(void) { malloc(1); return 0; }
3609EOF
3610
3611 if compile_prog "" "-ltcmalloc" ; then
3612 LIBS="-ltcmalloc $LIBS"
3613 else
3614 feature_not_found "tcmalloc" "install gperftools devel"
3615 fi
3616fi
3617
3618##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003619# jemalloc probe
3620
3621if test "$jemalloc" = "yes" ; then
3622 cat > $TMPC << EOF
3623#include <stdlib.h>
3624int main(void) { malloc(1); return 0; }
3625EOF
3626
3627 if compile_prog "" "-ljemalloc" ; then
3628 LIBS="-ljemalloc $LIBS"
3629 else
3630 feature_not_found "jemalloc" "install jemalloc devel"
3631 fi
3632fi
3633
3634##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003635# signalfd probe
3636signalfd="no"
3637cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003638#include <unistd.h>
3639#include <sys/syscall.h>
3640#include <signal.h>
3641int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3642EOF
3643
3644if compile_prog "" "" ; then
3645 signalfd=yes
3646fi
3647
Riku Voipioc2882b92009-08-12 15:08:24 +03003648# check if eventfd is supported
3649eventfd=no
3650cat > $TMPC << EOF
3651#include <sys/eventfd.h>
3652
3653int main(void)
3654{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003655 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003656}
3657EOF
3658if compile_prog "" "" ; then
3659 eventfd=yes
3660fi
3661
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003662# check if memfd is supported
3663memfd=no
3664cat > $TMPC << EOF
3665#include <sys/memfd.h>
3666
3667int main(void)
3668{
3669 return memfd_create("foo", MFD_ALLOW_SEALING);
3670}
3671EOF
3672if compile_prog "" "" ; then
3673 memfd=yes
3674fi
3675
3676
3677
Ulrich Hechtd0927932009-09-17 20:22:14 +03003678# check for fallocate
3679fallocate=no
3680cat > $TMPC << EOF
3681#include <fcntl.h>
3682
3683int main(void)
3684{
3685 fallocate(0, 0, 0, 0);
3686 return 0;
3687}
3688EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003689if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003690 fallocate=yes
3691fi
3692
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003693# check for fallocate hole punching
3694fallocate_punch_hole=no
3695cat > $TMPC << EOF
3696#include <fcntl.h>
3697#include <linux/falloc.h>
3698
3699int main(void)
3700{
3701 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3702 return 0;
3703}
3704EOF
3705if compile_prog "" "" ; then
3706 fallocate_punch_hole=yes
3707fi
3708
Denis V. Lunevb953f072015-01-30 11:42:14 +03003709# check that fallocate supports range zeroing inside the file
3710fallocate_zero_range=no
3711cat > $TMPC << EOF
3712#include <fcntl.h>
3713#include <linux/falloc.h>
3714
3715int main(void)
3716{
3717 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3718 return 0;
3719}
3720EOF
3721if compile_prog "" "" ; then
3722 fallocate_zero_range=yes
3723fi
3724
Kevin Wolfed911432014-09-29 17:12:59 +02003725# check for posix_fallocate
3726posix_fallocate=no
3727cat > $TMPC << EOF
3728#include <fcntl.h>
3729
3730int main(void)
3731{
3732 posix_fallocate(0, 0, 0);
3733 return 0;
3734}
3735EOF
3736if compile_prog "" "" ; then
3737 posix_fallocate=yes
3738fi
3739
Peter Maydellc727f472011-01-06 11:05:10 +00003740# check for sync_file_range
3741sync_file_range=no
3742cat > $TMPC << EOF
3743#include <fcntl.h>
3744
3745int main(void)
3746{
3747 sync_file_range(0, 0, 0, 0);
3748 return 0;
3749}
3750EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003751if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003752 sync_file_range=yes
3753fi
3754
Peter Maydelldace20d2011-01-10 13:11:24 +00003755# check for linux/fiemap.h and FS_IOC_FIEMAP
3756fiemap=no
3757cat > $TMPC << EOF
3758#include <sys/ioctl.h>
3759#include <linux/fs.h>
3760#include <linux/fiemap.h>
3761
3762int main(void)
3763{
3764 ioctl(0, FS_IOC_FIEMAP, 0);
3765 return 0;
3766}
3767EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003768if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003769 fiemap=yes
3770fi
3771
Ulrich Hechtd0927932009-09-17 20:22:14 +03003772# check for dup3
3773dup3=no
3774cat > $TMPC << EOF
3775#include <unistd.h>
3776
3777int main(void)
3778{
3779 dup3(0, 0, 0);
3780 return 0;
3781}
3782EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003783if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003784 dup3=yes
3785fi
3786
Alex Bligh4e0c6522013-08-21 16:02:43 +01003787# check for ppoll support
3788ppoll=no
3789cat > $TMPC << EOF
3790#include <poll.h>
3791
3792int main(void)
3793{
3794 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3795 ppoll(&pfd, 1, 0, 0);
3796 return 0;
3797}
3798EOF
3799if compile_prog "" "" ; then
3800 ppoll=yes
3801fi
3802
Alex Blighcd758dd2013-08-21 16:02:44 +01003803# check for prctl(PR_SET_TIMERSLACK , ... ) support
3804prctl_pr_set_timerslack=no
3805cat > $TMPC << EOF
3806#include <sys/prctl.h>
3807
3808int main(void)
3809{
3810 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3811 return 0;
3812}
3813EOF
3814if compile_prog "" "" ; then
3815 prctl_pr_set_timerslack=yes
3816fi
3817
Peter Maydell3b6edd12011-02-15 18:35:05 +00003818# check for epoll support
3819epoll=no
3820cat > $TMPC << EOF
3821#include <sys/epoll.h>
3822
3823int main(void)
3824{
3825 epoll_create(0);
3826 return 0;
3827}
3828EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003829if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003830 epoll=yes
3831fi
3832
Peter Maydell227f0212016-06-06 19:58:11 +01003833# epoll_create1 is a later addition
3834# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00003835epoll_create1=no
3836cat > $TMPC << EOF
3837#include <sys/epoll.h>
3838
3839int main(void)
3840{
Peter Maydell19e83f62011-04-26 16:56:40 +01003841 /* Note that we use epoll_create1 as a value, not as
3842 * a function being called. This is necessary so that on
3843 * old SPARC glibc versions where the function was present in
3844 * the library but not declared in the header file we will
3845 * fail the configure check. (Otherwise we will get a compiler
3846 * warning but not an error, and will proceed to fail the
3847 * qemu compile where we compile with -Werror.)
3848 */
Blue Swirlc075a722012-08-09 20:21:25 +00003849 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003850}
3851EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003852if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003853 epoll_create1=yes
3854fi
3855
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003856# check for sendfile support
3857sendfile=no
3858cat > $TMPC << EOF
3859#include <sys/sendfile.h>
3860
3861int main(void)
3862{
3863 return sendfile(0, 0, 0, 0);
3864}
3865EOF
3866if compile_prog "" "" ; then
3867 sendfile=yes
3868fi
3869
Riku Voipio51834342014-06-22 11:25:42 +01003870# check for timerfd support (glibc 2.8 and newer)
3871timerfd=no
3872cat > $TMPC << EOF
3873#include <sys/timerfd.h>
3874
3875int main(void)
3876{
3877 return(timerfd_create(CLOCK_REALTIME, 0));
3878}
3879EOF
3880if compile_prog "" "" ; then
3881 timerfd=yes
3882fi
3883
Riku Voipio9af5c902014-08-12 15:58:57 +03003884# check for setns and unshare support
3885setns=no
3886cat > $TMPC << EOF
3887#include <sched.h>
3888
3889int main(void)
3890{
3891 int ret;
3892 ret = setns(0, 0);
3893 ret = unshare(0);
3894 return ret;
3895}
3896EOF
3897if compile_prog "" "" ; then
3898 setns=yes
3899fi
3900
pbrookcc8ae6d2006-04-23 17:57:59 +00003901# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003902if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003903 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003904 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003905 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003906 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003907 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003908 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003909 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003910 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003911fi
3912
Stefan Weilf514f412009-10-11 12:44:07 +02003913# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003914byteswap_h=no
3915cat > $TMPC << EOF
3916#include <byteswap.h>
3917int main(void) { return bswap_32(0); }
3918EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003919if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003920 byteswap_h=yes
3921fi
3922
Stefan Weil75f13592013-01-05 12:17:38 +01003923# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003924bswap_h=no
3925cat > $TMPC << EOF
3926#include <sys/endian.h>
3927#include <sys/types.h>
3928#include <machine/bswap.h>
3929int main(void) { return bswap32(0); }
3930EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003931if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003932 bswap_h=yes
3933fi
3934
aliguorida93a1f2008-12-12 20:02:52 +00003935##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003936# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003937if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003938 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003939 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003940 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3941 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003942 else
3943 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003944 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003945 fi
3946 libiscsi="no"
3947 fi
3948fi
3949
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003950##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003951# Do we need libm
3952cat > $TMPC << EOF
3953#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003954int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003955EOF
3956if compile_prog "" "" ; then
3957 :
3958elif compile_prog "" "-lm" ; then
3959 LIBS="-lm $LIBS"
3960 libs_qga="-lm $libs_qga"
3961else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003962 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003963fi
3964
3965##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003966# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003967# uClibc provides 2 versions of clock_gettime(), one with realtime
3968# support and one without. This means that the clock_gettime() don't
3969# need -lrt. We still need it for timer_create() so we check for this
3970# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003971cat > $TMPC <<EOF
3972#include <signal.h>
3973#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003974int main(void) {
3975 timer_create(CLOCK_REALTIME, NULL, NULL);
3976 return clock_gettime(CLOCK_REALTIME, NULL);
3977}
aliguorida93a1f2008-12-12 20:02:52 +00003978EOF
3979
Juan Quintela52166aa2009-08-03 14:46:03 +02003980if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003981 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003982# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003983elif compile_prog "" "$pthread_lib -lrt" ; then
3984 LIBS="$LIBS -lrt"
3985 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003986fi
3987
Blue Swirl31ff5042009-09-12 12:33:07 +00003988if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003989 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003990 libs_softmmu="-lutil $libs_softmmu"
3991fi
3992
Blue Swirlde5071c2009-09-12 09:58:46 +00003993##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003994# spice probe
3995if test "$spice" != "no" ; then
3996 cat > $TMPC << EOF
3997#include <spice.h>
3998int main(void) { spice_server_new(); return 0; }
3999EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01004000 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4001 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004002 if $pkg_config --atleast-version=0.12.0 spice-server && \
4003 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004004 compile_prog "$spice_cflags" "$spice_libs" ; then
4005 spice="yes"
4006 libs_softmmu="$libs_softmmu $spice_libs"
4007 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004008 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4009 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004010 else
4011 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004012 feature_not_found "spice" \
4013 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004014 fi
4015 spice="no"
4016 fi
4017fi
4018
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004019# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004020smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004021if test "$smartcard" != "no"; then
4022 if $pkg_config libcacard; then
4023 libcacard_cflags=$($pkg_config --cflags libcacard)
4024 libcacard_libs=$($pkg_config --libs libcacard)
4025 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4026 libs_softmmu="$libs_softmmu $libcacard_libs"
4027 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004028 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004029 if test "$smartcard" = "yes"; then
4030 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004031 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004032 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004033 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004034fi
4035
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004036# check for libusb
4037if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004038 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004039 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004040 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4041 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004042 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4043 libs_softmmu="$libs_softmmu $libusb_libs"
4044 else
4045 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004046 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004047 fi
4048 libusb="no"
4049 fi
4050fi
4051
Hans de Goede69354a82011-07-19 11:04:10 +02004052# check for usbredirparser for usb network redirection support
4053if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004054 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004055 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004056 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4057 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004058 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02004059 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02004060 else
4061 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004062 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004063 fi
4064 usb_redir="no"
4065 fi
4066fi
4067
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004068##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004069# check if we have VSS SDK headers for win
4070
4071if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4072 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004073 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004074 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4075 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004076 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004077 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4078 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004079 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004080 esac
4081 cat > $TMPC << EOF
4082#define __MIDL_user_allocate_free_DEFINED__
4083#include <inc/win2003/vss.h>
4084int main(void) { return VSS_CTX_BACKUP; }
4085EOF
4086 if compile_prog "$vss_win32_include" "" ; then
4087 guest_agent_with_vss="yes"
4088 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4089 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004090 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004091 else
4092 if test "$vss_win32_sdk" != "" ; then
4093 echo "ERROR: Please download and install Microsoft VSS SDK:"
4094 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4095 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4096 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4097 echo "ERROR: The headers are extracted in the directory \`inc'."
4098 feature_not_found "VSS support"
4099 fi
4100 guest_agent_with_vss="no"
4101 fi
4102fi
4103
4104##########################################
4105# lookup Windows platform SDK (if not specified)
4106# The SDK is needed only to build .tlb (type library) file of guest agent
4107# VSS provider from the source. It is usually unnecessary because the
4108# pre-compiled .tlb file is included.
4109
4110if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4111 if test -z "$win_sdk"; then
4112 programfiles="$PROGRAMFILES"
4113 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4114 if test -n "$programfiles"; then
4115 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4116 else
4117 feature_not_found "Windows SDK"
4118 fi
4119 elif test "$win_sdk" = "no"; then
4120 win_sdk=""
4121 fi
4122fi
4123
4124##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004125# check if mingw environment provides a recent ntddscsi.h
4126if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4127 cat > $TMPC << EOF
4128#include <windows.h>
4129#include <ntddscsi.h>
4130int main(void) {
4131#if !defined(IOCTL_SCSI_GET_ADDRESS)
4132#error Missing required ioctl definitions
4133#endif
4134 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4135 return addr.Lun;
4136}
4137EOF
4138 if compile_prog "" "" ; then
4139 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004140 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004141 fi
4142fi
4143
4144##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004145# virgl renderer probe
4146
4147if test "$virglrenderer" != "no" ; then
4148 cat > $TMPC << EOF
4149#include <virglrenderer.h>
4150int main(void) { virgl_renderer_poll(); return 0; }
4151EOF
4152 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4153 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4154 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4155 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4156 virglrenderer="yes"
4157 else
4158 if test "$virglrenderer" = "yes" ; then
4159 feature_not_found "virglrenderer"
4160 fi
4161 virglrenderer="no"
4162 fi
4163fi
4164
4165##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004166# check if we have fdatasync
4167
4168fdatasync=no
4169cat > $TMPC << EOF
4170#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004171int main(void) {
4172#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4173return fdatasync(0);
4174#else
Stefan Weile172fe12012-04-06 21:33:20 +02004175#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004176#endif
4177}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004178EOF
4179if compile_prog "" "" ; then
4180 fdatasync=yes
4181fi
4182
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004183##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004184# check if we have madvise
4185
4186madvise=no
4187cat > $TMPC << EOF
4188#include <sys/types.h>
4189#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004190#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004191int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4192EOF
4193if compile_prog "" "" ; then
4194 madvise=yes
4195fi
4196
4197##########################################
4198# check if we have posix_madvise
4199
4200posix_madvise=no
4201cat > $TMPC << EOF
4202#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004203#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004204int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4205EOF
4206if compile_prog "" "" ; then
4207 posix_madvise=yes
4208fi
4209
4210##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004211# check if we have posix_syslog
4212
4213posix_syslog=no
4214cat > $TMPC << EOF
4215#include <syslog.h>
4216int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4217EOF
4218if compile_prog "" "" ; then
4219 posix_syslog=yes
4220fi
4221
4222##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004223# check if trace backend exists
4224
Lluís Vilanova5b808272014-05-27 15:02:14 +02004225$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004226if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004227 error_exit "invalid trace backends" \
4228 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004229fi
4230
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004231##########################################
4232# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004233if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004234 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004235#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004236int main(void) { return 0; }
4237EOF
4238 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004239 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004240 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004241 else
4242 lttng_ust_libs="-llttng-ust"
4243 fi
4244 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004245 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004246 else
4247 urcu_bp_libs="-lurcu-bp"
4248 fi
4249
4250 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4251 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004252 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004253 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004254 fi
4255fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004256
4257##########################################
4258# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004259if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004260 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004261 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004262 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004263 trace_backend_stap="no"
4264 if has 'stap' ; then
4265 trace_backend_stap="yes"
4266 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004267fi
4268
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004269##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004270# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304271
Peter Maydell7c2acc72013-04-08 12:11:27 +01004272# We prefer ucontext, but it's not always possible. The fallback
4273# is sigcontext. gthread is not selectable except explicitly, because
4274# it is not functional enough to run QEMU proper. (It is occasionally
4275# useful for debugging purposes.) On Windows the only valid backend
4276# is the Windows-specific one.
4277
4278ucontext_works=no
4279if test "$darwin" != "yes"; then
4280 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304281#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004282#ifdef __stub_makecontext
4283#error Ignoring glibc stub makecontext which will always fail
4284#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004285int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304286EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004287 if compile_prog "" "" ; then
4288 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304289 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004290fi
4291
4292if test "$coroutine" = ""; then
4293 if test "$mingw32" = "yes"; then
4294 coroutine=win32
4295 elif test "$ucontext_works" = "yes"; then
4296 coroutine=ucontext
4297 else
4298 coroutine=sigaltstack
4299 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004300else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004301 case $coroutine in
4302 windows)
4303 if test "$mingw32" != "yes"; then
4304 error_exit "'windows' coroutine backend only valid for Windows"
4305 fi
4306 # Unfortunately the user visible backend name doesn't match the
4307 # coroutine-*.c filename for this case, so we have to adjust it here.
4308 coroutine=win32
4309 ;;
4310 ucontext)
4311 if test "$ucontext_works" != "yes"; then
4312 feature_not_found "ucontext"
4313 fi
4314 ;;
4315 gthread|sigaltstack)
4316 if test "$mingw32" = "yes"; then
4317 error_exit "only the 'windows' coroutine backend is valid for Windows"
4318 fi
4319 ;;
4320 *)
4321 error_exit "unknown coroutine backend $coroutine"
4322 ;;
4323 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304324fi
4325
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004326if test "$coroutine_pool" = ""; then
4327 if test "$coroutine" = "gthread"; then
4328 coroutine_pool=no
4329 else
4330 coroutine_pool=yes
4331 fi
4332fi
4333if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4334 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4335fi
4336
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304337##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304338# check if we have open_by_handle_at
4339
Stefan Weil4e1797f2012-06-18 22:11:06 +02004340open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304341cat > $TMPC << EOF
4342#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004343#if !defined(AT_EMPTY_PATH)
4344# error missing definition
4345#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004346int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004347#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304348EOF
4349if compile_prog "" "" ; then
4350 open_by_handle_at=yes
4351fi
4352
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304353########################################
4354# check if we have linux/magic.h
4355
4356linux_magic_h=no
4357cat > $TMPC << EOF
4358#include <linux/magic.h>
4359int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004360 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304361}
4362EOF
4363if compile_prog "" "" ; then
4364 linux_magic_h=yes
4365fi
4366
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004367########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004368# check whether we can disable warning option with a pragma (this is needed
4369# to silence warnings in the headers of some versions of external libraries).
4370# This test has to be compiled with -Werror as otherwise an unknown pragma is
4371# only a warning.
4372#
4373# If we can't selectively disable warning in the code, disable -Werror so that
4374# the build doesn't fail anyway.
4375
Peter Maydell06d71fa2012-07-30 16:13:07 +01004376pragma_disable_unused_but_set=no
4377cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004378#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004379#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004380#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004381#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004382
Peter Maydell06d71fa2012-07-30 16:13:07 +01004383int main(void) {
4384 return 0;
4385}
4386EOF
4387if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004388 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004389else
4390 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004391fi
4392
4393########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004394# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004395
4396valgrind_h=no
4397cat > $TMPC << EOF
4398#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004399int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004400 return 0;
4401}
4402EOF
4403if compile_prog "" "" ; then
4404 valgrind_h=yes
4405fi
4406
4407########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004408# check if environ is declared
4409
4410has_environ=no
4411cat > $TMPC << EOF
4412#include <unistd.h>
4413int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004414 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004415 return 0;
4416}
4417EOF
4418if compile_prog "" "" ; then
4419 has_environ=yes
4420fi
4421
Richard Henderson76a347e2012-12-28 14:17:02 -08004422########################################
4423# check if cpuid.h is usable.
4424
4425cpuid_h=no
4426cat > $TMPC << EOF
4427#include <cpuid.h>
4428int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004429 unsigned a, b, c, d;
4430 int max = __get_cpuid_max(0, 0);
4431
4432 if (max >= 1) {
4433 __cpuid(1, a, b, c, d);
4434 }
4435
4436 if (max >= 7) {
4437 __cpuid_count(7, 0, a, b, c, d);
4438 }
4439
4440 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004441}
4442EOF
4443if compile_prog "" "" ; then
4444 cpuid_h=yes
4445fi
4446
Richard Hendersonf5401662013-02-16 12:46:59 -08004447########################################
4448# check if __[u]int128_t is usable.
4449
4450int128=no
4451cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004452#if defined(__clang_major__) && defined(__clang_minor__)
4453# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4454# error __int128_t does not work in CLANG before 3.2
4455# endif
4456#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004457__int128_t a;
4458__uint128_t b;
4459int main (void) {
4460 a = a + b;
4461 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004462 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004463 return 0;
4464}
4465EOF
4466if compile_prog "" "" ; then
4467 int128=yes
4468fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004469
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004470########################################
4471# check if getauxval is available.
4472
4473getauxval=no
4474cat > $TMPC << EOF
4475#include <sys/auxv.h>
4476int main(void) {
4477 return getauxval(AT_HWCAP) == 0;
4478}
4479EOF
4480if compile_prog "" "" ; then
4481 getauxval=yes
4482fi
4483
John Snowfd0e6052015-03-25 18:57:39 -04004484########################################
4485# check if ccache is interfering with
4486# semantic analysis of macros
4487
John Snow5e4dfd32015-10-28 13:56:40 -04004488unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004489ccache_cpp2=no
4490cat > $TMPC << EOF
4491static const int Z = 1;
4492#define fn() ({ Z; })
4493#define TAUT(X) ((X) == Z)
4494#define PAREN(X, Y) (X == Y)
4495#define ID(X) (X)
4496int main(int argc, char *argv[])
4497{
4498 int x = 0, y = 0;
4499 x = ID(x);
4500 x = fn();
4501 fn();
4502 if (PAREN(x, y)) return 0;
4503 if (TAUT(Z)) return 0;
4504 return 0;
4505}
4506EOF
4507
4508if ! compile_object "-Werror"; then
4509 ccache_cpp2=yes
4510fi
4511
John Snowb553a042015-11-03 15:43:42 -05004512#################################################
4513# clang does not support glibc + FORTIFY_SOURCE.
4514
4515if test "$fortify_source" != "no"; then
4516 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4517 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004518 elif test -n "$cxx" &&
4519 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004520 fortify_source="no";
4521 else
4522 fortify_source="yes"
4523 fi
4524fi
4525
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304526##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04004527# check if struct fsxattr is available via linux/fs.h
4528
4529have_fsxattr=no
4530cat > $TMPC << EOF
4531#include <linux/fs.h>
4532struct fsxattr foo;
4533int main(void) {
4534 return 0;
4535}
4536EOF
4537if compile_prog "" "" ; then
4538 have_fsxattr=yes
4539fi
4540
Peter Maydellb66e10e2016-06-08 18:34:32 +01004541##########################################
4542# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02004543have_rtnetlink=no
4544cat > $TMPC << EOF
4545#include <linux/rtnetlink.h>
4546int main(void) {
4547 return IFLA_PROTO_DOWN;
4548}
4549EOF
4550if compile_prog "" "" ; then
4551 have_rtnetlink=yes
4552fi
4553
James Clarke6969ec62016-06-06 12:02:50 +01004554#################################################
4555# Sparc implicitly links with --relax, which is
4556# incompatible with -r, so --no-relax should be
4557# given. It does no harm to give it on other
4558# platforms too.
4559
4560# Note: the prototype is needed since QEMU_CFLAGS
4561# contains -Wmissing-prototypes
4562cat > $TMPC << EOF
4563extern int foo(void);
4564int foo(void) { return 0; }
4565EOF
4566if ! compile_object ""; then
4567 error_exit "Failed to compile object file for LD_REL_FLAGS test"
4568fi
4569if do_cc -nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
4570 LD_REL_FLAGS="-Wl,--no-relax"
4571fi
4572
Jan Vesely277abf12016-04-29 13:15:23 -04004573##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004574# End of CC checks
4575# After here, no more $cc or $ld runs
4576
Blue Swirl1d728c32012-05-01 18:45:39 +00004577if test "$gcov" = "yes" ; then
4578 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4579 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004580elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004581 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004582elif test "$debug" = "no"; then
4583 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004584fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004585
Peter Lieven6542aa92014-02-03 10:26:13 +01004586##########################################
4587# Do we have libnfs
4588if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004589 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004590 libnfs="yes"
4591 libnfs_libs=$($pkg_config --libs libnfs)
4592 LIBS="$LIBS $libnfs_libs"
4593 else
4594 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004595 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004596 fi
4597 libnfs="no"
4598 fi
4599fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004600
Peter Maydell6ca026c2012-07-18 15:10:18 +01004601# Now we've finished running tests it's OK to add -Werror to the compiler flags
4602if test "$werror" = "yes"; then
4603 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4604fi
4605
Juan Quintelae86ecd42009-08-03 14:45:59 +02004606if test "$solaris" = "no" ; then
4607 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004608 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004609 fi
4610fi
4611
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004612# test if pod2man has --utf8 option
4613if pod2man --help | grep -q utf8; then
4614 POD2MAN="pod2man --utf8"
4615else
4616 POD2MAN="pod2man"
4617fi
4618
Blue Swirl952afb72010-09-19 08:36:34 +00004619# Use ASLR, no-SEH and DEP if available
4620if test "$mingw32" = "yes" ; then
4621 for flag in --dynamicbase --no-seh --nxcompat; do
4622 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4623 LDFLAGS="-Wl,$flag $LDFLAGS"
4624 fi
4625 done
4626fi
4627
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004628qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004629qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004630qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004631qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004632
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004633tools=""
4634if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004635 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004636 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4637 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004638 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004639 fi
4640fi
4641if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304642 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004643 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4644 virtfs=yes
4645 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4646 else
4647 if test "$virtfs" = yes; then
Stefan Weil3f3b5382016-04-08 18:11:13 +02004648 error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05304649 fi
Andreas Färber17500372012-05-01 01:12:03 +02004650 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004651 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304652 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004653fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004654
4655# Probe for guest agent support/options
4656
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004657if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004658 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004659 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004660 guest_agent=yes
4661 elif [ "$guest_agent" != yes ]; then
4662 guest_agent=no
4663 else
4664 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004665 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004666fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004667
Michael Roth9d6bc272015-08-26 10:49:13 -05004668# Guest agent Window MSI package
4669
4670if test "$guest_agent" != yes; then
4671 if test "$guest_agent_msi" = yes; then
4672 error_exit "MSI guest agent package requires guest agent enabled"
4673 fi
4674 guest_agent_msi=no
4675elif test "$mingw32" != "yes"; then
4676 if test "$guest_agent_msi" = "yes"; then
4677 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4678 fi
4679 guest_agent_msi=no
4680elif ! has wixl; then
4681 if test "$guest_agent_msi" = "yes"; then
4682 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4683 fi
4684 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004685else
4686 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4687 # disabled explicitly
4688 if test "$guest_agent_msi" != "no"; then
4689 guest_agent_msi=yes
4690 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004691fi
4692
Michael Roth1a349042015-08-26 11:14:31 -05004693if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004694 if test "$guest_agent_with_vss" = "yes"; then
4695 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4696 fi
4697
4698 if test "$QEMU_GA_MANUFACTURER" = ""; then
4699 QEMU_GA_MANUFACTURER=QEMU
4700 fi
4701
4702 if test "$QEMU_GA_DISTRO" = ""; then
4703 QEMU_GA_DISTRO=Linux
4704 fi
4705
4706 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02004707 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05004708 fi
4709
Stefan Weil89138852016-05-16 15:10:20 +02004710 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05004711
4712 case "$cpu" in
4713 x86_64)
4714 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4715 ;;
4716 i386)
4717 QEMU_GA_MSI_ARCH="-D Arch=32"
4718 ;;
4719 *)
4720 error_exit "CPU $cpu not supported for building installation package"
4721 ;;
4722 esac
4723fi
4724
Paolo Bonzinica35f782010-05-26 16:08:29 +02004725# Mac OS X ships with a broken assembler
4726roms=
4727if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4728 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4729 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01004730 # Different host OS linkers have different ideas about the name of the ELF
4731 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4732 # variant; and Windows uses i386pe.
4733 for emu in elf_i386 elf_i386_fbsd i386pe; do
4734 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4735 ld_i386_emulation="$emu"
4736 roms="optionrom"
4737 break
4738 fi
4739 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02004740fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004741if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004742 roms="$roms spapr-rtas"
4743fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004744
Christian Borntraeger9933c302013-04-23 01:23:03 +00004745if test "$cpu" = "s390x" ; then
4746 roms="$roms s390-ccw"
4747fi
4748
Richard Henderson964c6fa2013-06-21 19:10:16 -07004749# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004750if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07004751 textseg_addr=
4752 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004753 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4754 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004755 textseg_addr=0x60000000
4756 ;;
4757 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004758 # A 256M aligned address, high in the address space, with enough
4759 # room for the code_gen_buffer above it before the stack.
4760 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004761 ;;
4762 esac
4763 if [ -n "$textseg_addr" ]; then
4764 cat > $TMPC <<EOF
4765 int main(void) { return 0; }
4766EOF
4767 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4768 if ! compile_prog "" "$textseg_ldflags"; then
4769 # In case ld does not support -Ttext-segment, edit the default linker
4770 # script via sed to set the .text start addr. This is needed on FreeBSD
4771 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004772 if ! $ld --verbose >/dev/null 2>&1; then
4773 error_exit \
4774 "We need to link the QEMU user mode binaries at a" \
4775 "specific text address. Unfortunately your linker" \
4776 "doesn't support either the -Ttext-segment option or" \
4777 "printing the default linker script with --verbose." \
4778 "If you don't want the user mode binaries, pass the" \
4779 "--disable-user option to configure."
4780 fi
4781
Richard Henderson964c6fa2013-06-21 19:10:16 -07004782 $ld --verbose | sed \
4783 -e '1,/==================================================/d' \
4784 -e '/==================================================/,$d' \
4785 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4786 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4787 textseg_ldflags="-Wl,-T../config-host.ld"
4788 fi
4789 fi
4790fi
4791
Cole Robinson02d34f62016-05-06 14:03:09 -04004792echo_version() {
4793 if test "$1" = "yes" ; then
4794 echo "($2)"
4795 fi
4796}
4797
Jan Kiszka50e12062014-10-02 10:03:55 +02004798# prepend pixman and ftd flags after all config tests are done
4799QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4800libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004801
bellard43ce4df2003-06-09 19:53:12 +00004802echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02004803echo "BIOS directory $(eval echo $qemu_datadir)"
4804echo "binary directory $(eval echo $bindir)"
4805echo "library directory $(eval echo $libdir)"
4806echo "module directory $(eval echo $qemu_moddir)"
4807echo "libexec directory $(eval echo $libexecdir)"
4808echo "include directory $(eval echo $includedir)"
4809echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00004810if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02004811echo "local state directory $(eval echo $local_statedir)"
4812echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00004813echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004814else
4815echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004816echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004817fi
bellard5a671352003-10-01 00:13:48 +00004818echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004819echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004820echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004821echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004822echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004823echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004824echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004825echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004826echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004827echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004828echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004829echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004830if test "$slirp" = "yes" ; then
4831 echo "smbd $smbd"
4832fi
Fam Zheng17969262014-02-10 14:48:56 +08004833echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004834echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004835echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004836echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004837echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004838echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004839echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004840echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004841echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004842echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004843if test "$darwin" = "yes" ; then
4844 echo "Cocoa support $cocoa"
4845fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004846echo "pixman $pixman"
Stefan Weil89138852016-05-16 15:10:20 +02004847echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
4848echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004849echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02004850echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01004851echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004852echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09004853echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004854echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01004855echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02004856echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01004857echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004858echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00004859echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004860echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004861echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004862echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004863echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004864echo "Block whitelist (rw) $block_drv_rw_whitelist"
4865echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304866echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004867echo "VNC support $vnc"
4868if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004869 echo "VNC SASL support $vnc_sasl"
4870 echo "VNC JPEG support $vnc_jpeg"
4871 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004872fi
blueswir131422552007-04-16 18:27:06 +00004873if test -n "$sparc_cpu"; then
4874 echo "Target Sparc Arch $sparc_cpu"
4875fi
aliguorie37630c2009-04-22 15:19:10 +00004876echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004877if test "$xen" = "yes" ; then
4878 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00004879 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00004880fi
aurel322e4d9fb2008-04-08 06:01:02 +00004881echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004882echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004883echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004884echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004885echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004886echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004887echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004888echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004889echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004890echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004891echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004892echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004893echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004894echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004895echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004896echo "madvise $madvise"
4897echo "posix_madvise $posix_madvise"
Stefan Weilee682d22009-10-01 20:10:37 +02004898echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004899echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004900echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004901echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01004902echo "vhost-vsock support $vhost_vsock"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004903echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01004904if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004905echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004906fi
Stefan Weil89138852016-05-16 15:10:20 +02004907echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004908echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004909echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004910echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004911echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004912echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004913echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01004914echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004915echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004916echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004917echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004918echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004919echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004920echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004921echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004922echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004923echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304924echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004925echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004926echo "gcov $gcov_tool"
4927echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004928echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004929echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004930echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004931echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004932echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004933echo "lzo support $lzo"
4934echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004935echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004936echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004937echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004938echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08004939echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08004940echo "replication support $replication"
bellard67b915a2004-03-31 23:37:16 +00004941
Stefan Weil1ba16962011-07-29 22:40:45 +02004942if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004943echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004944fi
bellard97a847b2003-08-10 21:36:04 +00004945
Juan Quintela98ec69a2009-07-16 18:34:18 +02004946config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004947
Stefan Weildbd99ae2013-01-01 18:33:44 +01004948echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4949
Juan Quintela98ec69a2009-07-16 18:34:18 +02004950echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004951echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004952
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004953echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004954echo "prefix=$prefix" >> $config_host_mak
4955echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004956echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004957echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004958echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004959echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004960echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004961echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004962echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4963echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004964echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004965if test "$mingw32" = "no" ; then
4966 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4967fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004968echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004969echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4970echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004971echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004972echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004973
Juan Quintela98ec69a2009-07-16 18:34:18 +02004974echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004975
aurel32f8393942009-04-13 18:45:38 +00004976if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004977 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004978fi
aliguori1625af82009-04-05 17:41:02 +00004979if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004980 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004981fi
bellard7d132992003-03-06 23:23:54 +00004982if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004983 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004984fi
bellard67b915a2004-03-31 23:37:16 +00004985if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004986 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02004987 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00004988 version_major=${rc_version%%.*}
4989 rc_version=${rc_version#*.}
4990 version_minor=${rc_version%%.*}
4991 rc_version=${rc_version#*.}
4992 version_subminor=${rc_version%%.*}
4993 version_micro=0
4994 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4995 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004996 if test "$guest_agent_with_vss" = "yes" ; then
4997 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004998 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004999 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5000 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05005001 if test "$guest_agent_ntddscsi" = "yes" ; then
5002 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5003 fi
Michael Roth1a349042015-08-26 11:14:31 -05005004 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03005005 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5006 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5007 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5008 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5009 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5010 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5011 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5012 fi
pbrook210fa552007-02-27 21:04:49 +00005013else
Juan Quintela35f4df22009-07-27 16:13:07 +02005014 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00005015fi
blueswir1128ab2f2008-08-15 18:33:42 +00005016
Mark McLoughlindffcb712009-10-22 17:49:11 +01005017if test "$linux" = "yes" ; then
5018 echo "CONFIG_LINUX=y" >> $config_host_mak
5019fi
5020
bellard83fb7ad2004-07-05 21:25:26 +00005021if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005022 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00005023fi
malcb29fe3e2008-11-18 01:42:22 +00005024
5025if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005026 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00005027fi
5028
bellardec530c82006-04-25 22:36:06 +00005029if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005030 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005031 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00005032 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02005033 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00005034 fi
bellardec530c82006-04-25 22:36:06 +00005035fi
Andreas Färber179cf402010-09-20 00:50:43 +02005036if test "$haiku" = "yes" ; then
5037 echo "CONFIG_HAIKU=y" >> $config_host_mak
5038fi
bellard97a847b2003-08-10 21:36:04 +00005039if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005040 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005041fi
Stefan Weil1ba16962011-07-29 22:40:45 +02005042if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005043 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00005044fi
bellardc20709a2004-04-21 23:27:19 +00005045if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005046 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04005047 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00005048fi
ths8a16d272008-07-19 09:56:24 +00005049if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005050 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005051fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005052if test "$netmap" = "yes" ; then
5053 echo "CONFIG_NETMAP=y" >> $config_host_mak
5054fi
Gonglei015a33b2014-07-01 20:58:08 +08005055if test "$l2tpv3" = "yes" ; then
5056 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5057fi
Corey Bryant47e98652012-01-26 09:42:26 -05005058if test "$cap_ng" = "yes" ; then
5059 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5060fi
Juan Quintela2358a492009-07-27 16:13:25 +02005061echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005062for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005063 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005064 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005065done
Juan Quintela67f86e82009-08-03 14:46:59 +02005066if test "$audio_pt_int" = "yes" ; then
5067 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5068fi
malcd5631632009-10-10 01:13:41 +04005069if test "$audio_win_int" = "yes" ; then
5070 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5071fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005072echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5073echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005074if test "$vnc" = "yes" ; then
5075 echo "CONFIG_VNC=y" >> $config_host_mak
5076fi
aliguori2f9606b2009-03-06 20:27:28 +00005077if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005078 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005079fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005080if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005081 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005082fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005083if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005084 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005085fi
aliguori76655d62009-03-06 20:27:37 +00005086if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005087 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005088fi
Stefan Weilee682d22009-10-01 20:10:37 +02005089if test "$uuid" = "yes" ; then
5090 echo "CONFIG_UUID=y" >> $config_host_mak
5091fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005092if test "$xfs" = "yes" ; then
5093 echo "CONFIG_XFS=y" >> $config_host_mak
5094fi
Stefan Weil89138852016-05-16 15:10:20 +02005095qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005096echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005097echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005098echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005099echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005100if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005101 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005102fi
Fam Zheng17969262014-02-10 14:48:56 +08005103if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005104 # $shacmd can generate a hash started with digit, which the compiler doesn't
5105 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005106 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005107 echo "CONFIG_MODULES=y" >> $config_host_mak
5108fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005109if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005110 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005111 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005112 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005113fi
5114if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005115 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005116fi
5117if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005118 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005119fi
Riku Voipioebc996f2009-04-21 15:01:51 +03005120if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005121 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03005122fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005123if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005124 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005125fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005126if test "$accept4" = "yes" ; then
5127 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5128fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305129if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005130 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305131fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005132if test "$eventfd" = "yes" ; then
5133 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5134fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005135if test "$memfd" = "yes" ; then
5136 echo "CONFIG_MEMFD=y" >> $config_host_mak
5137fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005138if test "$fallocate" = "yes" ; then
5139 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5140fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005141if test "$fallocate_punch_hole" = "yes" ; then
5142 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5143fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005144if test "$fallocate_zero_range" = "yes" ; then
5145 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5146fi
Kevin Wolfed911432014-09-29 17:12:59 +02005147if test "$posix_fallocate" = "yes" ; then
5148 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5149fi
Peter Maydellc727f472011-01-06 11:05:10 +00005150if test "$sync_file_range" = "yes" ; then
5151 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5152fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005153if test "$fiemap" = "yes" ; then
5154 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5155fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005156if test "$dup3" = "yes" ; then
5157 echo "CONFIG_DUP3=y" >> $config_host_mak
5158fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005159if test "$ppoll" = "yes" ; then
5160 echo "CONFIG_PPOLL=y" >> $config_host_mak
5161fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005162if test "$prctl_pr_set_timerslack" = "yes" ; then
5163 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5164fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005165if test "$epoll" = "yes" ; then
5166 echo "CONFIG_EPOLL=y" >> $config_host_mak
5167fi
5168if test "$epoll_create1" = "yes" ; then
5169 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5170fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005171if test "$sendfile" = "yes" ; then
5172 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5173fi
Riku Voipio51834342014-06-22 11:25:42 +01005174if test "$timerfd" = "yes" ; then
5175 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5176fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005177if test "$setns" = "yes" ; then
5178 echo "CONFIG_SETNS=y" >> $config_host_mak
5179fi
aurel323b3f24a2009-04-15 16:12:13 +00005180if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005181 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005182fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005183if test "$inotify1" = "yes" ; then
5184 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5185fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005186if test "$byteswap_h" = "yes" ; then
5187 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5188fi
5189if test "$bswap_h" = "yes" ; then
5190 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5191fi
Alexander Graf769ce762009-05-11 17:41:42 +02005192if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005193 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005194 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005195 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005196fi
aurel322e4d9fb2008-04-08 06:01:02 +00005197if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005198 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005199fi
balrogfb599c92008-09-28 23:49:55 +00005200if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005201 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005202 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005203fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005204if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005205 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5206fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005207echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005208if test "$gtk" = "yes" ; then
5209 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005210 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005211 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005212 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005213 if test "$gtk_gl" = "yes" ; then
5214 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5215 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005216fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005217echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005218if test "$gnutls" = "yes" ; then
5219 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5220fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005221if test "$gnutls_rnd" = "yes" ; then
5222 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5223fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005224if test "$gcrypt" = "yes" ; then
5225 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005226 if test "$gcrypt_kdf" = "yes" ; then
5227 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5228 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005229fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005230if test "$nettle" = "yes" ; then
5231 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005232 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005233 if test "$nettle_kdf" = "yes" ; then
5234 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5235 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005236fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005237if test "$tasn1" = "yes" ; then
5238 echo "CONFIG_TASN1=y" >> $config_host_mak
5239fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005240if test "$have_ifaddrs_h" = "yes" ; then
5241 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5242fi
Jan Vesely277abf12016-04-29 13:15:23 -04005243
5244# Work around a system header bug with some kernel/XFS header
5245# versions where they both try to define 'struct fsxattr':
5246# xfs headers will not try to redefine structs from linux headers
5247# if this macro is set.
5248if test "$have_fsxattr" = "yes" ; then
5249 echo "HAVE_FSXATTR=y" >> $config_host_mak
5250fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005251if test "$vte" = "yes" ; then
5252 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005253 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5254fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005255if test "$virglrenderer" = "yes" ; then
5256 echo "CONFIG_VIRGL=y" >> $config_host_mak
5257 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5258 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5259fi
aliguorie37630c2009-04-22 15:19:10 +00005260if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005261 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005262 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005263 if test "$xen_pv_domain_build" = "yes" ; then
5264 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5265 fi
aliguorie37630c2009-04-22 15:19:10 +00005266fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005267if test "$linux_aio" = "yes" ; then
5268 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5269fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005270if test "$attr" = "yes" ; then
5271 echo "CONFIG_ATTR=y" >> $config_host_mak
5272fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005273if test "$libattr" = "yes" ; then
5274 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5275fi
Meador Inge983eef52012-02-24 14:00:42 +05305276if test "$virtfs" = "yes" ; then
5277 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005278fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005279if test "$vhost_scsi" = "yes" ; then
5280 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5281fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005282if test "$vhost_net" = "yes" ; then
5283 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5284fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005285if test "$vhost_vsock" = "yes" ; then
5286 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5287fi
ths77755342008-11-27 15:45:16 +00005288if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005289 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005290fi
aliguoribf9298b2008-12-05 20:05:26 +00005291if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005292 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005293fi
aliguoriceb42de2009-04-07 18:43:28 +00005294if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005295 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005296fi
aurel32f652e6a2008-12-16 10:43:48 +00005297if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005298 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005299fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005300if test "$signalfd" = "yes" ; then
5301 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5302fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005303if test "$tcg_interpreter" = "yes" ; then
5304 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5305fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005306if test "$fdatasync" = "yes" ; then
5307 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5308fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005309if test "$madvise" = "yes" ; then
5310 echo "CONFIG_MADVISE=y" >> $config_host_mak
5311fi
5312if test "$posix_madvise" = "yes" ; then
5313 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5314fi
bellard97a847b2003-08-10 21:36:04 +00005315
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005316if test "$spice" = "yes" ; then
5317 echo "CONFIG_SPICE=y" >> $config_host_mak
5318fi
5319
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005320if test "$smartcard" = "yes" ; then
5321 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005322fi
5323
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005324if test "$libusb" = "yes" ; then
5325 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5326fi
5327
Hans de Goede69354a82011-07-19 11:04:10 +02005328if test "$usb_redir" = "yes" ; then
5329 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5330fi
5331
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005332if test "$opengl" = "yes" ; then
5333 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005334 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005335 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005336 if test "$opengl_dmabuf" = "yes" ; then
5337 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5338 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005339fi
5340
Liang Li99f2dbd2016-03-08 13:53:16 +08005341if test "$avx2_opt" = "yes" ; then
5342 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5343fi
5344
qiaonuohan607dacd2014-02-18 14:11:30 +08005345if test "$lzo" = "yes" ; then
5346 echo "CONFIG_LZO=y" >> $config_host_mak
5347fi
5348
5349if test "$snappy" = "yes" ; then
5350 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5351fi
5352
Peter Wu6b383c02015-01-06 18:48:14 +01005353if test "$bzip2" = "yes" ; then
5354 echo "CONFIG_BZIP2=y" >> $config_host_mak
5355 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5356fi
5357
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005358if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005359 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005360 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5361 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005362fi
5363
Peter Lieven6542aa92014-02-03 10:26:13 +01005364if test "$libnfs" = "yes" ; then
5365 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5366fi
5367
Eduardo Otubof7945732012-08-14 18:44:05 -03005368if test "$seccomp" = "yes"; then
5369 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5370fi
5371
bellard83fb7ad2004-07-05 21:25:26 +00005372# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005373if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005374 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005375fi
5376
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005377if test "$localtime_r" = "yes" ; then
5378 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5379fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005380if test "$qom_cast_debug" = "yes" ; then
5381 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5382fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005383if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005384 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005385 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5386 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005387fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005388
Peter Maydell7c2acc72013-04-08 12:11:27 +01005389echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005390if test "$coroutine_pool" = "yes" ; then
5391 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5392else
5393 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5394fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305395
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305396if test "$open_by_handle_at" = "yes" ; then
5397 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5398fi
5399
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305400if test "$linux_magic_h" = "yes" ; then
5401 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5402fi
5403
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005404if test "$pragma_diagnostic_available" = "yes" ; then
5405 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005406fi
5407
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005408if test "$valgrind_h" = "yes" ; then
5409 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5410fi
5411
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005412if test "$has_environ" = "yes" ; then
5413 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5414fi
5415
Richard Henderson76a347e2012-12-28 14:17:02 -08005416if test "$cpuid_h" = "yes" ; then
5417 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5418fi
5419
Richard Hendersonf5401662013-02-16 12:46:59 -08005420if test "$int128" = "yes" ; then
5421 echo "CONFIG_INT128=y" >> $config_host_mak
5422fi
5423
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005424if test "$getauxval" = "yes" ; then
5425 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5426fi
5427
Bharata B Raoeb100392012-09-24 14:42:45 +05305428if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005429 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005430 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5431 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305432fi
5433
Jeff Codyd85fa9e2016-04-05 10:40:09 -04005434if test "$glusterfs_xlator_opt" = "yes" ; then
5435 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5436fi
5437
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305438if test "$glusterfs_discard" = "yes" ; then
5439 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5440fi
5441
Bharata B Rao7c815372013-12-21 14:51:25 +05305442if test "$glusterfs_zerofill" = "yes" ; then
5443 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5444fi
5445
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005446if test "$archipelago" = "yes" ; then
5447 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5448 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5449fi
5450
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005451if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005452 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005453 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5454 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005455fi
5456
Jeff Cody4f18b782013-10-30 10:44:39 -04005457if test "$vhdx" = "yes" ; then
5458 echo "CONFIG_VHDX=y" >> $config_host_mak
5459fi
5460
blueswir168063642008-11-22 21:03:55 +00005461# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005462if test "$libusb" = "yes"; then
5463 echo "HOST_USB=libusb legacy" >> $config_host_mak
5464else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005465 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005466fi
blueswir168063642008-11-22 21:03:55 +00005467
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005468# TPM passthrough support?
5469if test "$tpm" = "yes"; then
5470 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5471 if test "$tpm_passthrough" = "yes"; then
5472 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5473 fi
5474fi
5475
Lluís Vilanova5b808272014-05-27 15:02:14 +02005476echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5477if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005478 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305479fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005480if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005481 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5482 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005483 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005484fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03005485if have_backend "log"; then
5486 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02005487fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005488if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005489 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5490fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005491if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005492 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5493 if test "$trace_backend_stap" = "yes" ; then
5494 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5495 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005496fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005497if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005498 if test "$linux" = "yes" ; then
5499 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005500 else
Stewart Smith21684af2014-01-24 12:39:10 +11005501 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005502 fi
5503fi
Paul Durrant0a852412016-08-04 14:44:14 +01005504if have_backend "syslog"; then
5505 if test "$posix_syslog" = "yes" ; then
5506 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5507 else
5508 feature_not_found "syslog(trace backend)" "syslog not available"
5509 fi
5510fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005511echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5512
Michael R. Hines2da776d2013-07-22 10:01:54 -04005513if test "$rdma" = "yes" ; then
5514 echo "CONFIG_RDMA=y" >> $config_host_mak
5515fi
5516
Laurent Vivier575b22b2016-06-02 22:14:15 +02005517if test "$have_rtnetlink" = "yes" ; then
5518 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5519fi
5520
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005521if test "$replication" = "yes" ; then
5522 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5523fi
5524
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005525# Hold two types of flag:
5526# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5527# a thread we have a handle to
5528# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5529# platform
5530if test "$pthread_setname_np" = "yes" ; then
5531 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5532 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5533fi
5534
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005535if test "$tcg_interpreter" = "yes"; then
5536 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5537elif test "$ARCH" = "sparc64" ; then
5538 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5539elif test "$ARCH" = "s390x" ; then
5540 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005541elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005542 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005543elif test "$ARCH" = "ppc64" ; then
5544 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005545else
5546 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5547fi
5548QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5549
Juan Quintela98ec69a2009-07-16 18:34:18 +02005550echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005551echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005552echo "MAKE=$make" >> $config_host_mak
5553echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005554echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5555echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03005556echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5557echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00005558echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005559echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005560if $iasl -h > /dev/null 2>&1; then
5561 echo "IASL=$iasl" >> $config_host_mak
5562fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005563echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005564echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005565echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005566echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005567echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005568echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07005569echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07005570echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005571echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005572echo "OBJCOPY=$objcopy" >> $config_host_mak
5573echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005574echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005575echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005576echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005577echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005578echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005579echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005580if test "$sparse" = "yes" ; then
5581 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005582 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005583 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005584 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5585 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5586fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005587if test "$cross_prefix" != ""; then
5588 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5589else
5590 echo "AUTOCONF_HOST := " >> $config_host_mak
5591fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005592echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005593echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01005594echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01005595echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005596echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005597echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01005598echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005599echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005600echo "DSOSUF=$DSOSUF" >> $config_host_mak
5601echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005602echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005603echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5604echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005605echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005606echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005607if test "$gcov" = "yes" ; then
5608 echo "CONFIG_GCOV=y" >> $config_host_mak
5609 echo "GCOV=$gcov_tool" >> $config_host_mak
5610fi
Juan Quintela804edf22009-07-27 16:12:49 +02005611
Peter Maydell6efd7512011-11-30 11:59:04 +00005612# use included Linux headers
5613if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005614 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005615 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005616 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005617 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005618 ;;
5619 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005620 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005621 ;;
5622 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005623 linux_arch=s390
5624 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005625 aarch64)
5626 linux_arch=arm64
5627 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005628 mips64)
5629 linux_arch=mips
5630 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005631 *)
5632 # For most CPUs the kernel architecture name and QEMU CPU name match.
5633 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005634 ;;
5635 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005636 # For non-KVM architectures we will not have asm headers
5637 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5638 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5639 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005640fi
5641
bellard1d14ffa2005-10-30 18:58:22 +00005642for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005643target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005644config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02005645target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00005646target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005647
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005648case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005649 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 +02005650 target_bigendian=yes
5651 ;;
5652esac
bellard97a847b2003-08-10 21:36:04 +00005653target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005654target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005655target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005656target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005657case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005658 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005659 target_softmmu="yes"
5660 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005661 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005662 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005663 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005664 fi
pbrook9e407a82007-05-26 16:38:53 +00005665 target_user_only="yes"
5666 target_linux_user="yes"
5667 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005668 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005669 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005670 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005671 fi
blueswir184778502008-10-26 20:33:16 +00005672 target_user_only="yes"
5673 target_bsd_user="yes"
5674 ;;
pbrook9e407a82007-05-26 16:38:53 +00005675 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005676 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005677 exit 1
5678 ;;
5679esac
ths831b7822007-01-18 20:06:33 +00005680
bellard97a847b2003-08-10 21:36:04 +00005681mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005682echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005683
pbrooke5fe0c52006-06-11 13:32:59 +00005684bflt="no"
Stefan Weil89138852016-05-16 15:10:20 +02005685interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00005686gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005687
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005688TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005689TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005690TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005691
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005692case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005693 i386)
aurel322408a522008-04-20 20:19:44 +00005694 ;;
5695 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005696 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005697 ;;
5698 alpha)
aurel322408a522008-04-20 20:19:44 +00005699 ;;
5700 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005701 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005702 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005703 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005704 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005705 aarch64)
5706 TARGET_BASE_ARCH=arm
5707 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005708 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 +01005709 ;;
aurel322408a522008-04-20 20:19:44 +00005710 cris)
aurel322408a522008-04-20 20:19:44 +00005711 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005712 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005713 ;;
aurel322408a522008-04-20 20:19:44 +00005714 m68k)
aurel322408a522008-04-20 20:19:44 +00005715 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005716 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005717 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005718 microblaze|microblazeel)
5719 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005720 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005721 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005722 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005723 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005724 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005725 ;;
5726 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005727 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005728 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005729 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005730 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005731 ;;
5732 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005733 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005734 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005735 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005736 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005737 moxie)
5738 ;;
Jia Liue67db062012-07-20 15:50:39 +08005739 or32)
5740 TARGET_ARCH=openrisc
5741 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005742 ;;
aurel322408a522008-04-20 20:19:44 +00005743 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005744 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005745 ;;
5746 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005747 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005748 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005749 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005750 ;;
5751 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005752 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005753 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005754 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005755 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005756 ppc64le)
5757 TARGET_ARCH=ppc64
5758 TARGET_BASE_ARCH=ppc
5759 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005760 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 -05005761 ;;
aurel322408a522008-04-20 20:19:44 +00005762 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005763 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005764 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005765 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005766 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01005767 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005768 ;;
5769 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005770 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005771 bflt="yes"
5772 ;;
5773 sparc)
aurel322408a522008-04-20 20:19:44 +00005774 ;;
5775 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005776 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005777 ;;
5778 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005779 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005780 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005781 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005782 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005783 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005784 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005785 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 +01005786 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005787 tilegx)
5788 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005789 tricore)
5790 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005791 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005792 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005793 xtensa|xtensaeb)
5794 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005795 ;;
aurel322408a522008-04-20 20:19:44 +00005796 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005797 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005798 ;;
5799esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005800# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5801if [ "$TARGET_BASE_ARCH" = "" ]; then
5802 TARGET_BASE_ARCH=$TARGET_ARCH
5803fi
5804
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005805symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5806
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005807upper() {
5808 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5809}
5810
Stefan Weil89138852016-05-16 15:10:20 +02005811target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02005812echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005813echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005814echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005815if [ "$TARGET_ABI_DIR" = "" ]; then
5816 TARGET_ABI_DIR=$TARGET_ARCH
5817fi
Juan Quintela25be2102009-10-07 02:41:00 +02005818echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005819if [ "$HOST_VARIANT_DIR" != "" ]; then
5820 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5821fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005822case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005823 i386|x86_64)
5824 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005825 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005826 if test "$xen_pci_passthrough" = yes; then
5827 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5828 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005829 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005830 ;;
5831 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005832esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005833case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005834 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005835 # Make sure the target and host cpus are compatible
5836 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005837 \( "$target_name" = "$cpu" -o \
5838 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5839 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5840 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5841 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005842 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005843 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005844 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5845 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5846 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005847 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005848 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005849 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureau421f4442015-10-26 15:32:00 +01005850 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005851 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005852 fi
5853esac
bellardde83cd02003-06-15 20:25:43 +00005854if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005855 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005856fi
5857if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005858 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005859fi
bellard997344f2003-10-27 21:10:39 +00005860if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005861 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005862 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005863fi
ths831b7822007-01-18 20:06:33 +00005864if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005865 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005866fi
pbrook56aebc82008-10-11 17:55:29 +00005867list=""
5868if test ! -z "$gdb_xml_files" ; then
5869 for x in $gdb_xml_files; do
5870 list="$list $source_path/gdb-xml/$x"
5871 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005872 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005873fi
bellardde83cd02003-06-15 20:25:43 +00005874
pbrooke5fe0c52006-06-11 13:32:59 +00005875if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005876 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005877fi
blueswir184778502008-10-26 20:33:16 +00005878if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005879 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005880fi
bellard5b0753e2005-03-01 21:37:28 +00005881
Juan Quintela4afddb52009-08-03 14:46:45 +02005882# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005883
Juan Quintela4afddb52009-08-03 14:46:45 +02005884cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005885ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005886
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005887disas_config() {
5888 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5889 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5890}
5891
Juan Quintela64656022009-08-03 14:46:53 +02005892for i in $ARCH $TARGET_BASE_ARCH ; do
5893 case "$i" in
5894 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005895 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005896 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005897 aarch64)
5898 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005899 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005900 fi
5901 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005902 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005903 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005904 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005905 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005906 fi
Juan Quintela64656022009-08-03 14:46:53 +02005907 ;;
5908 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005909 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005910 ;;
5911 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005912 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005913 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005914 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005915 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005916 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005917 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005918 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005919 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005920 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005921 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005922 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005923 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005924 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005925 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005926 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005927 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005928 ;;
5929 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005930 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005931 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005932 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005933 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005934 ;;
Jia Liue67db062012-07-20 15:50:39 +08005935 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005936 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005937 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005938 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005939 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005940 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005941 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005942 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005943 ;;
5944 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005945 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005946 ;;
5947 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005948 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005949 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005950 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005951 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005952 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005953 esac
5954done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005955if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005956 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005957fi
Juan Quintela64656022009-08-03 14:46:53 +02005958
Juan Quintela6ee71262009-08-03 14:46:47 +02005959case "$ARCH" in
5960alpha)
5961 # Ensure there's only a single GP
5962 cflags="-msmall-data $cflags"
5963;;
5964esac
5965
Juan Quintelad02c1db2009-08-03 14:46:50 +02005966if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005967 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005968 if test "$target_linux_user" = "yes" ; then
5969 cflags="-p $cflags"
5970 ldflags="-p $ldflags"
5971 fi
5972 if test "$target_softmmu" = "yes" ; then
5973 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005974 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005975 fi
5976fi
5977
Juan Quintela9b8e1112009-08-03 14:46:46 +02005978if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005979 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005980fi
Juan Quintelafa282482009-07-22 22:37:39 +02005981
Juan Quintela25be2102009-10-07 02:41:00 +02005982echo "LDFLAGS+=$ldflags" >> $config_target_mak
5983echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005984
bellard97a847b2003-08-10 21:36:04 +00005985done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005986
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005987if [ "$pixman" = "internal" ]; then
5988 echo "config-host.h: subdir-pixman" >> $config_host_mak
5989fi
5990
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005991if [ "$dtc_internal" = "yes" ]; then
5992 echo "config-host.h: subdir-dtc" >> $config_host_mak
5993fi
5994
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005995if test "$numa" = "yes"; then
5996 echo "CONFIG_NUMA=y" >> $config_host_mak
5997fi
5998
John Snowfd0e6052015-03-25 18:57:39 -04005999if test "$ccache_cpp2" = "yes"; then
6000 echo "export CCACHE_CPP2=y" >> $config_host_mak
6001fi
6002
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006003# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08006004DIRS="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 +04006005DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006006DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006007DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02006008DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06006009FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6010FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02006011FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006012FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02006013FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00006014FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006015FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01006016FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07006017for bios_file in \
6018 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01006019 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07006020 $source_path/pc-bios/*.rom \
6021 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00006022 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07006023 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01006024 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07006025 $source_path/pc-bios/palcode-*
6026do
Stefan Weil89138852016-05-16 15:10:20 +02006027 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006028done
Stefan Weil89138852016-05-16 15:10:20 +02006029for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006030do
Stefan Weil89138852016-05-16 15:10:20 +02006031 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006032done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006033mkdir -p $DIRS
6034for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03006035 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01006036 symlink "$source_path/$f" "$f"
6037 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006038done
Paul Brook1ad21342009-05-19 16:17:58 +01006039
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006040# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06006041for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006042 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01006043 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006044 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006045 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006046 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006047 echo "CC=$cc" >> $config_mak
6048 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006049 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006050 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006051 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006052 echo "LD=$ld" >> $config_mak
6053done
6054
Marc-André Lureaufe310172016-06-15 13:06:00 +02006055# set up tests data directory
6056if [ ! -e tests/data ]; then
6057 symlink "$source_path/tests/data" tests/data
6058fi
6059
Max Reitz76c75602014-05-24 23:24:56 +02006060# set up qemu-iotests in this build directory
6061iotests_common_env="tests/qemu-iotests/common.env"
6062iotests_check="tests/qemu-iotests/check"
6063
6064echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6065echo >> "$iotests_common_env"
6066echo "export PYTHON='$python'" >> "$iotests_common_env"
6067
6068if [ ! -e "$iotests_check" ]; then
6069 symlink "$source_path/$iotests_check" "$iotests_check"
6070fi
6071
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006072# Save the configure command line for later reuse.
6073cat <<EOD >config.status
6074#!/bin/sh
6075# Generated by configure.
6076# Run this file to recreate the current configuration.
6077# Compiler output produced by configure, useful for debugging
6078# configure, is in config.log if it exists.
6079EOD
6080printf "exec" >>config.status
6081printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006082echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006083chmod +x config.status
6084
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006085rm -r "$TMPDIR1"