blob: df4a247fc214162512302534b89c97c8febce6a1 [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"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100215vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100216vnc_sasl=""
217vnc_jpeg=""
218vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100219xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000220xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000221xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000222xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100223linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500224cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100225attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200226libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100227xfs=""
228
Bradd41a75a2011-07-26 23:11:26 -0400229vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000230vhost_scsi="no"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100231vhost_vsock="no"
Bradd41a75a2011-07-26 23:11:26 -0400232kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400233rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100234gprof="no"
235debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100236debug="no"
John Snowb553a042015-11-03 15:43:42 -0500237fortify_source=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100238strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200239tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100240bigendian="no"
241mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000242gcov="no"
243gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100244EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800245DSOSUF=".so"
246LDFLAGS_SHARED="-shared"
247modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100248prefix="/usr/local"
249mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300250datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300251qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100252bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300253libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400254libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200255includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100256sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300257local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100258confsuffix="/qemu"
259slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100260oss_lib=""
261bsd="no"
262linux="no"
263solaris="no"
264profiler="no"
265cocoa="no"
266softmmu="yes"
267linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100268bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100269aix="no"
270blobs="yes"
271pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200272pie=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200273qom_cast_debug="yes"
Paolo Bonzinibaf86d62016-01-07 16:55:31 +0300274trace_backends="log"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100275trace_file="trace"
276spice=""
277rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200278smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100279libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200280usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100281opengl=""
Gerd Hoffmann014cb152015-12-03 12:56:34 +0100282opengl_dmabuf="no"
Liang Li99f2dbd2016-03-08 13:53:16 +0800283avx2_opt="no"
Alon Levy1ece9902011-07-26 12:30:40 +0300284zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200285lzo=""
286snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100287bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400288guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400289guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500290guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300291guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400292vss_win32_sdk=""
293win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100294want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100295libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100296libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100297coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200298coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300299seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530300glusterfs=""
Jeff Codyd85fa9e2016-04-05 10:40:09 -0400301glusterfs_xlator_opt="no"
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530302glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530303glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100304archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600305gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200306gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200307gtk_gl="no"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +0100308tls_priority="NORMAL"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100309gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900310gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100311nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100312nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100313gcrypt=""
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100314gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100315vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200316virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400317tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100318libssh2=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800319numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800320tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200321jemalloc="no"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +0800322replication="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100323
aliguoriac0df512008-12-29 17:14:15 +0000324# parse CC options first
325for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200326 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000327 case "$opt" in
328 --cross-prefix=*) cross_prefix="$optarg"
329 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100330 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000331 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400332 --cxx=*) CXX="$optarg"
333 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100334 --source-path=*) source_path="$optarg"
335 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200336 --cpu=*) cpu="$optarg"
337 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100338 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100339 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200340 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100341 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100342 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200343 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100344 --enable-debug-info) debug_info="yes"
345 ;;
346 --disable-debug-info) debug_info="no"
347 ;;
aliguoriac0df512008-12-29 17:14:15 +0000348 esac
349done
aliguoriac0df512008-12-29 17:14:15 +0000350# OS specific
351# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100352# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000353
Peter Maydelle49d0212012-12-07 15:39:13 +0000354# Preferred compiler:
355# ${CC} (if set)
356# ${cross_prefix}gcc (if cross-prefix specified)
357# system compiler
358if test -z "${CC}${cross_prefix}"; then
359 cc="$host_cc"
360else
361 cc="${CC-${cross_prefix}gcc}"
362fi
363
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400364if test -z "${CXX}${cross_prefix}"; then
365 cxx="c++"
366else
367 cxx="${CXX-${cross_prefix}g++}"
368fi
369
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500370ar="${AR-${cross_prefix}ar}"
Richard Hendersoncdbd7272016-07-07 21:49:36 -0700371as="${AS-${cross_prefix}as}"
Richard Henderson5f6f0e22016-06-23 10:39:18 -0700372ccas="${CCAS-$cc}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000373cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500374objcopy="${OBJCOPY-${cross_prefix}objcopy}"
375ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200376nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500377strip="${STRIP-${cross_prefix}strip}"
378windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300379pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
380query_pkg_config() {
381 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
382}
383pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500384sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000385sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000386
Peter Maydell45d285a2013-10-21 21:03:06 +0100387# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
388ARFLAGS="${ARFLAGS-rv}"
389
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200390# default flags for all hosts
Peter Maydell2d315152016-09-12 14:10:08 +0100391# We use -fwrapv to tell the compiler that we require a C dialect where
392# left shift of signed integers is well defined and has the expected
393# 2s-complement style results. (Both clang and gcc agree that it
394# provides these semantics.)
395QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400396QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100397QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200398QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200399QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100400if test "$debug_info" = "yes"; then
401 CFLAGS="-g $CFLAGS"
402 LDFLAGS="-g $LDFLAGS"
403fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200404
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100405# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200406source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100407
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300408# running configure in the source tree?
409# we know that's the case if configure is there.
410if test -f "./configure"; then
411 pwd_is_source_path="y"
412else
413 pwd_is_source_path="n"
414fi
415
aliguoriac0df512008-12-29 17:14:15 +0000416check_define() {
417cat > $TMPC <<EOF
418#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000419#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000420#endif
421int main(void) { return 0; }
422EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200423 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000424}
425
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200426check_include() {
427cat > $TMPC <<EOF
428#include <$1>
429int main(void) { return 0; }
430EOF
431 compile_object
432}
433
John Snow93b25862015-03-25 18:57:37 -0400434write_c_skeleton() {
435 cat > $TMPC <<EOF
436int main(void) { return 0; }
437EOF
438}
439
Peter Maydellbbea4052012-08-14 15:35:34 +0100440if check_define __linux__ ; then
441 targetos="Linux"
442elif check_define _WIN32 ; then
443 targetos='MINGW32'
444elif check_define __OpenBSD__ ; then
445 targetos='OpenBSD'
446elif check_define __sun__ ; then
447 targetos='SunOS'
448elif check_define __HAIKU__ ; then
449 targetos='Haiku'
450else
Stefan Weil89138852016-05-16 15:10:20 +0200451 targetos=$(uname -s)
Peter Maydellbbea4052012-08-14 15:35:34 +0100452fi
453
454# Some host OSes need non-standard checks for which CPU to use.
455# Note that these checks are broken for cross-compilation: if you're
456# cross-compiling to one of these OSes then you'll need to specify
457# the correct CPU with the --cpu option.
458case $targetos in
459Darwin)
460 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
461 # run 64-bit userspace code.
462 # If the user didn't specify a CPU explicitly and the kernel says this is
463 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
464 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
465 cpu="x86_64"
466 fi
467 ;;
468SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200469 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100470 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
471 cpu="x86_64"
472 fi
473esac
474
Juan Quintela2ff6b912009-08-03 14:45:55 +0200475if test ! -z "$cpu" ; then
476 # command line argument
477 :
478elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000479 cpu="i386"
480elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700481 if check_define __ILP32__ ; then
482 cpu="x32"
483 else
484 cpu="x86_64"
485 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000486elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000487 if check_define __arch64__ ; then
488 cpu="sparc64"
489 else
490 cpu="sparc"
491 fi
malcfdf7ed92009-01-14 18:39:52 +0000492elif check_define _ARCH_PPC ; then
493 if check_define _ARCH_PPC64 ; then
494 cpu="ppc64"
495 else
496 cpu="ppc"
497 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200498elif check_define __mips__ ; then
499 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200500elif check_define __ia64__ ; then
501 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200502elif check_define __s390__ ; then
503 if check_define __s390x__ ; then
504 cpu="s390x"
505 else
506 cpu="s390"
507 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100508elif check_define __arm__ ; then
509 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100510elif check_define __aarch64__ ; then
511 cpu="aarch64"
aliguoriac0df512008-12-29 17:14:15 +0000512else
Stefan Weil89138852016-05-16 15:10:20 +0200513 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000514fi
515
Peter Maydell359bc952011-12-24 13:07:25 +0000516ARCH=
517# Normalise host CPU name and set ARCH.
518# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000519case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700520 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200521 cpu="$cpu"
522 ;;
bellard7d132992003-03-06 23:23:54 +0000523 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000524 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000525 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000526 x86_64|amd64)
527 cpu="x86_64"
528 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100529 armv*b|armv*l|arm)
530 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000531 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100532 aarch64)
533 cpu="aarch64"
534 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200535 mips*)
536 cpu="mips"
537 ;;
blueswir131422552007-04-16 18:27:06 +0000538 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000539 cpu="sparc"
540 ;;
bellard7d132992003-03-06 23:23:54 +0000541 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000542 # This will result in either an error or falling back to TCI later
543 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000544 ;;
545esac
Peter Maydell359bc952011-12-24 13:07:25 +0000546if test -z "$ARCH"; then
547 ARCH="$cpu"
548fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200549
bellard7d132992003-03-06 23:23:54 +0000550# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200551
Stacey Sonadfc3e92014-06-08 09:57:22 -0700552# host *BSD for user mode
553HOST_VARIANT_DIR=""
554
bellard7d132992003-03-06 23:23:54 +0000555case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000556CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200557 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200558 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200559 audio_possible_drivers="sdl"
560 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000561;;
bellard67b915a2004-03-31 23:37:16 +0000562MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200563 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200564 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200565 if check_include dsound.h; then
566 audio_drv_list="dsound"
567 else
568 audio_drv_list=""
569 fi
bellard67b915a2004-03-31 23:37:16 +0000570;;
ths5c40d2b2007-06-23 16:03:36 +0000571GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100572 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200573 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200574 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000575;;
bellard7d3505c2004-05-12 19:32:15 +0000576FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200577 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100578 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200579 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200580 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100581 # needed for kinfo_getvmmap(3) in libutil.h
582 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100583 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700584 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000585;;
blueswir1c5e97232009-03-07 20:06:23 +0000586DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200587 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100588 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200589 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200590 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700591 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000592;;
bellard7d3505c2004-05-12 19:32:15 +0000593NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200594 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100595 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200596 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200597 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200598 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700599 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000600;;
601OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100603 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400604 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200605 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700606 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000607;;
bellard83fb7ad2004-07-05 21:25:26 +0000608Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200609 bsd="yes"
610 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800611 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200613 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200614 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200615 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200616 cocoa="yes"
617 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200618 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200619 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200620 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100621 # Disable attempts to use ObjectiveC features in os/object.h since they
622 # won't work when we're compiling with gcc as a C compiler.
623 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700624 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000625;;
bellardec530c82006-04-25 22:36:06 +0000626SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200627 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100628 make="${MAKE-gmake}"
629 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000630 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400631 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200632 needs_libsunmath="no"
Stefan Weil89138852016-05-16 15:10:20 +0200633 solarisrev=$(uname -r | cut -f2 -d.)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200634 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
635 if test "$solarisrev" -le 9 ; then
636 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
637 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200638 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
639 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
640 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200641 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100642 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
643 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
644 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
645 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200646 fi
thsef18c882007-09-16 22:12:39 +0000647 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200648 fi
649 if test -f /usr/include/sys/soundcard.h ; then
650 audio_drv_list="oss"
651 fi
652 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000653# needed for CMSG_ macros in sys/socket.h
654 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
655# needed for TIOCWIN* defines in termios.h
656 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200657 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200658 solarisnetlibs="-lsocket -lnsl -lresolv"
659 LIBS="$solarisnetlibs $LIBS"
660 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000661;;
malcb29fe3e2008-11-18 01:42:22 +0000662AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200663 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100664 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000665;;
Andreas Färber179cf402010-09-20 00:50:43 +0200666Haiku)
667 haiku="yes"
668 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
669 LIBS="-lposix_error_mapper -lnetwork $LIBS"
670;;
bellard1d14ffa2005-10-30 18:58:22 +0000671*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200672 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200673 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200674 linux="yes"
675 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200676 kvm="yes"
677 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000678 vhost_scsi="yes"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +0100679 vhost_vsock="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000680 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000681;;
bellard7d132992003-03-06 23:23:54 +0000682esac
683
bellard7d3505c2004-05-12 19:32:15 +0000684if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000685 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200686 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000687 fi
bellard7d3505c2004-05-12 19:32:15 +0000688fi
689
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100690: ${make=${MAKE-make}}
691: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100692: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400693: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100694
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100695# Default objcc to clang if available, otherwise use CC
696if has clang; then
697 objcc=clang
698else
699 objcc="$cc"
700fi
701
Juan Quintela3457a3f2009-08-03 14:46:07 +0200702if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200703 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800704 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200705 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100706 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
707 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100708 # MinGW needs -mthreads for TLS and macro _MT.
709 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100710 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400711 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100712 if compile_prog "" "-liberty" ; then
713 LIBS="-liberty $LIBS"
714 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200715 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200716 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300717 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300718 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200719 bindir="\${prefix}"
720 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200721 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200722 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200723 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200724fi
725
Anthony Liguori487fefd2009-06-11 13:28:25 -0500726werror=""
bellard85aa5182007-11-11 20:17:03 +0000727
bellard7d132992003-03-06 23:23:54 +0000728for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200729 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000730 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000731 --help|-h) show_help=yes
732 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400733 --version|-V) exec cat $source_path/VERSION
734 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000735 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000736 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000737 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000738 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100739 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000740 ;;
aliguoriac0df512008-12-29 17:14:15 +0000741 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000742 ;;
aliguoriac0df512008-12-29 17:14:15 +0000743 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000744 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000745 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000746 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400747 --cxx=*)
748 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200749 --iasl=*) iasl="$optarg"
750 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100751 --objcc=*) objcc="$optarg"
752 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000753 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000754 ;;
pbrook6a882642006-04-17 13:57:12 +0000755 --install=*) install="$optarg"
756 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000757 --python=*) python="$optarg"
758 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000759 --gcov=*) gcov_tool="$optarg"
760 ;;
Brade2d88302011-09-02 16:53:28 -0400761 --smbd=*) smbd="$optarg"
762 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200763 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000764 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200765 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000766 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100767 --enable-debug-info)
768 ;;
769 --disable-debug-info)
770 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800771 --enable-modules)
772 modules="yes"
773 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000774 --disable-modules)
775 modules="no"
776 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200777 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000778 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000779 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000780 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200781 --enable-trace-backends=*) trace_backends="$optarg"
782 ;;
783 # XXX: backwards compatibility
784 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100785 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100786 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100787 ;;
bellard7d132992003-03-06 23:23:54 +0000788 --enable-gprof) gprof="yes"
789 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000790 --enable-gcov) gcov="yes"
791 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100792 --static)
793 static="yes"
794 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300795 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000796 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200797 --mandir=*) mandir="$optarg"
798 ;;
799 --bindir=*) bindir="$optarg"
800 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300801 --libdir=*) libdir="$optarg"
802 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400803 --libexecdir=*) libexecdir="$optarg"
804 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200805 --includedir=*) includedir="$optarg"
806 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300807 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200808 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300809 --with-confsuffix=*) confsuffix="$optarg"
810 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300811 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200812 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100813 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600814 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300815 --localstatedir=*) local_statedir="$optarg"
816 ;;
817 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400818 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
819 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
820 # These switches are silently ignored, for compatibility with
821 # autoconf-generated configure scripts. This allows QEMU's
822 # configure to be used by RPM and similar macros that set
823 # lots of directory switches by default.
824 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200825 --with-system-pixman) pixman="system"
826 ;;
827 --without-system-pixman) pixman="internal"
828 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100829 --without-pixman) pixman="none"
830 ;;
bellard97a847b2003-08-10 21:36:04 +0000831 --disable-sdl) sdl="no"
832 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200833 --enable-sdl) sdl="yes"
834 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000835 --with-sdlabi=*) sdlabi="$optarg"
836 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200837 --disable-qom-cast-debug) qom_cast_debug="no"
838 ;;
839 --enable-qom-cast-debug) qom_cast_debug="yes"
840 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530841 --disable-virtfs) virtfs="no"
842 ;;
843 --enable-virtfs) virtfs="yes"
844 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100845 --disable-vnc) vnc="no"
846 ;;
847 --enable-vnc) vnc="yes"
848 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000849 --oss-lib=*) oss_lib="$optarg"
850 ;;
malc0c58ac12008-06-25 21:04:05 +0000851 --audio-drv-list=*) audio_drv_list="$optarg"
852 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200853 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800854 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200855 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100856 ;;
aurel32f8393942009-04-13 18:45:38 +0000857 --enable-debug-tcg) debug_tcg="yes"
858 ;;
859 --disable-debug-tcg) debug_tcg="no"
860 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100861 --enable-debug)
862 # Enable debugging options that aren't excessively noisy
863 debug_tcg="yes"
864 debug="yes"
865 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500866 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100867 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000868 --enable-sparse) sparse="yes"
869 ;;
870 --disable-sparse) sparse="no"
871 ;;
aliguori1625af82009-04-05 17:41:02 +0000872 --disable-strip) strip_opt="no"
873 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000874 --disable-vnc-sasl) vnc_sasl="no"
875 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200876 --enable-vnc-sasl) vnc_sasl="yes"
877 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200878 --disable-vnc-jpeg) vnc_jpeg="no"
879 ;;
880 --enable-vnc-jpeg) vnc_jpeg="yes"
881 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200882 --disable-vnc-png) vnc_png="no"
883 ;;
884 --enable-vnc-png) vnc_png="yes"
885 ;;
bellard443f1372004-06-04 11:13:20 +0000886 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000887 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000888 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000889 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200890 --enable-vde) vde="yes"
891 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100892 --disable-netmap) netmap="no"
893 ;;
894 --enable-netmap) netmap="yes"
895 ;;
aliguorie37630c2009-04-22 15:19:10 +0000896 --disable-xen) xen="no"
897 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200898 --enable-xen) xen="yes"
899 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000900 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
901 ;;
902 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
903 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +0000904 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
905 ;;
906 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
907 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000908 --disable-brlapi) brlapi="no"
909 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200910 --enable-brlapi) brlapi="yes"
911 ;;
balrogfb599c92008-09-28 23:49:55 +0000912 --disable-bluez) bluez="no"
913 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200914 --enable-bluez) bluez="yes"
915 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000916 --disable-kvm) kvm="no"
917 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200918 --enable-kvm) kvm="yes"
919 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200920 --disable-tcg-interpreter) tcg_interpreter="no"
921 ;;
922 --enable-tcg-interpreter) tcg_interpreter="yes"
923 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500924 --disable-cap-ng) cap_ng="no"
925 ;;
926 --enable-cap-ng) cap_ng="yes"
927 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100928 --disable-spice) spice="no"
929 ;;
930 --enable-spice) spice="yes"
931 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100932 --disable-libiscsi) libiscsi="no"
933 ;;
934 --enable-libiscsi) libiscsi="yes"
935 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100936 --disable-libnfs) libnfs="no"
937 ;;
938 --enable-libnfs) libnfs="yes"
939 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000940 --enable-profiler) profiler="yes"
941 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400942 --disable-cocoa) cocoa="no"
943 ;;
malcc2de5c92008-06-28 19:13:06 +0000944 --enable-cocoa)
945 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +0200946 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +0000947 ;;
pbrookcad25d62006-03-19 16:31:11 +0000948 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000949 ;;
pbrookcad25d62006-03-19 16:31:11 +0000950 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000951 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000952 --disable-user)
953 linux_user="no" ;
954 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000955 ;;
956 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000957 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000958 ;;
ths831b7822007-01-18 20:06:33 +0000959 --enable-linux-user) linux_user="yes"
960 ;;
blueswir184778502008-10-26 20:33:16 +0000961 --disable-bsd-user) bsd_user="no"
962 ;;
963 --enable-bsd-user) bsd_user="yes"
964 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200965 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300966 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200967 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300968 ;;
bellard85aa5182007-11-11 20:17:03 +0000969 --enable-werror) werror="yes"
970 ;;
971 --disable-werror) werror="no"
972 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100973 --enable-stack-protector) stack_protector="yes"
974 ;;
975 --disable-stack-protector) stack_protector="no"
976 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000977 --disable-curses) curses="no"
978 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200979 --enable-curses) curses="yes"
980 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200981 --disable-curl) curl="no"
982 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200983 --enable-curl) curl="yes"
984 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200985 --disable-fdt) fdt="no"
986 ;;
987 --enable-fdt) fdt="yes"
988 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +0200989 --disable-linux-aio) linux_aio="no"
990 ;;
991 --enable-linux-aio) linux_aio="yes"
992 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -0700993 --disable-attr) attr="no"
994 ;;
995 --enable-attr) attr="yes"
996 ;;
ths77755342008-11-27 15:45:16 +0000997 --disable-blobs) blobs="no"
998 ;;
pbrook4a19f1e2009-04-07 23:17:49 +0000999 --with-pkgversion=*) pkgversion=" ($optarg)"
1000 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001001 --with-coroutine=*) coroutine="$optarg"
1002 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001003 --disable-coroutine-pool) coroutine_pool="no"
1004 ;;
1005 --enable-coroutine-pool) coroutine_pool="yes"
1006 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001007 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001008 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001009 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001010 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001011 --disable-vhost-net) vhost_net="no"
1012 ;;
1013 --enable-vhost-net) vhost_net="yes"
1014 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001015 --disable-vhost-scsi) vhost_scsi="no"
1016 ;;
1017 --enable-vhost-scsi) vhost_scsi="yes"
1018 ;;
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01001019 --disable-vhost-vsock) vhost_vsock="no"
1020 ;;
1021 --enable-vhost-vsock) vhost_vsock="yes"
1022 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001023 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001024 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001025 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001026 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001027 --disable-rbd) rbd="no"
1028 ;;
1029 --enable-rbd) rbd="yes"
1030 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001031 --disable-xfsctl) xfs="no"
1032 ;;
1033 --enable-xfsctl) xfs="yes"
1034 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001035 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001036 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001037 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001038 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001039 --disable-libusb) libusb="no"
1040 ;;
1041 --enable-libusb) libusb="yes"
1042 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001043 --disable-usb-redir) usb_redir="no"
1044 ;;
1045 --enable-usb-redir) usb_redir="yes"
1046 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001047 --disable-zlib-test) zlib="no"
1048 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001049 --disable-lzo) lzo="no"
1050 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001051 --enable-lzo) lzo="yes"
1052 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001053 --disable-snappy) snappy="no"
1054 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001055 --enable-snappy) snappy="yes"
1056 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001057 --disable-bzip2) bzip2="no"
1058 ;;
1059 --enable-bzip2) bzip2="yes"
1060 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001061 --enable-guest-agent) guest_agent="yes"
1062 ;;
1063 --disable-guest-agent) guest_agent="no"
1064 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001065 --enable-guest-agent-msi) guest_agent_msi="yes"
1066 ;;
1067 --disable-guest-agent-msi) guest_agent_msi="no"
1068 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001069 --with-vss-sdk) vss_win32_sdk=""
1070 ;;
1071 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1072 ;;
1073 --without-vss-sdk) vss_win32_sdk="no"
1074 ;;
1075 --with-win-sdk) win_sdk=""
1076 ;;
1077 --with-win-sdk=*) win_sdk="$optarg"
1078 ;;
1079 --without-win-sdk) win_sdk="no"
1080 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001081 --enable-tools) want_tools="yes"
1082 ;;
1083 --disable-tools) want_tools="no"
1084 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001085 --enable-seccomp) seccomp="yes"
1086 ;;
1087 --disable-seccomp) seccomp="no"
1088 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301089 --disable-glusterfs) glusterfs="no"
1090 ;;
1091 --enable-glusterfs) glusterfs="yes"
1092 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001093 --disable-archipelago) archipelago="no"
1094 ;;
1095 --enable-archipelago) archipelago="yes"
1096 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001097 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1098 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001099 ;;
Fam Zhengcb6414d2016-09-21 12:27:16 +08001100 --enable-vhdx|--disable-vhdx)
1101 echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1102 ;;
Fam Zheng315d3182016-09-21 12:27:21 +08001103 --enable-uuid|--disable-uuid)
1104 echo "$0: $opt is obsolete, UUID support is always built" >&2
1105 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001106 --disable-gtk) gtk="no"
1107 ;;
1108 --enable-gtk) gtk="yes"
1109 ;;
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001110 --tls-priority=*) tls_priority="$optarg"
1111 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001112 --disable-gnutls) gnutls="no"
1113 ;;
1114 --enable-gnutls) gnutls="yes"
1115 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001116 --disable-nettle) nettle="no"
1117 ;;
1118 --enable-nettle) nettle="yes"
1119 ;;
1120 --disable-gcrypt) gcrypt="no"
1121 ;;
1122 --enable-gcrypt) gcrypt="yes"
1123 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001124 --enable-rdma) rdma="yes"
1125 ;;
1126 --disable-rdma) rdma="no"
1127 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001128 --with-gtkabi=*) gtkabi="$optarg"
1129 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001130 --disable-vte) vte="no"
1131 ;;
1132 --enable-vte) vte="yes"
1133 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001134 --disable-virglrenderer) virglrenderer="no"
1135 ;;
1136 --enable-virglrenderer) virglrenderer="yes"
1137 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001138 --disable-tpm) tpm="no"
1139 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001140 --enable-tpm) tpm="yes"
1141 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001142 --disable-libssh2) libssh2="no"
1143 ;;
1144 --enable-libssh2) libssh2="yes"
1145 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001146 --disable-numa) numa="no"
1147 ;;
1148 --enable-numa) numa="yes"
1149 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001150 --disable-tcmalloc) tcmalloc="no"
1151 ;;
1152 --enable-tcmalloc) tcmalloc="yes"
1153 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001154 --disable-jemalloc) jemalloc="no"
1155 ;;
1156 --enable-jemalloc) jemalloc="yes"
1157 ;;
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001158 --disable-replication) replication="no"
1159 ;;
1160 --enable-replication) replication="yes"
1161 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001162 *)
1163 echo "ERROR: unknown option $opt"
1164 echo "Try '$0 --help' for more information"
1165 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001166 ;;
bellard7d132992003-03-06 23:23:54 +00001167 esac
1168done
1169
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001170if ! has $python; then
1171 error_exit "Python not found. Use --python=/path/to/python"
1172fi
1173
1174# Note that if the Python conditional here evaluates True we will exit
1175# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001176if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1177 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001178 "Note that Python 3 or later is not yet supported." \
1179 "Use --python=/path/to/python to specify a supported Python."
1180fi
1181
Markus Armbrusterfec21032015-09-04 21:53:03 +02001182# Suppress writing compiled files
1183python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001184
bellard40293e52008-01-31 11:32:10 +00001185case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001186 ppc)
1187 CPU_CFLAGS="-m32"
1188 LDFLAGS="-m32 $LDFLAGS"
1189 ;;
1190 ppc64)
1191 CPU_CFLAGS="-m64"
1192 LDFLAGS="-m64 $LDFLAGS"
1193 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001194 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001195 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001196 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001197 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001198 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001199 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001200 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001201 ;;
ths76d83bd2007-11-18 21:22:10 +00001202 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001203 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001204 LDFLAGS="-m31 $LDFLAGS"
1205 ;;
1206 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001207 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001208 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001209 ;;
bellard40293e52008-01-31 11:32:10 +00001210 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001211 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001212 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001213 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001214 ;;
1215 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001216 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001217 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001218 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001219 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001220 x32)
1221 CPU_CFLAGS="-mx32"
1222 LDFLAGS="-mx32 $LDFLAGS"
1223 cc_i386='$(CC) -m32'
1224 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001225 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001226esac
1227
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001228QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1229EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1230
Peter Maydellaffc88c2016-06-13 11:32:24 +01001231# For user-mode emulation the host arch has to be one we explicitly
1232# support, even if we're using TCI.
1233if [ "$ARCH" = "unknown" ]; then
1234 bsd_user="no"
1235 linux_user="no"
1236fi
1237
Peter Maydell60e0df22011-05-03 14:50:13 +01001238default_target_list=""
1239
Peter Maydell6e92f822013-05-20 16:16:15 +01001240mak_wilds=""
1241
1242if [ "$softmmu" = "yes" ]; then
1243 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001244fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001245if [ "$linux_user" = "yes" ]; then
1246 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001247fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001248if [ "$bsd_user" = "yes" ]; then
1249 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001250fi
1251
Peter Maydell6e92f822013-05-20 16:16:15 +01001252for config in $mak_wilds; do
1253 default_target_list="${default_target_list} $(basename "$config" .mak)"
1254done
1255
pbrookaf5db582006-04-08 14:26:41 +00001256if test x"$show_help" = x"yes" ; then
1257cat << EOF
1258
1259Usage: configure [options]
1260Options: [defaults in brackets after descriptions]
1261
Stefan Weil08fb77e2013-12-18 22:09:39 +01001262Standard options:
1263 --help print this message
1264 --prefix=PREFIX install in PREFIX [$prefix]
1265 --interp-prefix=PREFIX where to find shared libraries, etc.
1266 use %M for cpu name [$interp_prefix]
1267 --target-list=LIST set target list (default: build everything)
1268$(echo Available targets: $default_target_list | \
1269 fold -s -w 53 | sed -e 's/^/ /')
1270
1271Advanced options (experts only):
1272 --source-path=PATH path of source code [$source_path]
1273 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1274 --cc=CC use C compiler CC [$cc]
1275 --iasl=IASL use ACPI compiler IASL [$iasl]
1276 --host-cc=CC use C compiler CC [$host_cc] for code run at
1277 build time
1278 --cxx=CXX use C++ compiler CXX [$cxx]
1279 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1280 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1281 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1282 --make=MAKE use specified make [$make]
1283 --install=INSTALL use specified install [$install]
1284 --python=PYTHON use specified python [$python]
1285 --smbd=SMBD use specified smbd [$smbd]
1286 --static enable static build [$static]
1287 --mandir=PATH install man pages in PATH
1288 --datadir=PATH install firmware in PATH$confsuffix
1289 --docdir=PATH install documentation in PATH$confsuffix
1290 --bindir=PATH install binaries in PATH
1291 --libdir=PATH install libraries in PATH
1292 --sysconfdir=PATH install config in PATH$confsuffix
1293 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001294 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001295 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001296 --disable-strip disable stripping binaries
1297 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001298 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001299 --audio-drv-list=LIST set audio drivers list:
1300 Available drivers: $audio_possible_drivers
1301 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1302 --block-drv-rw-whitelist=L
1303 set block driver read-write whitelist
1304 (affects only QEMU, not qemu-img)
1305 --block-drv-ro-whitelist=L
1306 set block driver read-only whitelist
1307 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001308 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001309 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1310 --with-trace-file=NAME Full PATH,NAME of file to store traces
1311 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001312 --disable-slirp disable SLIRP userspace network connectivity
1313 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1314 --oss-lib path to OSS library
1315 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001316 --with-coroutine=BACKEND coroutine backend. Supported options:
1317 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001318 --enable-gcov enable test coverage analysis with gcov
1319 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001320 --disable-blobs disable installing provided firmware blobs
1321 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1322 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01001323 --tls-priority default TLS protocol/cipher priority string
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001324
1325Optional features, enabled with --enable-FEATURE and
1326disabled with --disable-FEATURE, default is enabled if available:
1327
1328 system all system emulation targets
1329 user supported user emulation targets
1330 linux-user all linux usermode emulation targets
1331 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001332 docs build documentation
1333 guest-agent build the QEMU Guest Agent
1334 guest-agent-msi build guest agent Windows MSI installation package
1335 pie Position Independent Executables
1336 modules modules support
1337 debug-tcg TCG debugging (default is disabled)
1338 debug-info debugging information
1339 sparse sparse checker
1340
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001341 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001342 nettle nettle cryptography support
1343 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001344 sdl SDL UI
1345 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1346 gtk gtk UI
1347 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1348 vte vte support for the gtk UI
1349 curses curses UI
1350 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001351 vnc-sasl SASL encryption for VNC server
1352 vnc-jpeg JPEG lossy compression for VNC server
1353 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001354 cocoa Cocoa UI (Mac OS X only)
1355 virtfs VirtFS
1356 xen xen backend driver support
1357 xen-pci-passthrough
1358 brlapi BrlAPI (Braile)
1359 curl curl connectivity
1360 fdt fdt device tree
1361 bluez bluez stack connectivity
1362 kvm KVM acceleration support
1363 rdma RDMA-based migration support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001364 vde support for vde network
1365 netmap support for netmap network
1366 linux-aio Linux AIO support
1367 cap-ng libcap-ng support
1368 attr attr and xattr support
1369 vhost-net vhost-net acceleration support
1370 spice spice
1371 rbd rados block device (rbd)
1372 libiscsi iscsi support
1373 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001374 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001375 libusb libusb (for usb passthrough)
1376 usb-redir usb network redirection support
1377 lzo support of lzo compression library
1378 snappy support of snappy compression library
1379 bzip2 support of bzip2 compression library
1380 (for reading bzip2-compressed dmg images)
1381 seccomp seccomp support
1382 coroutine-pool coroutine freelist (better performance)
1383 glusterfs GlusterFS backend
1384 archipelago Archipelago backend
1385 tpm TPM support
1386 libssh2 ssh block device support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001387 numa libnuma support
1388 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001389 jemalloc jemalloc support
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08001390 replication replication support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001391
1392NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001393EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001394exit 0
pbrookaf5db582006-04-08 14:26:41 +00001395fi
1396
Peter Maydell359bc952011-12-24 13:07:25 +00001397# Now we have handled --enable-tcg-interpreter and know we're not just
1398# printing the help message, bail out if the host CPU isn't supported.
1399if test "$ARCH" = "unknown"; then
1400 if test "$tcg_interpreter" = "yes" ; then
1401 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001402 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001403 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001404 fi
1405fi
1406
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001407# Consult white-list to determine whether to enable werror
1408# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001409if test -z "$werror" ; then
1410 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001411 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001412 werror="yes"
1413 else
1414 werror="no"
1415 fi
1416fi
1417
Paolo Bonzini8d050952010-12-23 11:43:52 +01001418# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001419write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001420if compile_object ; then
1421 : C compiler works ok
1422else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001423 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001424fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001425if ! compile_prog ; then
1426 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1427fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001428
Peter Maydell98b21dc2014-02-20 15:10:16 +00001429# Check that the C++ compiler exists and works with the C compiler
1430if has $cxx; then
1431 cat > $TMPC <<EOF
1432int c_function(void);
1433int main(void) { return c_function(); }
1434EOF
1435
1436 compile_object
1437
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001438 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001439extern "C" {
1440 int c_function(void);
1441}
1442int c_function(void) { return 42; }
1443EOF
1444
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001445 update_cxxflags
1446
1447 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001448 # C++ compiler $cxx works ok with C compiler $cc
1449 :
1450 else
1451 echo "C++ compiler $cxx does not work with C compiler $cc"
1452 echo "Disabling C++ specific optional code"
1453 cxx=
1454 fi
1455else
1456 echo "No C++ compiler available; disabling C++ specific optional code"
1457 cxx=
1458fi
1459
Paolo Bonzini8d050952010-12-23 11:43:52 +01001460gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1461gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1462gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Pranith Kumar435405a2016-08-09 15:02:26 -04001463gcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001464gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001465gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001466# Note that we do not add -Werror to gcc_flags here, because that would
1467# enable it for all configure tests. If a configure test failed due
1468# to -Werror this would just silently disable some features,
1469# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001470
1471cc_has_warning_flag() {
1472 write_c_skeleton;
1473
Peter Maydella1d29d62012-10-27 22:19:07 +01001474 # Use the positive sense of the flag when testing for -Wno-wombat
1475 # support (gcc will happily accept the -Wno- form of unknown
1476 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001477 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1478 compile_prog "-Werror $optflag" ""
1479}
1480
1481for flag in $gcc_flags; do
1482 if cc_has_warning_flag $flag ; then
1483 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001484 fi
1485done
1486
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001487if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001488 cat > $TMPC << EOF
1489int main(int argc, char *argv[])
1490{
1491 char arr[64], *p = arr, *c = argv[0];
1492 while (*c) {
1493 *p++ = *c++;
1494 }
1495 return 0;
1496}
1497EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001498 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001499 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001500 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001501 # We need to check both a compile and a link, since some compiler
1502 # setups fail only on a .c->.o compile and some only at link time
1503 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1504 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001505 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001506 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001507 break
1508 fi
1509 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001510 if test "$stack_protector" = yes; then
1511 if test $sp_on = 0; then
1512 error_exit "Stack protector not supported"
1513 fi
1514 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001515fi
1516
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001517# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1518# large functions that use global variables. The bug is in all releases of
1519# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1520# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1521cat > $TMPC << EOF
1522#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1523int main(void) { return 0; }
1524#else
1525#error No bug in this compiler.
1526#endif
1527EOF
1528if compile_prog "-Werror -fno-gcse" "" ; then
1529 TRANSLATE_OPT_CFLAGS=-fno-gcse
1530fi
1531
Avi Kivity40d64442011-11-15 20:12:17 +02001532if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001533 if test "$modules" = "yes" ; then
1534 error_exit "static and modules are mutually incompatible"
1535 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001536 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001537 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001538 else
1539 pie="no"
1540 fi
1541fi
1542
Emilio G. Cota768b7852015-04-29 13:09:02 +02001543# Unconditional check for compiler __thread support
1544 cat > $TMPC << EOF
1545static __thread int tls_var;
1546int main(void) { return tls_var; }
1547EOF
1548
1549if ! compile_prog "-Werror" "" ; then
1550 error_exit "Your compiler does not support the __thread specifier for " \
1551 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1552fi
1553
Avi Kivity40d64442011-11-15 20:12:17 +02001554if test "$pie" = ""; then
1555 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001556 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001557 ;;
1558 *)
1559 pie="no"
1560 ;;
1561 esac
1562fi
1563
1564if test "$pie" != "no" ; then
1565 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001566
1567#ifdef __linux__
1568# define THREAD __thread
1569#else
1570# define THREAD
1571#endif
1572
1573static THREAD int tls_var;
1574
1575int main(void) { return tls_var; }
1576
Avi Kivity40d64442011-11-15 20:12:17 +02001577EOF
1578 if compile_prog "-fPIE -DPIE" "-pie"; then
1579 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1580 LDFLAGS="-pie $LDFLAGS"
1581 pie="yes"
1582 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1583 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1584 fi
1585 else
1586 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001587 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001588 else
1589 echo "Disabling PIE due to missing toolchain support"
1590 pie="no"
1591 fi
1592 fi
Brad46eef332013-12-10 19:49:08 -05001593
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001594 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001595 CFLAGS_NOPIE="-fno-pie"
1596 LDFLAGS_NOPIE="-nopie"
1597 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001598fi
1599
Paolo Bonzini09dada42013-04-17 16:26:47 +02001600##########################################
1601# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1602# use i686 as default anyway, but for those that don't, an explicit
1603# specification is necessary
1604
1605if test "$cpu" = "i386"; then
1606 cat > $TMPC << EOF
1607static int sfaa(int *ptr)
1608{
1609 return __sync_fetch_and_and(ptr, 0);
1610}
1611
1612int main(void)
1613{
1614 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001615 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001616 sfaa(&val);
1617 return val;
1618}
1619EOF
1620 if ! compile_prog "" "" ; then
1621 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1622 fi
1623fi
1624
1625#########################################
bellardec530c82006-04-25 22:36:06 +00001626# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001627
bellardec530c82006-04-25 22:36:06 +00001628if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001629 if has $install; then
1630 :
1631 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001632 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1633 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1634 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001635 fi
Stefan Weil89138852016-05-16 15:10:20 +02001636 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001637 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1638 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1639 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001640 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001641 if has ar; then
1642 :
1643 else
bellardec530c82006-04-25 22:36:06 +00001644 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001645 error_exit "No path includes ar" \
1646 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001647 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001648 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001649 fi
ths5fafdf22007-09-16 21:08:06 +00001650fi
bellardec530c82006-04-25 22:36:06 +00001651
Stefan Weilafb63eb2012-09-26 22:04:38 +02001652if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001653 target_list="$default_target_list"
1654else
Stefan Weil89138852016-05-16 15:10:20 +02001655 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
bellard5327cf42005-01-10 23:18:50 +00001656fi
Peter Maydell25b48332013-05-20 16:16:16 +01001657
1658# Check that we recognised the target name; this allows a more
1659# friendly error message than if we let it fall through.
1660for target in $target_list; do
1661 case " $default_target_list " in
1662 *" $target "*)
1663 ;;
1664 *)
1665 error_exit "Unknown target name '$target'"
1666 ;;
1667 esac
1668done
1669
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001670# see if system emulation was really requested
1671case " $target_list " in
1672 *"-softmmu "*) softmmu=yes
1673 ;;
1674 *) softmmu=no
1675 ;;
1676esac
bellard5327cf42005-01-10 23:18:50 +00001677
Juan Quintela249247c2009-08-12 18:20:25 +02001678feature_not_found() {
1679 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001680 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001681
Peter Maydell76ad07a2013-04-08 12:11:26 +01001682 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001683 "configure was not able to find it." \
1684 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001685}
1686
bellard7d132992003-03-06 23:23:54 +00001687# ---
1688# big/little endian test
1689cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001690short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1691short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1692extern int foo(short *, short *);
1693int main(int argc, char *argv[]) {
1694 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001695}
1696EOF
1697
Mike Frysinger61cc9192013-06-30 23:30:18 -04001698if compile_object ; then
1699 if grep -q BiGeNdIaN $TMPO ; then
1700 bigendian="yes"
1701 elif grep -q LiTtLeEnDiAn $TMPO ; then
1702 bigendian="no"
1703 else
1704 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001705 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001706else
1707 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001708fi
1709
Juan Quintelab0a47e72009-08-12 18:29:49 +02001710##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001711# cocoa implies not SDL or GTK
1712# (the cocoa UI code currently assumes it is always the active UI
1713# and doesn't interact well with other UI frontend code)
1714if test "$cocoa" = "yes"; then
1715 if test "$sdl" = "yes"; then
1716 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1717 fi
1718 if test "$gtk" = "yes"; then
1719 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1720 fi
1721 gtk=no
1722 sdl=no
1723fi
1724
1725##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001726# L2TPV3 probe
1727
1728cat > $TMPC <<EOF
1729#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001730#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001731int main(void) { return sizeof(struct mmsghdr); }
1732EOF
1733if compile_prog "" "" ; then
1734 l2tpv3=yes
1735else
1736 l2tpv3=no
1737fi
1738
1739##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001740# MinGW / Mingw-w64 localtime_r/gmtime_r check
1741
1742if test "$mingw32" = "yes"; then
1743 # Some versions of MinGW / Mingw-w64 lack localtime_r
1744 # and gmtime_r entirely.
1745 #
1746 # Some versions of Mingw-w64 define a macro for
1747 # localtime_r/gmtime_r.
1748 #
1749 # Some versions of Mingw-w64 will define functions
1750 # for localtime_r/gmtime_r, but only if you have
1751 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1752 # though, unistd.h and pthread.h both define
1753 # that for you.
1754 #
1755 # So this #undef localtime_r and #include <unistd.h>
1756 # are not in fact redundant.
1757cat > $TMPC << EOF
1758#include <unistd.h>
1759#include <time.h>
1760#undef localtime_r
1761int main(void) { localtime_r(NULL, NULL); return 0; }
1762EOF
1763 if compile_prog "" "" ; then
1764 localtime_r="yes"
1765 else
1766 localtime_r="no"
1767 fi
1768fi
1769
1770##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001771# pkg-config probe
1772
1773if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001774 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001775fi
1776
1777##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001778# NPTL probe
1779
Peter Maydell24cb36a2013-07-16 18:45:00 +01001780if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001781 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001782#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001783#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001784int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001785#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1786#error bork
1787#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001788 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001789}
1790EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001791 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001792 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001793 fi
pbrookbd0c5662008-05-29 14:34:11 +00001794fi
1795
bellard11d9f692004-04-02 20:55:59 +00001796##########################################
Liang Li99f2dbd2016-03-08 13:53:16 +08001797# avx2 optimization requirement check
1798
Richard Henderson5e33a872016-08-29 11:46:15 -07001799cat > $TMPC << EOF
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001800#pragma GCC push_options
1801#pragma GCC target("avx2")
1802#include <cpuid.h>
1803#include <immintrin.h>
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001804static int bar(void *a) {
Richard Henderson5e33a872016-08-29 11:46:15 -07001805 __m256i x = *(__m256i *)a;
1806 return _mm256_testz_si256(x, x);
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001807}
Richard Henderson5e33a872016-08-29 11:46:15 -07001808int main(int argc, char *argv[]) { return bar(argv[0]); }
Liang Li99f2dbd2016-03-08 13:53:16 +08001809EOF
Richard Henderson5e33a872016-08-29 11:46:15 -07001810if compile_object "" ; then
1811 avx2_opt="yes"
Liang Li99f2dbd2016-03-08 13:53:16 +08001812fi
1813
1814#########################################
balrogac629222008-10-11 09:56:04 +00001815# zlib check
1816
Alon Levy1ece9902011-07-26 12:30:40 +03001817if test "$zlib" != "no" ; then
1818 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001819#include <zlib.h>
1820int main(void) { zlibVersion(); return 0; }
1821EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001822 if compile_prog "" "-lz" ; then
1823 :
1824 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001825 error_exit "zlib check failed" \
1826 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001827 fi
balrogac629222008-10-11 09:56:04 +00001828fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001829LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001830
1831##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001832# lzo check
1833
1834if test "$lzo" != "no" ; then
1835 cat > $TMPC << EOF
1836#include <lzo/lzo1x.h>
1837int main(void) { lzo_version(); return 0; }
1838EOF
1839 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001840 libs_softmmu="$libs_softmmu -llzo2"
1841 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001842 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001843 if test "$lzo" = "yes"; then
1844 feature_not_found "liblzo2" "Install liblzo2 devel"
1845 fi
1846 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001847 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001848fi
1849
1850##########################################
1851# snappy check
1852
1853if test "$snappy" != "no" ; then
1854 cat > $TMPC << EOF
1855#include <snappy-c.h>
1856int main(void) { snappy_max_compressed_length(4096); return 0; }
1857EOF
1858 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001859 libs_softmmu="$libs_softmmu -lsnappy"
1860 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001861 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001862 if test "$snappy" = "yes"; then
1863 feature_not_found "libsnappy" "Install libsnappy devel"
1864 fi
1865 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001866 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001867fi
1868
1869##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001870# bzip2 check
1871
1872if test "$bzip2" != "no" ; then
1873 cat > $TMPC << EOF
1874#include <bzlib.h>
1875int main(void) { BZ2_bzlibVersion(); return 0; }
1876EOF
1877 if compile_prog "" "-lbz2" ; then
1878 bzip2="yes"
1879 else
1880 if test "$bzip2" = "yes"; then
1881 feature_not_found "libbzip2" "Install libbzip2 devel"
1882 fi
1883 bzip2="no"
1884 fi
1885fi
1886
1887##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001888# libseccomp check
1889
1890if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04001891 case "$cpu" in
1892 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06001893 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04001894 ;;
James Hogan5ce43972016-04-08 14:16:34 +01001895 mips)
1896 libseccomp_minver="2.2.0"
1897 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001898 arm|aarch64)
1899 libseccomp_minver="2.2.3"
1900 ;;
Michael Strosaker3e684452016-06-01 18:30:18 -05001901 ppc|ppc64)
1902 libseccomp_minver="2.3.0"
1903 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001904 *)
1905 libseccomp_minver=""
1906 ;;
1907 esac
1908
1909 if test "$libseccomp_minver" != "" &&
1910 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Stefan Weil89138852016-05-16 15:10:20 +02001911 libs_softmmu="$libs_softmmu $($pkg_config --libs libseccomp)"
1912 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04001913 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03001914 else
Andrew Jones693e5912015-09-30 11:59:18 -04001915 if test "$seccomp" = "yes" ; then
1916 if test "$libseccomp_minver" != "" ; then
1917 feature_not_found "libseccomp" \
1918 "Install libseccomp devel >= $libseccomp_minver"
1919 else
1920 feature_not_found "libseccomp" \
1921 "libseccomp is not supported for host cpu $cpu"
1922 fi
1923 fi
1924 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001925 fi
1926fi
1927##########################################
aliguorie37630c2009-04-22 15:19:10 +00001928# xen probe
1929
Juan Quintelafc321b42009-08-12 18:29:55 +02001930if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001931 xen_libs="-lxenstore -lxenctrl -lxenguest"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001932 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001933
Stefan Weil50ced5b2011-12-17 09:27:39 +01001934 # First we test whether Xen headers and libraries are available.
1935 # If no, we are done and there is no Xen support.
1936 # If yes, more tests are run to detect the Xen version.
1937
1938 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001939 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001940#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001941int main(void) {
1942 return 0;
1943}
1944EOF
1945 if ! compile_prog "" "$xen_libs" ; then
1946 # Xen not found
1947 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001948 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001949 fi
1950 xen=no
1951
1952 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001953 elif
1954 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001955/*
1956 * If we have stable libs the we don't want the libxc compat
1957 * layers, regardless of what CFLAGS we may have been given.
Paulina Szubarczykb6eb9b42016-09-14 21:10:03 +02001958 *
1959 * Also, check if xengnttab_grant_copy_segment_t is defined and
1960 * grant copy operation is implemented.
1961 */
1962#undef XC_WANT_COMPAT_EVTCHN_API
1963#undef XC_WANT_COMPAT_GNTTAB_API
1964#undef XC_WANT_COMPAT_MAP_FOREIGN_API
1965#include <xenctrl.h>
1966#include <xenstore.h>
1967#include <xenevtchn.h>
1968#include <xengnttab.h>
1969#include <xenforeignmemory.h>
1970#include <stdint.h>
1971#include <xen/hvm/hvm_info_table.h>
1972#if !defined(HVM_MAX_VCPUS)
1973# error HVM_MAX_VCPUS not defined
1974#endif
1975int main(void) {
1976 xc_interface *xc = NULL;
1977 xenforeignmemory_handle *xfmem;
1978 xenevtchn_handle *xe;
1979 xengnttab_handle *xg;
1980 xen_domain_handle_t handle;
1981 xengnttab_grant_copy_segment_t* seg = NULL;
1982
1983 xs_daemon_open();
1984
1985 xc = xc_interface_open(0, 0, 0);
1986 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1987 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1988 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1989 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1990 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1991
1992 xfmem = xenforeignmemory_open(0, 0);
1993 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
1994
1995 xe = xenevtchn_open(0, 0);
1996 xenevtchn_fd(xe);
1997
1998 xg = xengnttab_open(0, 0);
1999 xengnttab_grant_copy(xg, 0, seg);
2000
2001 return 0;
2002}
2003EOF
2004 compile_prog "" "$xen_libs $xen_stable_libs"
2005 then
2006 xen_ctrl_version=480
2007 xen=yes
2008 elif
2009 cat > $TMPC <<EOF &&
2010/*
2011 * If we have stable libs the we don't want the libxc compat
2012 * layers, regardless of what CFLAGS we may have been given.
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002013 */
2014#undef XC_WANT_COMPAT_EVTCHN_API
2015#undef XC_WANT_COMPAT_GNTTAB_API
2016#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2017#include <xenctrl.h>
2018#include <xenstore.h>
2019#include <xenevtchn.h>
2020#include <xengnttab.h>
2021#include <xenforeignmemory.h>
2022#include <stdint.h>
2023#include <xen/hvm/hvm_info_table.h>
2024#if !defined(HVM_MAX_VCPUS)
2025# error HVM_MAX_VCPUS not defined
2026#endif
2027int main(void) {
2028 xc_interface *xc = NULL;
2029 xenforeignmemory_handle *xfmem;
2030 xenevtchn_handle *xe;
2031 xengnttab_handle *xg;
2032 xen_domain_handle_t handle;
2033
2034 xs_daemon_open();
2035
2036 xc = xc_interface_open(0, 0, 0);
2037 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2038 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2039 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2040 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2041 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2042
2043 xfmem = xenforeignmemory_open(0, 0);
2044 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2045
2046 xe = xenevtchn_open(0, 0);
2047 xenevtchn_fd(xe);
2048
2049 xg = xengnttab_open(0, 0);
2050 xengnttab_map_grant_ref(xg, 0, 0, 0);
2051
2052 return 0;
2053}
2054EOF
2055 compile_prog "" "$xen_libs $xen_stable_libs"
2056 then
2057 xen_ctrl_version=471
2058 xen=yes
2059 elif
2060 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01002061#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002062#include <stdint.h>
2063int main(void) {
2064 xc_interface *xc = NULL;
2065 xen_domain_handle_t handle;
2066 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2067 return 0;
2068}
2069EOF
2070 compile_prog "" "$xen_libs"
2071 then
2072 xen_ctrl_version=470
2073 xen=yes
2074
2075 # Xen 4.6
2076 elif
2077 cat > $TMPC <<EOF &&
2078#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002079#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002080#include <stdint.h>
2081#include <xen/hvm/hvm_info_table.h>
2082#if !defined(HVM_MAX_VCPUS)
2083# error HVM_MAX_VCPUS not defined
2084#endif
2085int main(void) {
2086 xc_interface *xc;
2087 xs_daemon_open();
2088 xc = xc_interface_open(0, 0, 0);
2089 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2090 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002091 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002092 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002093 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002094 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002095 return 0;
2096}
2097EOF
2098 compile_prog "" "$xen_libs"
2099 then
2100 xen_ctrl_version=460
2101 xen=yes
2102
2103 # Xen 4.5
2104 elif
2105 cat > $TMPC <<EOF &&
2106#include <xenctrl.h>
2107#include <xenstore.h>
2108#include <stdint.h>
2109#include <xen/hvm/hvm_info_table.h>
2110#if !defined(HVM_MAX_VCPUS)
2111# error HVM_MAX_VCPUS not defined
2112#endif
2113int main(void) {
2114 xc_interface *xc;
2115 xs_daemon_open();
2116 xc = xc_interface_open(0, 0, 0);
2117 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2118 xc_gnttab_open(NULL, 0);
2119 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2120 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002121 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2122 return 0;
2123}
2124EOF
2125 compile_prog "" "$xen_libs"
2126 then
2127 xen_ctrl_version=450
2128 xen=yes
2129
2130 elif
2131 cat > $TMPC <<EOF &&
2132#include <xenctrl.h>
2133#include <xenstore.h>
2134#include <stdint.h>
2135#include <xen/hvm/hvm_info_table.h>
2136#if !defined(HVM_MAX_VCPUS)
2137# error HVM_MAX_VCPUS not defined
2138#endif
2139int main(void) {
2140 xc_interface *xc;
2141 xs_daemon_open();
2142 xc = xc_interface_open(0, 0, 0);
2143 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2144 xc_gnttab_open(NULL, 0);
2145 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2146 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002147 return 0;
2148}
2149EOF
2150 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002151 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002152 xen_ctrl_version=420
2153 xen=yes
2154
Juan Quintelab2266be2009-07-27 16:13:16 +02002155 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002156 if test "$xen" = "yes" ; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002157 feature_not_found "xen (unsupported version)" \
2158 "Install a supported xen (xen 4.2 or newer)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002159 fi
2160 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002161 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002162
2163 if test "$xen" = yes; then
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002164 if test $xen_ctrl_version -ge 471 ; then
2165 libs_softmmu="$xen_stable_libs $libs_softmmu"
2166 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002167 libs_softmmu="$xen_libs $libs_softmmu"
2168 fi
aliguorie37630c2009-04-22 15:19:10 +00002169fi
2170
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002171if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002172 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002173 xen_pci_passthrough=yes
2174 else
2175 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002176 error_exit "User requested feature Xen PCI Passthrough" \
2177 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002178 fi
2179 xen_pci_passthrough=no
2180 fi
2181fi
2182
Ian Campbell64a7ad62016-01-15 13:23:44 +00002183if test "$xen_pv_domain_build" = "yes" &&
2184 test "$xen" != "yes"; then
2185 error_exit "User requested Xen PV domain builder support" \
2186 "which requires Xen support."
2187fi
2188
aliguorie37630c2009-04-22 15:19:10 +00002189##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002190# Sparse probe
2191if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002192 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002193 sparse=yes
2194 else
2195 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002196 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002197 fi
2198 sparse=no
2199 fi
2200fi
2201
2202##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002203# X11 probe
2204x11_cflags=
2205x11_libs=-lX11
2206if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002207 x11_cflags=$($pkg_config --cflags x11)
2208 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002209fi
2210
2211##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002212# GTK probe
2213
Stefan Weil9e04c682014-05-17 16:29:18 +02002214if test "$gtkabi" = ""; then
2215 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2216 # Use 3.0 as a fallback if that is available.
2217 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2218 gtkabi=2.0
2219 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2220 gtkabi=3.0
2221 else
2222 gtkabi=2.0
2223 fi
2224fi
2225
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002226if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002227 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002228 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002229 if test "$gtkabi" = "3.0" ; then
2230 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002231 else
2232 gtkversion="2.18.0"
2233 fi
2234 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002235 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2236 gtk_libs=$($pkg_config --libs $gtkpackage)
2237 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002238 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002239 gtk_cflags="$gtk_cflags $x11_cflags"
2240 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002241 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002242 libs_softmmu="$gtk_libs $libs_softmmu"
2243 gtk="yes"
2244 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002245 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002246 else
2247 gtk="no"
2248 fi
2249fi
2250
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002251
2252##########################################
2253# GNUTLS probe
2254
Peter Maydell37371292015-07-24 18:28:08 +01002255gnutls_works() {
2256 # Unfortunately some distros have bad pkg-config information for gnutls
2257 # such that it claims to exist but you get a compiler error if you try
2258 # to use the options returned by --libs. Specifically, Ubuntu for --static
2259 # builds doesn't work:
2260 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2261 #
2262 # So sanity check the cflags/libs before assuming gnutls can be used.
2263 if ! $pkg_config --exists "gnutls"; then
2264 return 1
2265 fi
2266
2267 write_c_skeleton
2268 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2269}
2270
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002271gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002272gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002273if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002274 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002275 gnutls_cflags=$($pkg_config --cflags gnutls)
2276 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002277 libs_softmmu="$gnutls_libs $libs_softmmu"
2278 libs_tools="$gnutls_libs $libs_tools"
2279 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2280 gnutls="yes"
2281
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002282 # gnutls_rnd requires >= 2.11.0
2283 if $pkg_config --exists "gnutls >= 2.11.0"; then
2284 gnutls_rnd="yes"
2285 else
2286 gnutls_rnd="no"
2287 fi
2288
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002289 if $pkg_config --exists 'gnutls >= 3.0'; then
2290 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002291 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002292 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002293 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002294 *gcrypt*)
2295 gnutls_gcrypt=yes
2296 gnutls_nettle=no
2297 ;;
2298 *nettle*)
2299 gnutls_gcrypt=no
2300 gnutls_nettle=yes
2301 ;;
2302 *)
2303 gnutls_gcrypt=yes
2304 gnutls_nettle=no
2305 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002306 esac
2307 else
2308 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002309 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002310 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002311 elif test "$gnutls" = "yes"; then
2312 feature_not_found "gnutls" "Install gnutls devel"
2313 else
2314 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002315 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002316 fi
2317else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002318 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002319fi
2320
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002321
2322# If user didn't give a --disable/enable-gcrypt flag,
2323# then mark as disabled if user requested nettle
2324# explicitly, or if gnutls links to nettle
2325if test -z "$gcrypt"
2326then
2327 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2328 then
2329 gcrypt="no"
2330 fi
2331fi
2332
2333# If user didn't give a --disable/enable-nettle flag,
2334# then mark as disabled if user requested gcrypt
2335# explicitly, or if gnutls links to gcrypt
2336if test -z "$nettle"
2337then
2338 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2339 then
2340 nettle="no"
2341 fi
2342fi
2343
2344has_libgcrypt_config() {
2345 if ! has "libgcrypt-config"
2346 then
2347 return 1
2348 fi
2349
2350 if test -n "$cross_prefix"
2351 then
Stefan Weil89138852016-05-16 15:10:20 +02002352 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002353 if test "$host-" != $cross_prefix
2354 then
2355 return 1
2356 fi
2357 fi
2358
2359 return 0
2360}
2361
2362if test "$gcrypt" != "no"; then
2363 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002364 gcrypt_cflags=$(libgcrypt-config --cflags)
2365 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002366 # Debian has remove -lgpg-error from libgcrypt-config
2367 # as it "spreads unnecessary dependencies" which in
2368 # turn breaks static builds...
2369 if test "$static" = "yes"
2370 then
2371 gcrypt_libs="$gcrypt_libs -lgpg-error"
2372 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002373 libs_softmmu="$gcrypt_libs $libs_softmmu"
2374 libs_tools="$gcrypt_libs $libs_tools"
2375 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002376 gcrypt="yes"
2377 if test -z "$nettle"; then
2378 nettle="no"
2379 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002380
2381 cat > $TMPC << EOF
2382#include <gcrypt.h>
2383int main(void) {
2384 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2385 GCRY_MD_SHA256,
2386 NULL, 0, 0, 0, NULL);
2387 return 0;
2388}
2389EOF
2390 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2391 gcrypt_kdf=yes
2392 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002393 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002394 if test "$gcrypt" = "yes"; then
2395 feature_not_found "gcrypt" "Install gcrypt devel"
2396 else
2397 gcrypt="no"
2398 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002399 fi
2400fi
2401
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002402
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002403if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002404 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002405 nettle_cflags=$($pkg_config --cflags nettle)
2406 nettle_libs=$($pkg_config --libs nettle)
2407 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002408 libs_softmmu="$nettle_libs $libs_softmmu"
2409 libs_tools="$nettle_libs $libs_tools"
2410 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002411 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002412
2413 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002414#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002415#include <nettle/pbkdf2.h>
2416int main(void) {
2417 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2418 return 0;
2419}
2420EOF
2421 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2422 nettle_kdf=yes
2423 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002424 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002425 if test "$nettle" = "yes"; then
2426 feature_not_found "nettle" "Install nettle devel"
2427 else
2428 nettle="no"
2429 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002430 fi
2431fi
2432
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002433if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2434then
2435 error_exit "Only one of gcrypt & nettle can be enabled"
2436fi
2437
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002438##########################################
2439# libtasn1 - only for the TLS creds/session test suite
2440
2441tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002442tasn1_cflags=""
2443tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002444if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002445 tasn1_cflags=$($pkg_config --cflags libtasn1)
2446 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002447else
2448 tasn1=no
2449fi
2450
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002451
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002452##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002453# getifaddrs (for tests/test-io-channel-socket )
2454
2455have_ifaddrs_h=yes
2456if ! check_include "ifaddrs.h" ; then
2457 have_ifaddrs_h=no
2458fi
2459
2460##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002461# VTE probe
2462
2463if test "$vte" != "no"; then
2464 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002465 vteminversion="0.32.0"
2466 if $pkg_config --exists "vte-2.91"; then
2467 vtepackage="vte-2.91"
2468 else
2469 vtepackage="vte-2.90"
2470 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002471 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002472 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002473 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002474 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002475 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002476 vte_cflags=$($pkg_config --cflags $vtepackage)
2477 vte_libs=$($pkg_config --libs $vtepackage)
2478 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002479 libs_softmmu="$vte_libs $libs_softmmu"
2480 vte="yes"
2481 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002482 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002483 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002484 else
2485 feature_not_found "vte" "Install libvte devel"
2486 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002487 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002488 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002489 fi
2490fi
2491
2492##########################################
bellard11d9f692004-04-02 20:55:59 +00002493# SDL probe
2494
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002495# Look for sdl configuration program (pkg-config or sdl-config). Try
2496# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002497
Cole Robinsonee8466d2016-05-06 14:03:07 -04002498if test "$sdlabi" = ""; then
2499 if $pkg_config --exists "sdl"; then
2500 sdlabi=1.2
2501 elif $pkg_config --exists "sdl2"; then
2502 sdlabi=2.0
2503 else
2504 sdlabi=1.2
2505 fi
2506fi
2507
Dave Airlie47c03742013-12-10 14:05:51 +10002508if test $sdlabi = "2.0"; then
2509 sdl_config=$sdl2_config
2510 sdlname=sdl2
2511 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002512elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002513 sdlname=sdl
2514 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002515else
2516 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002517fi
2518
Stefan Weil89138852016-05-16 15:10:20 +02002519if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002520 sdl_config=$sdlconfigname
2521fi
2522
2523if $pkg_config $sdlname --exists; then
2524 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002525 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002526elif has ${sdl_config}; then
2527 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002528 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002529else
2530 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002531 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002532 fi
2533 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002534fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002535if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002536 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2537fi
bellard11d9f692004-04-02 20:55:59 +00002538
Paolo Bonzini9316f802010-01-13 09:52:55 +01002539sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002540if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002541 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002542#include <SDL.h>
2543#undef main /* We don't want SDL to override our main() */
2544int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2545EOF
Stefan Weil89138852016-05-16 15:10:20 +02002546 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002547 if test "$static" = "yes" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002548 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002549 else
Stefan Weil89138852016-05-16 15:10:20 +02002550 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002551 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002552 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002553 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002554 sdl_too_old=yes
2555 else
Peter Maydella30878e2015-08-14 16:10:52 +01002556 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002557 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002558
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002559 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002560 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002561 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002562 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2563 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002564 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002565 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002566 :
2567 else
2568 sdl=no
2569 fi
2570 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002571 else # sdl not found
2572 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002573 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002574 fi
2575 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002576 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002577fi
bellard11d9f692004-04-02 20:55:59 +00002578
aliguori5368a422009-03-03 17:37:21 +00002579if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002580 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002581#include <SDL.h>
2582#if defined(SDL_VIDEO_DRIVER_X11)
2583#include <X11/XKBlib.h>
2584#else
2585#error No x11 support
2586#endif
2587int main(void) { return 0; }
2588EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002589 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2590 sdl_cflags="$sdl_cflags $x11_cflags"
2591 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002592 fi
Juan Quintela07056672009-08-03 14:46:27 +02002593 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002594fi
2595
ths8f28f3f2007-01-05 21:25:54 +00002596##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002597# RDMA needs OpenFabrics libraries
2598if test "$rdma" != "no" ; then
2599 cat > $TMPC <<EOF
2600#include <rdma/rdma_cma.h>
2601int main(void) { return 0; }
2602EOF
2603 rdma_libs="-lrdmacm -libverbs"
2604 if compile_prog "" "$rdma_libs" ; then
2605 rdma="yes"
2606 libs_softmmu="$libs_softmmu $rdma_libs"
2607 else
2608 if test "$rdma" = "yes" ; then
2609 error_exit \
2610 " OpenFabrics librdmacm/libibverbs not present." \
2611 " Your options:" \
2612 " (1) Fast: Install infiniband packages from your distro." \
2613 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2614 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2615 fi
2616 rdma="no"
2617 fi
2618fi
2619
ths8d5d2d42007-08-25 01:37:51 +00002620
2621##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002622# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002623if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002624 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002625#include <sasl/sasl.h>
2626#include <stdio.h>
2627int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2628EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002629 # Assuming Cyrus-SASL installed in /usr prefix
2630 vnc_sasl_cflags=""
2631 vnc_sasl_libs="-lsasl2"
2632 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2633 vnc_sasl=yes
2634 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002635 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002636 else
2637 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002638 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002639 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002640 vnc_sasl=no
2641 fi
aliguori2f9606b2009-03-06 20:27:28 +00002642fi
2643
2644##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002645# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002646if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002647cat > $TMPC <<EOF
2648#include <stdio.h>
2649#include <jpeglib.h>
2650int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2651EOF
2652 vnc_jpeg_cflags=""
2653 vnc_jpeg_libs="-ljpeg"
2654 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2655 vnc_jpeg=yes
2656 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002657 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002658 else
2659 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002660 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002661 fi
2662 vnc_jpeg=no
2663 fi
2664fi
2665
2666##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002667# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002668if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002669cat > $TMPC <<EOF
2670//#include <stdio.h>
2671#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002672#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002673int main(void) {
2674 png_structp png_ptr;
2675 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002676 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002677}
2678EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002679 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002680 vnc_png_cflags=$($pkg_config libpng --cflags)
2681 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002682 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002683 vnc_png_cflags=""
2684 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002685 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002686 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2687 vnc_png=yes
2688 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002689 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002690 else
2691 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002692 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002693 fi
2694 vnc_png=no
2695 fi
2696fi
2697
2698##########################################
aliguori76655d62009-03-06 20:27:37 +00002699# fnmatch() probe, used for ACL routines
2700fnmatch="no"
2701cat > $TMPC << EOF
2702#include <fnmatch.h>
2703int main(void)
2704{
2705 fnmatch("foo", "foo", 0);
2706 return 0;
2707}
2708EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002709if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002710 fnmatch="yes"
2711fi
2712
2713##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002714# xfsctl() probe, used for raw-posix
2715if test "$xfs" != "no" ; then
2716 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002717#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002718#include <xfs/xfs.h>
2719int main(void)
2720{
2721 xfsctl(NULL, 0, 0, NULL);
2722 return 0;
2723}
2724EOF
2725 if compile_prog "" "" ; then
2726 xfs="yes"
2727 else
2728 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002729 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002730 fi
2731 xfs=no
2732 fi
2733fi
2734
2735##########################################
ths8a16d272008-07-19 09:56:24 +00002736# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002737if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002738 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002739 cat > $TMPC << EOF
2740#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002741int main(void)
2742{
2743 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002744 char s[] = "";
2745 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002746 return 0;
2747}
ths8a16d272008-07-19 09:56:24 +00002748EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002749 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002750 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002751 libs_softmmu="$vde_libs $libs_softmmu"
2752 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002753 else
2754 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002755 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002756 fi
2757 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002758 fi
ths8a16d272008-07-19 09:56:24 +00002759fi
2760
2761##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002762# netmap support probe
2763# Apart from looking for netmap headers, we make sure that the host API version
2764# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2765# a minor/major version number. Minor new features will be marked with values up
2766# to 15, and if something happens that requires a change to the backend we will
2767# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002768if test "$netmap" != "no" ; then
2769 cat > $TMPC << EOF
2770#include <inttypes.h>
2771#include <net/if.h>
2772#include <net/netmap.h>
2773#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002774#if (NETMAP_API < 11) || (NETMAP_API > 15)
2775#error
2776#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002777int main(void) { return 0; }
2778EOF
2779 if compile_prog "" "" ; then
2780 netmap=yes
2781 else
2782 if test "$netmap" = "yes" ; then
2783 feature_not_found "netmap"
2784 fi
2785 netmap=no
2786 fi
2787fi
2788
2789##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002790# libcap-ng library probe
2791if test "$cap_ng" != "no" ; then
2792 cap_libs="-lcap-ng"
2793 cat > $TMPC << EOF
2794#include <cap-ng.h>
2795int main(void)
2796{
2797 capng_capability_to_name(CAPNG_EFFECTIVE);
2798 return 0;
2799}
2800EOF
2801 if compile_prog "" "$cap_libs" ; then
2802 cap_ng=yes
2803 libs_tools="$cap_libs $libs_tools"
2804 else
2805 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002806 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002807 fi
2808 cap_ng=no
2809 fi
2810fi
2811
2812##########################################
malcc2de5c92008-06-28 19:13:06 +00002813# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002814
malcc2de5c92008-06-28 19:13:06 +00002815audio_drv_probe()
2816{
2817 drv=$1
2818 hdr=$2
2819 lib=$3
2820 exp=$4
2821 cfl=$5
2822 cat > $TMPC << EOF
2823#include <$hdr>
2824int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002825EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002826 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002827 :
2828 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002829 error_exit "$drv check failed" \
2830 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002831 fi
2832}
2833
Stefan Weil89138852016-05-16 15:10:20 +02002834audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00002835for drv in $audio_drv_list; do
2836 case $drv in
2837 alsa)
2838 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002839 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002840 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002841 ;;
2842
malcb8e59f12008-07-02 21:03:08 +00002843 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02002844 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
2845 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002846 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002847 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002848 ;;
2849
Juan Quintela997e6902009-08-03 14:46:29 +02002850 coreaudio)
2851 libs_softmmu="-framework CoreAudio $libs_softmmu"
2852 ;;
2853
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002854 dsound)
2855 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002856 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002857 ;;
2858
2859 oss)
2860 libs_softmmu="$oss_lib $libs_softmmu"
2861 ;;
2862
2863 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002864 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2865 ;;
2866
malce4c63a62008-07-19 16:15:16 +00002867 *)
malc1c9b2a52008-07-19 16:57:30 +00002868 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002869 error_exit "Unknown driver '$drv' selected" \
2870 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002871 }
2872 ;;
malcc2de5c92008-06-28 19:13:06 +00002873 esac
2874done
ths8f28f3f2007-01-05 21:25:54 +00002875
balrog4d3b6f62008-02-10 16:33:14 +00002876##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002877# BrlAPI probe
2878
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002879if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002880 brlapi_libs="-lbrlapi"
2881 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002882#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002883#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002884int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2885EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002886 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002887 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002888 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002889 else
2890 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002891 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002892 fi
2893 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002894 fi
2895fi
aurel322e4d9fb2008-04-08 06:01:02 +00002896
2897##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002898# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002899if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002900 if test "$mingw32" = "yes" ; then
Stefan Weilae629632016-03-16 21:27:25 +01002901 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002902 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002903 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002904 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002905 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002906 cat > $TMPC << EOF
2907#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002908int main(void) {
2909 const char *s = curses_version();
2910 resize_term(0, 0);
2911 return s != 0;
2912}
balrog4d3b6f62008-02-10 16:33:14 +00002913EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002914 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002915 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002916 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002917 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002918 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002919 libs_softmmu="$curses_lib $libs_softmmu"
2920 break
2921 fi
2922 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002923 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002924 if test "$curses_found" = "yes" ; then
2925 curses=yes
2926 else
2927 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002928 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002929 fi
2930 curses=no
2931 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002932fi
balrog4d3b6f62008-02-10 16:33:14 +00002933
blueswir1414f0da2008-08-15 18:20:52 +00002934##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002935# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002936if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002937 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002938 curlconfig="$pkg_config libcurl"
2939 else
2940 curlconfig=curl-config
2941 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002942 cat > $TMPC << EOF
2943#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002944int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002945EOF
Stefan Weil89138852016-05-16 15:10:20 +02002946 curl_cflags=$($curlconfig --cflags 2>/dev/null)
2947 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02002948 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002949 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002950 else
2951 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002952 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002953 fi
2954 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002955 fi
2956fi # test "$curl"
2957
2958##########################################
balrogfb599c92008-09-28 23:49:55 +00002959# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002960if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002961 cat > $TMPC << EOF
2962#include <bluetooth/bluetooth.h>
2963int main(void) { return bt_error(0); }
2964EOF
Stefan Weil89138852016-05-16 15:10:20 +02002965 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
2966 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02002967 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002968 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002969 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002970 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002971 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002972 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002973 fi
balroge820e3f2008-09-30 02:27:44 +00002974 bluez="no"
2975 fi
balrogfb599c92008-09-28 23:49:55 +00002976fi
2977
2978##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002979# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002980
John Snowf40685c2015-05-22 14:13:42 -04002981glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002982glib_modules=gthread-2.0
2983if test "$modules" = yes; then
2984 glib_modules="$glib_modules gmodule-2.0"
2985fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002986
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002987for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002988 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02002989 glib_cflags=$($pkg_config --cflags $i)
2990 glib_libs=$($pkg_config --libs $i)
Marc-André Lureau4a058892016-09-26 00:57:48 +04002991 QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
Fam Zhenge26110c2014-02-10 14:48:57 +08002992 LIBS="$glib_libs $LIBS"
2993 libs_qga="$glib_libs $libs_qga"
2994 else
2995 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2996 fi
2997done
2998
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00002999# Sanity check that the current size_t matches the
3000# size that glib thinks it should be. This catches
3001# problems on multi-arch where people try to build
3002# 32-bit QEMU while pointing at 64-bit glib headers
3003cat > $TMPC <<EOF
3004#include <glib.h>
3005#include <unistd.h>
3006
3007#define QEMU_BUILD_BUG_ON(x) \
3008 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3009
3010int main(void) {
3011 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3012 return 0;
3013}
3014EOF
3015
Stefan Weil5919e032016-04-28 23:33:41 +02003016if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00003017 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3018 "You probably need to set PKG_CONFIG_LIBDIR"\
3019 "to point to the right pkg-config files for your"\
3020 "build target"
3021fi
3022
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003023# g_test_trap_subprocess added in 2.38. Used by some tests.
3024glib_subprocess=yes
Eduardo Habkost7ad93392016-06-14 13:00:23 -03003025if test "$mingw32" = "yes" || ! $pkg_config --atleast-version=2.38 glib-2.0; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003026 glib_subprocess=no
3027fi
3028
John Snowbbbf2e02015-03-25 18:57:38 -04003029# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3030cat > $TMPC << EOF
3031#include <glib.h>
3032int main(void) { return 0; }
3033EOF
3034if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3035 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3036 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3037 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3038 fi
3039fi
3040
Fam Zhenge26110c2014-02-10 14:48:57 +08003041##########################################
3042# SHA command probe for modules
3043if test "$modules" = yes; then
3044 shacmd_probe="sha1sum sha1 shasum"
3045 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003046 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003047 shacmd="$c"
3048 break
3049 fi
3050 done
3051 if test "$shacmd" = ""; then
3052 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3053 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003054fi
3055
3056##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003057# pixman support probe
3058
3059if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003060 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3061 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08003062 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003063 pixman="system"
3064 else
3065 pixman="internal"
3066 fi
3067fi
Robert Schiele74880fe2012-12-04 16:58:08 +01003068if test "$pixman" = "none"; then
3069 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003070 error_exit "pixman disabled but system emulation or tools build" \
3071 "enabled. You can turn off pixman only if you also" \
3072 "disable all system emulation targets and the tools" \
3073 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01003074 fi
3075 pixman_cflags=
3076 pixman_libs=
3077elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08003078 # pixman version has been checked above
Stefan Weil89138852016-05-16 15:10:20 +02003079 pixman_cflags=$($pkg_config --cflags pixman-1)
3080 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003081else
3082 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003083 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003084 " (1) Preferred: Install the pixman devel package (any recent" \
3085 " distro should have packages as Xorg needs pixman too)." \
3086 " (2) Fetch the pixman submodule, using:" \
3087 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003088 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003089 mkdir -p pixman/pixman
3090 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3091 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003092fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003093
3094##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303095# libcap probe
3096
3097if test "$cap" != "no" ; then
3098 cat > $TMPC <<EOF
3099#include <stdio.h>
3100#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003101int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303102EOF
3103 if compile_prog "" "-lcap" ; then
3104 cap=yes
3105 else
3106 cap=no
3107 fi
3108fi
3109
3110##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003111# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003112PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003113
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003114pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003115cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003116#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003117static void *f(void *p) { return NULL; }
3118int main(void) {
3119 pthread_t thread;
3120 pthread_create(&thread, 0, f, 0);
3121 return 0;
3122}
blueswir1414f0da2008-08-15 18:20:52 +00003123EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003124if compile_prog "" "" ; then
3125 pthread=yes
3126else
3127 for pthread_lib in $PTHREADLIBS_LIST; do
3128 if compile_prog "" "$pthread_lib" ; then
3129 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003130 found=no
3131 for lib_entry in $LIBS; do
3132 if test "$lib_entry" = "$pthread_lib"; then
3133 found=yes
3134 break
3135 fi
3136 done
3137 if test "$found" = "no"; then
3138 LIBS="$pthread_lib $LIBS"
3139 fi
Daniel P. Berrange409437e2016-07-20 14:23:13 +01003140 PTHREAD_LIB="$pthread_lib"
Andreas Färberbd00d532010-09-20 00:50:44 +02003141 break
3142 fi
3143 done
3144fi
blueswir1414f0da2008-08-15 18:20:52 +00003145
Anthony Liguori4617e592009-08-25 17:21:56 -05003146if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003147 error_exit "pthread check failed" \
3148 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003149fi
3150
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003151# check for pthread_setname_np
3152pthread_setname_np=no
3153cat > $TMPC << EOF
3154#include <pthread.h>
3155
3156static void *f(void *p) { return NULL; }
3157int main(void)
3158{
3159 pthread_t thread;
3160 pthread_create(&thread, 0, f, 0);
3161 pthread_setname_np(thread, "QEMU");
3162 return 0;
3163}
3164EOF
3165if compile_prog "" "$pthread_lib" ; then
3166 pthread_setname_np=yes
3167fi
3168
aliguoribf9298b2008-12-05 20:05:26 +00003169##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003170# rbd probe
3171if test "$rbd" != "no" ; then
3172 cat > $TMPC <<EOF
3173#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003174#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003175int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003176 rados_t cluster;
3177 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003178 return 0;
3179}
3180EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003181 rbd_libs="-lrbd -lrados"
3182 if compile_prog "" "$rbd_libs" ; then
3183 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003184 else
3185 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003186 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003187 fi
3188 rbd=no
3189 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003190fi
3191
3192##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003193# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003194min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003195if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003196 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003197 libssh2_cflags=$($pkg_config libssh2 --cflags)
3198 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003199 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003200 else
3201 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003202 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003203 fi
3204 libssh2=no
3205 fi
3206fi
3207
3208##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003209# libssh2_sftp_fsync probe
3210
3211if test "$libssh2" = "yes"; then
3212 cat > $TMPC <<EOF
3213#include <stdio.h>
3214#include <libssh2.h>
3215#include <libssh2_sftp.h>
3216int main(void) {
3217 LIBSSH2_SESSION *session;
3218 LIBSSH2_SFTP *sftp;
3219 LIBSSH2_SFTP_HANDLE *sftp_handle;
3220 session = libssh2_session_init ();
3221 sftp = libssh2_sftp_init (session);
3222 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3223 libssh2_sftp_fsync (sftp_handle);
3224 return 0;
3225}
3226EOF
3227 # libssh2_cflags/libssh2_libs defined in previous test.
3228 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3229 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3230 fi
3231fi
3232
3233##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003234# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003235
3236if test "$linux_aio" != "no" ; then
3237 cat > $TMPC <<EOF
3238#include <libaio.h>
3239#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003240#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003241int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3242EOF
3243 if compile_prog "" "-laio" ; then
3244 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003245 else
3246 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003247 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003248 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003249 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003250 fi
3251fi
3252
3253##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003254# TPM passthrough is only on x86 Linux
3255
3256if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3257 tpm_passthrough=$tpm
3258else
3259 tpm_passthrough=no
3260fi
3261
3262##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003263# attr probe
3264
3265if test "$attr" != "no" ; then
3266 cat > $TMPC <<EOF
3267#include <stdio.h>
3268#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003269#ifdef CONFIG_LIBATTR
3270#include <attr/xattr.h>
3271#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003272#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003273#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003274int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3275EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003276 if compile_prog "" "" ; then
3277 attr=yes
3278 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003279 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003280 attr=yes
3281 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003282 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003283 else
3284 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003285 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003286 fi
3287 attr=no
3288 fi
3289fi
3290
3291##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003292# iovec probe
3293cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003294#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003295#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003296#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003297int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003298EOF
3299iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003300if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003301 iovec=yes
3302fi
3303
aurel32f652e6a2008-12-16 10:43:48 +00003304##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003305# preadv probe
3306cat > $TMPC <<EOF
3307#include <sys/types.h>
3308#include <sys/uio.h>
3309#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003310int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003311EOF
3312preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003313if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003314 preadv=yes
3315fi
3316
3317##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003318# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003319# fdt support is mandatory for at least some target architectures,
3320# so insist on it if we're building those system emulators.
3321fdt_required=no
3322for target in $target_list; do
3323 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003324 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003325 fdt_required=yes
3326 ;;
3327 esac
3328done
3329
3330if test "$fdt_required" = "yes"; then
3331 if test "$fdt" = "no"; then
3332 error_exit "fdt disabled but some requested targets require it." \
3333 "You can turn off fdt only if you also disable all the system emulation" \
3334 "targets which need it (by specifying a cut down --target-list)."
3335 fi
3336 fdt=yes
3337fi
3338
Juan Quintela2df87df2009-08-12 18:29:54 +02003339if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003340 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003341 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003342 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003343 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003344#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003345#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003346int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003347EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003348 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003349 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003350 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003351 elif test -d ${source_path}/dtc/libfdt ; then
3352 # have submodule DTC - use it
3353 fdt=yes
3354 dtc_internal="yes"
3355 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003356 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003357 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3358 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003359 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003360 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3361 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3362 elif test "$fdt" = "yes" ; then
3363 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003364 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003365 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003366 " (2) Fetch the DTC submodule, using:" \
3367 " git submodule update --init dtc"
3368 else
3369 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003370 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003371 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003372 fi
3373fi
3374
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003375libs_softmmu="$libs_softmmu $fdt_libs"
3376
Michael Walle20ff0752011-03-07 23:32:39 +01003377##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003378# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003379
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003380if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003381 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003382 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003383 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3384 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003385 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003386 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3387 gtk_gl="yes"
3388 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003389 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003390 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003391 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003392 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003393 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003394 opengl_libs=""
3395 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003396 fi
3397fi
3398
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003399if test "$opengl" = "yes"; then
3400 cat > $TMPC << EOF
3401#include <epoxy/egl.h>
3402#ifndef EGL_MESA_image_dma_buf_export
3403# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3404#endif
3405int main(void) { return 0; }
3406EOF
3407 if compile_prog "" "" ; then
3408 opengl_dmabuf=yes
3409 fi
3410fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003411
3412##########################################
3413# archipelago probe
3414if test "$archipelago" != "no" ; then
3415 cat > $TMPC <<EOF
3416#include <stdio.h>
3417#include <xseg/xseg.h>
3418#include <xseg/protocol.h>
3419int main(void) {
3420 xseg_initialize();
3421 return 0;
3422}
3423EOF
3424 archipelago_libs=-lxseg
3425 if compile_prog "" "$archipelago_libs"; then
3426 archipelago="yes"
3427 libs_tools="$archipelago_libs $libs_tools"
3428 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003429
3430 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3431 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3432 echo "license and therefore prevent redistribution."
3433 echo
3434 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003435 else
3436 if test "$archipelago" = "yes" ; then
3437 feature_not_found "Archipelago backend support" "Install libxseg devel"
3438 fi
3439 archipelago="no"
3440 fi
3441fi
3442
3443
Bharata B Raoeb100392012-09-24 14:42:45 +05303444##########################################
3445# glusterfs probe
3446if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003447 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303448 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003449 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3450 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003451 if $pkg_config --atleast-version=4 glusterfs-api; then
3452 glusterfs_xlator_opt="yes"
3453 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003454 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303455 glusterfs_discard="yes"
3456 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303457 if $pkg_config --atleast-version=6 glusterfs-api; then
3458 glusterfs_zerofill="yes"
3459 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303460 else
3461 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003462 feature_not_found "GlusterFS backend support" \
3463 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303464 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303465 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303466 fi
3467fi
3468
aurel3239386ac2009-04-15 19:48:17 +00003469# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003470# emulator. This is done because older glibc versions don't
3471# have syscall stubs for these implemented. In that case we
3472# don't provide them even if kernel supports them.
3473#
3474inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003475cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003476#include <sys/inotify.h>
3477
3478int
3479main(void)
3480{
3481 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003482 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003483}
3484EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003485if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003486 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003487fi
3488
Riku Voipioc05c7a72010-03-26 15:25:11 +00003489inotify1=no
3490cat > $TMPC << EOF
3491#include <sys/inotify.h>
3492
3493int
3494main(void)
3495{
3496 /* try to start inotify */
3497 return inotify_init1(0);
3498}
3499EOF
3500if compile_prog "" "" ; then
3501 inotify1=yes
3502fi
3503
Riku Voipioebc996f2009-04-21 15:01:51 +03003504# check if utimensat and futimens are supported
3505utimens=no
3506cat > $TMPC << EOF
3507#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003508#include <stddef.h>
3509#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003510#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003511
3512int main(void)
3513{
3514 utimensat(AT_FDCWD, "foo", NULL, 0);
3515 futimens(0, NULL);
3516 return 0;
3517}
3518EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003519if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003520 utimens=yes
3521fi
3522
Riku Voipio099d6b02009-05-05 12:10:04 +03003523# check if pipe2 is there
3524pipe2=no
3525cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003526#include <unistd.h>
3527#include <fcntl.h>
3528
3529int main(void)
3530{
3531 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003532 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003533}
3534EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003535if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003536 pipe2=yes
3537fi
3538
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003539# check if accept4 is there
3540accept4=no
3541cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003542#include <sys/socket.h>
3543#include <stddef.h>
3544
3545int main(void)
3546{
3547 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3548 return 0;
3549}
3550EOF
3551if compile_prog "" "" ; then
3552 accept4=yes
3553fi
3554
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303555# check if tee/splice is there. vmsplice was added same time.
3556splice=no
3557cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303558#include <unistd.h>
3559#include <fcntl.h>
3560#include <limits.h>
3561
3562int main(void)
3563{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003564 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303565 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3566 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3567 return 0;
3568}
3569EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003570if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303571 splice=yes
3572fi
3573
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003574##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003575# libnuma probe
3576
3577if test "$numa" != "no" ; then
3578 cat > $TMPC << EOF
3579#include <numa.h>
3580int main(void) { return numa_available(); }
3581EOF
3582
3583 if compile_prog "" "-lnuma" ; then
3584 numa=yes
3585 libs_softmmu="-lnuma $libs_softmmu"
3586 else
3587 if test "$numa" = "yes" ; then
3588 feature_not_found "numa" "install numactl devel"
3589 fi
3590 numa=no
3591 fi
3592fi
3593
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003594if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3595 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3596 exit 1
3597fi
3598
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003599##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003600# tcmalloc probe
3601
3602if test "$tcmalloc" = "yes" ; then
3603 cat > $TMPC << EOF
3604#include <stdlib.h>
3605int main(void) { malloc(1); return 0; }
3606EOF
3607
3608 if compile_prog "" "-ltcmalloc" ; then
3609 LIBS="-ltcmalloc $LIBS"
3610 else
3611 feature_not_found "tcmalloc" "install gperftools devel"
3612 fi
3613fi
3614
3615##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003616# jemalloc probe
3617
3618if test "$jemalloc" = "yes" ; then
3619 cat > $TMPC << EOF
3620#include <stdlib.h>
3621int main(void) { malloc(1); return 0; }
3622EOF
3623
3624 if compile_prog "" "-ljemalloc" ; then
3625 LIBS="-ljemalloc $LIBS"
3626 else
3627 feature_not_found "jemalloc" "install jemalloc devel"
3628 fi
3629fi
3630
3631##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003632# signalfd probe
3633signalfd="no"
3634cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003635#include <unistd.h>
3636#include <sys/syscall.h>
3637#include <signal.h>
3638int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3639EOF
3640
3641if compile_prog "" "" ; then
3642 signalfd=yes
3643fi
3644
Riku Voipioc2882b92009-08-12 15:08:24 +03003645# check if eventfd is supported
3646eventfd=no
3647cat > $TMPC << EOF
3648#include <sys/eventfd.h>
3649
3650int main(void)
3651{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003652 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003653}
3654EOF
3655if compile_prog "" "" ; then
3656 eventfd=yes
3657fi
3658
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003659# check if memfd is supported
3660memfd=no
3661cat > $TMPC << EOF
3662#include <sys/memfd.h>
3663
3664int main(void)
3665{
3666 return memfd_create("foo", MFD_ALLOW_SEALING);
3667}
3668EOF
3669if compile_prog "" "" ; then
3670 memfd=yes
3671fi
3672
3673
3674
Ulrich Hechtd0927932009-09-17 20:22:14 +03003675# check for fallocate
3676fallocate=no
3677cat > $TMPC << EOF
3678#include <fcntl.h>
3679
3680int main(void)
3681{
3682 fallocate(0, 0, 0, 0);
3683 return 0;
3684}
3685EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003686if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003687 fallocate=yes
3688fi
3689
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003690# check for fallocate hole punching
3691fallocate_punch_hole=no
3692cat > $TMPC << EOF
3693#include <fcntl.h>
3694#include <linux/falloc.h>
3695
3696int main(void)
3697{
3698 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3699 return 0;
3700}
3701EOF
3702if compile_prog "" "" ; then
3703 fallocate_punch_hole=yes
3704fi
3705
Denis V. Lunevb953f072015-01-30 11:42:14 +03003706# check that fallocate supports range zeroing inside the file
3707fallocate_zero_range=no
3708cat > $TMPC << EOF
3709#include <fcntl.h>
3710#include <linux/falloc.h>
3711
3712int main(void)
3713{
3714 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3715 return 0;
3716}
3717EOF
3718if compile_prog "" "" ; then
3719 fallocate_zero_range=yes
3720fi
3721
Kevin Wolfed911432014-09-29 17:12:59 +02003722# check for posix_fallocate
3723posix_fallocate=no
3724cat > $TMPC << EOF
3725#include <fcntl.h>
3726
3727int main(void)
3728{
3729 posix_fallocate(0, 0, 0);
3730 return 0;
3731}
3732EOF
3733if compile_prog "" "" ; then
3734 posix_fallocate=yes
3735fi
3736
Peter Maydellc727f472011-01-06 11:05:10 +00003737# check for sync_file_range
3738sync_file_range=no
3739cat > $TMPC << EOF
3740#include <fcntl.h>
3741
3742int main(void)
3743{
3744 sync_file_range(0, 0, 0, 0);
3745 return 0;
3746}
3747EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003748if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003749 sync_file_range=yes
3750fi
3751
Peter Maydelldace20d2011-01-10 13:11:24 +00003752# check for linux/fiemap.h and FS_IOC_FIEMAP
3753fiemap=no
3754cat > $TMPC << EOF
3755#include <sys/ioctl.h>
3756#include <linux/fs.h>
3757#include <linux/fiemap.h>
3758
3759int main(void)
3760{
3761 ioctl(0, FS_IOC_FIEMAP, 0);
3762 return 0;
3763}
3764EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003765if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003766 fiemap=yes
3767fi
3768
Ulrich Hechtd0927932009-09-17 20:22:14 +03003769# check for dup3
3770dup3=no
3771cat > $TMPC << EOF
3772#include <unistd.h>
3773
3774int main(void)
3775{
3776 dup3(0, 0, 0);
3777 return 0;
3778}
3779EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003780if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003781 dup3=yes
3782fi
3783
Alex Bligh4e0c6522013-08-21 16:02:43 +01003784# check for ppoll support
3785ppoll=no
3786cat > $TMPC << EOF
3787#include <poll.h>
3788
3789int main(void)
3790{
3791 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3792 ppoll(&pfd, 1, 0, 0);
3793 return 0;
3794}
3795EOF
3796if compile_prog "" "" ; then
3797 ppoll=yes
3798fi
3799
Alex Blighcd758dd2013-08-21 16:02:44 +01003800# check for prctl(PR_SET_TIMERSLACK , ... ) support
3801prctl_pr_set_timerslack=no
3802cat > $TMPC << EOF
3803#include <sys/prctl.h>
3804
3805int main(void)
3806{
3807 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3808 return 0;
3809}
3810EOF
3811if compile_prog "" "" ; then
3812 prctl_pr_set_timerslack=yes
3813fi
3814
Peter Maydell3b6edd12011-02-15 18:35:05 +00003815# check for epoll support
3816epoll=no
3817cat > $TMPC << EOF
3818#include <sys/epoll.h>
3819
3820int main(void)
3821{
3822 epoll_create(0);
3823 return 0;
3824}
3825EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003826if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003827 epoll=yes
3828fi
3829
Peter Maydell227f0212016-06-06 19:58:11 +01003830# epoll_create1 is a later addition
3831# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00003832epoll_create1=no
3833cat > $TMPC << EOF
3834#include <sys/epoll.h>
3835
3836int main(void)
3837{
Peter Maydell19e83f62011-04-26 16:56:40 +01003838 /* Note that we use epoll_create1 as a value, not as
3839 * a function being called. This is necessary so that on
3840 * old SPARC glibc versions where the function was present in
3841 * the library but not declared in the header file we will
3842 * fail the configure check. (Otherwise we will get a compiler
3843 * warning but not an error, and will proceed to fail the
3844 * qemu compile where we compile with -Werror.)
3845 */
Blue Swirlc075a722012-08-09 20:21:25 +00003846 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003847}
3848EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003849if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003850 epoll_create1=yes
3851fi
3852
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003853# check for sendfile support
3854sendfile=no
3855cat > $TMPC << EOF
3856#include <sys/sendfile.h>
3857
3858int main(void)
3859{
3860 return sendfile(0, 0, 0, 0);
3861}
3862EOF
3863if compile_prog "" "" ; then
3864 sendfile=yes
3865fi
3866
Riku Voipio51834342014-06-22 11:25:42 +01003867# check for timerfd support (glibc 2.8 and newer)
3868timerfd=no
3869cat > $TMPC << EOF
3870#include <sys/timerfd.h>
3871
3872int main(void)
3873{
3874 return(timerfd_create(CLOCK_REALTIME, 0));
3875}
3876EOF
3877if compile_prog "" "" ; then
3878 timerfd=yes
3879fi
3880
Riku Voipio9af5c902014-08-12 15:58:57 +03003881# check for setns and unshare support
3882setns=no
3883cat > $TMPC << EOF
3884#include <sched.h>
3885
3886int main(void)
3887{
3888 int ret;
3889 ret = setns(0, 0);
3890 ret = unshare(0);
3891 return ret;
3892}
3893EOF
3894if compile_prog "" "" ; then
3895 setns=yes
3896fi
3897
pbrookcc8ae6d2006-04-23 17:57:59 +00003898# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003899if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003900 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003901 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003902 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003903 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003904 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003905 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003906 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003907 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003908fi
3909
Stefan Weilf514f412009-10-11 12:44:07 +02003910# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003911byteswap_h=no
3912cat > $TMPC << EOF
3913#include <byteswap.h>
3914int main(void) { return bswap_32(0); }
3915EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003916if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003917 byteswap_h=yes
3918fi
3919
Stefan Weil75f13592013-01-05 12:17:38 +01003920# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003921bswap_h=no
3922cat > $TMPC << EOF
3923#include <sys/endian.h>
3924#include <sys/types.h>
3925#include <machine/bswap.h>
3926int main(void) { return bswap32(0); }
3927EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003928if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003929 bswap_h=yes
3930fi
3931
aliguorida93a1f2008-12-12 20:02:52 +00003932##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003933# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003934if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003935 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003936 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003937 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3938 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003939 else
3940 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003941 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003942 fi
3943 libiscsi="no"
3944 fi
3945fi
3946
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003947##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003948# Do we need libm
3949cat > $TMPC << EOF
3950#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003951int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003952EOF
3953if compile_prog "" "" ; then
3954 :
3955elif compile_prog "" "-lm" ; then
3956 LIBS="-lm $LIBS"
3957 libs_qga="-lm $libs_qga"
3958else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003959 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003960fi
3961
3962##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003963# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003964# uClibc provides 2 versions of clock_gettime(), one with realtime
3965# support and one without. This means that the clock_gettime() don't
3966# need -lrt. We still need it for timer_create() so we check for this
3967# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003968cat > $TMPC <<EOF
3969#include <signal.h>
3970#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003971int main(void) {
3972 timer_create(CLOCK_REALTIME, NULL, NULL);
3973 return clock_gettime(CLOCK_REALTIME, NULL);
3974}
aliguorida93a1f2008-12-12 20:02:52 +00003975EOF
3976
Juan Quintela52166aa2009-08-03 14:46:03 +02003977if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003978 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003979# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003980elif compile_prog "" "$pthread_lib -lrt" ; then
3981 LIBS="$LIBS -lrt"
3982 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003983fi
3984
Blue Swirl31ff5042009-09-12 12:33:07 +00003985if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003986 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003987 libs_softmmu="-lutil $libs_softmmu"
3988fi
3989
Blue Swirlde5071c2009-09-12 09:58:46 +00003990##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003991# spice probe
3992if test "$spice" != "no" ; then
3993 cat > $TMPC << EOF
3994#include <spice.h>
3995int main(void) { spice_server_new(); return 0; }
3996EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003997 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3998 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003999 if $pkg_config --atleast-version=0.12.0 spice-server && \
4000 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004001 compile_prog "$spice_cflags" "$spice_libs" ; then
4002 spice="yes"
4003 libs_softmmu="$libs_softmmu $spice_libs"
4004 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03004005 spice_protocol_version=$($pkg_config --modversion spice-protocol)
4006 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004007 else
4008 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004009 feature_not_found "spice" \
4010 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004011 fi
4012 spice="no"
4013 fi
4014fi
4015
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004016# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004017smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004018if test "$smartcard" != "no"; then
4019 if $pkg_config libcacard; then
4020 libcacard_cflags=$($pkg_config --cflags libcacard)
4021 libcacard_libs=$($pkg_config --libs libcacard)
4022 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4023 libs_softmmu="$libs_softmmu $libcacard_libs"
4024 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004025 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004026 if test "$smartcard" = "yes"; then
4027 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004028 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004029 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004030 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004031fi
4032
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004033# check for libusb
4034if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004035 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004036 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004037 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4038 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004039 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4040 libs_softmmu="$libs_softmmu $libusb_libs"
4041 else
4042 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004043 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004044 fi
4045 libusb="no"
4046 fi
4047fi
4048
Hans de Goede69354a82011-07-19 11:04:10 +02004049# check for usbredirparser for usb network redirection support
4050if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004051 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004052 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004053 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4054 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004055 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02004056 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02004057 else
4058 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004059 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004060 fi
4061 usb_redir="no"
4062 fi
4063fi
4064
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004065##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004066# check if we have VSS SDK headers for win
4067
4068if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4069 case "$vss_win32_sdk" in
Michael Roth690604f2016-06-28 17:31:49 -05004070 "") vss_win32_include="-isystem $source_path" ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004071 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4072 # handle path with spaces. So we symlink the headers into ".sdk/vss".
Michael Roth690604f2016-06-28 17:31:49 -05004073 vss_win32_include="-isystem $source_path/.sdk/vss"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004074 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4075 ;;
Michael Roth690604f2016-06-28 17:31:49 -05004076 *) vss_win32_include="-isystem $vss_win32_sdk"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004077 esac
4078 cat > $TMPC << EOF
4079#define __MIDL_user_allocate_free_DEFINED__
4080#include <inc/win2003/vss.h>
4081int main(void) { return VSS_CTX_BACKUP; }
4082EOF
4083 if compile_prog "$vss_win32_include" "" ; then
4084 guest_agent_with_vss="yes"
4085 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
Fam Zheng315d3182016-09-21 12:27:21 +08004086 libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004087 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004088 else
4089 if test "$vss_win32_sdk" != "" ; then
4090 echo "ERROR: Please download and install Microsoft VSS SDK:"
4091 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4092 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4093 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4094 echo "ERROR: The headers are extracted in the directory \`inc'."
4095 feature_not_found "VSS support"
4096 fi
4097 guest_agent_with_vss="no"
4098 fi
4099fi
4100
4101##########################################
4102# lookup Windows platform SDK (if not specified)
4103# The SDK is needed only to build .tlb (type library) file of guest agent
4104# VSS provider from the source. It is usually unnecessary because the
4105# pre-compiled .tlb file is included.
4106
4107if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4108 if test -z "$win_sdk"; then
4109 programfiles="$PROGRAMFILES"
4110 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4111 if test -n "$programfiles"; then
4112 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4113 else
4114 feature_not_found "Windows SDK"
4115 fi
4116 elif test "$win_sdk" = "no"; then
4117 win_sdk=""
4118 fi
4119fi
4120
4121##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004122# check if mingw environment provides a recent ntddscsi.h
4123if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4124 cat > $TMPC << EOF
4125#include <windows.h>
4126#include <ntddscsi.h>
4127int main(void) {
4128#if !defined(IOCTL_SCSI_GET_ADDRESS)
4129#error Missing required ioctl definitions
4130#endif
4131 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4132 return addr.Lun;
4133}
4134EOF
4135 if compile_prog "" "" ; then
4136 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004137 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004138 fi
4139fi
4140
4141##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004142# virgl renderer probe
4143
4144if test "$virglrenderer" != "no" ; then
4145 cat > $TMPC << EOF
4146#include <virglrenderer.h>
4147int main(void) { virgl_renderer_poll(); return 0; }
4148EOF
4149 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4150 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4151 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4152 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4153 virglrenderer="yes"
4154 else
4155 if test "$virglrenderer" = "yes" ; then
4156 feature_not_found "virglrenderer"
4157 fi
4158 virglrenderer="no"
4159 fi
4160fi
4161
4162##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004163# check if we have fdatasync
4164
4165fdatasync=no
4166cat > $TMPC << EOF
4167#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004168int main(void) {
4169#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4170return fdatasync(0);
4171#else
Stefan Weile172fe12012-04-06 21:33:20 +02004172#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004173#endif
4174}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004175EOF
4176if compile_prog "" "" ; then
4177 fdatasync=yes
4178fi
4179
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004180##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004181# check if we have madvise
4182
4183madvise=no
4184cat > $TMPC << EOF
4185#include <sys/types.h>
4186#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004187#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004188int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4189EOF
4190if compile_prog "" "" ; then
4191 madvise=yes
4192fi
4193
4194##########################################
4195# check if we have posix_madvise
4196
4197posix_madvise=no
4198cat > $TMPC << EOF
4199#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004200#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004201int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4202EOF
4203if compile_prog "" "" ; then
4204 posix_madvise=yes
4205fi
4206
4207##########################################
Paul Durrant0a852412016-08-04 14:44:14 +01004208# check if we have posix_syslog
4209
4210posix_syslog=no
4211cat > $TMPC << EOF
4212#include <syslog.h>
4213int main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4214EOF
4215if compile_prog "" "" ; then
4216 posix_syslog=yes
4217fi
4218
4219##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004220# check if trace backend exists
4221
Lluís Vilanova5b808272014-05-27 15:02:14 +02004222$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004223if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004224 error_exit "invalid trace backends" \
4225 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004226fi
4227
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004228##########################################
4229# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004230if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004231 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004232#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004233int main(void) { return 0; }
4234EOF
4235 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004236 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004237 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004238 else
4239 lttng_ust_libs="-llttng-ust"
4240 fi
4241 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004242 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004243 else
4244 urcu_bp_libs="-lurcu-bp"
4245 fi
4246
4247 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4248 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004249 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004250 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004251 fi
4252fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004253
4254##########################################
4255# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004256if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004257 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004258 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004259 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004260 trace_backend_stap="no"
4261 if has 'stap' ; then
4262 trace_backend_stap="yes"
4263 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004264fi
4265
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004266##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004267# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304268
Peter Maydell7c2acc72013-04-08 12:11:27 +01004269# We prefer ucontext, but it's not always possible. The fallback
4270# is sigcontext. gthread is not selectable except explicitly, because
4271# it is not functional enough to run QEMU proper. (It is occasionally
4272# useful for debugging purposes.) On Windows the only valid backend
4273# is the Windows-specific one.
4274
4275ucontext_works=no
4276if test "$darwin" != "yes"; then
4277 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304278#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004279#ifdef __stub_makecontext
4280#error Ignoring glibc stub makecontext which will always fail
4281#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004282int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304283EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004284 if compile_prog "" "" ; then
4285 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304286 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004287fi
4288
4289if test "$coroutine" = ""; then
4290 if test "$mingw32" = "yes"; then
4291 coroutine=win32
4292 elif test "$ucontext_works" = "yes"; then
4293 coroutine=ucontext
4294 else
4295 coroutine=sigaltstack
4296 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004297else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004298 case $coroutine in
4299 windows)
4300 if test "$mingw32" != "yes"; then
4301 error_exit "'windows' coroutine backend only valid for Windows"
4302 fi
4303 # Unfortunately the user visible backend name doesn't match the
4304 # coroutine-*.c filename for this case, so we have to adjust it here.
4305 coroutine=win32
4306 ;;
4307 ucontext)
4308 if test "$ucontext_works" != "yes"; then
4309 feature_not_found "ucontext"
4310 fi
4311 ;;
4312 gthread|sigaltstack)
4313 if test "$mingw32" = "yes"; then
4314 error_exit "only the 'windows' coroutine backend is valid for Windows"
4315 fi
4316 ;;
4317 *)
4318 error_exit "unknown coroutine backend $coroutine"
4319 ;;
4320 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304321fi
4322
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004323if test "$coroutine_pool" = ""; then
4324 if test "$coroutine" = "gthread"; then
4325 coroutine_pool=no
4326 else
4327 coroutine_pool=yes
4328 fi
4329fi
4330if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4331 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4332fi
4333
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304334##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304335# check if we have open_by_handle_at
4336
Stefan Weil4e1797f2012-06-18 22:11:06 +02004337open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304338cat > $TMPC << EOF
4339#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004340#if !defined(AT_EMPTY_PATH)
4341# error missing definition
4342#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004343int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004344#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304345EOF
4346if compile_prog "" "" ; then
4347 open_by_handle_at=yes
4348fi
4349
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304350########################################
4351# check if we have linux/magic.h
4352
4353linux_magic_h=no
4354cat > $TMPC << EOF
4355#include <linux/magic.h>
4356int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004357 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304358}
4359EOF
4360if compile_prog "" "" ; then
4361 linux_magic_h=yes
4362fi
4363
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004364########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004365# check whether we can disable warning option with a pragma (this is needed
4366# to silence warnings in the headers of some versions of external libraries).
4367# This test has to be compiled with -Werror as otherwise an unknown pragma is
4368# only a warning.
4369#
4370# If we can't selectively disable warning in the code, disable -Werror so that
4371# the build doesn't fail anyway.
4372
Peter Maydell06d71fa2012-07-30 16:13:07 +01004373pragma_disable_unused_but_set=no
4374cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004375#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004376#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004377#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004378#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004379
Peter Maydell06d71fa2012-07-30 16:13:07 +01004380int main(void) {
4381 return 0;
4382}
4383EOF
4384if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004385 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004386else
4387 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004388fi
4389
4390########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004391# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004392
4393valgrind_h=no
4394cat > $TMPC << EOF
4395#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004396int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004397 return 0;
4398}
4399EOF
4400if compile_prog "" "" ; then
4401 valgrind_h=yes
4402fi
4403
4404########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004405# check if environ is declared
4406
4407has_environ=no
4408cat > $TMPC << EOF
4409#include <unistd.h>
4410int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004411 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004412 return 0;
4413}
4414EOF
4415if compile_prog "" "" ; then
4416 has_environ=yes
4417fi
4418
Richard Henderson76a347e2012-12-28 14:17:02 -08004419########################################
4420# check if cpuid.h is usable.
4421
4422cpuid_h=no
4423cat > $TMPC << EOF
4424#include <cpuid.h>
4425int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004426 unsigned a, b, c, d;
4427 int max = __get_cpuid_max(0, 0);
4428
4429 if (max >= 1) {
4430 __cpuid(1, a, b, c, d);
4431 }
4432
4433 if (max >= 7) {
4434 __cpuid_count(7, 0, a, b, c, d);
4435 }
4436
4437 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004438}
4439EOF
4440if compile_prog "" "" ; then
4441 cpuid_h=yes
4442fi
4443
Richard Hendersonf5401662013-02-16 12:46:59 -08004444########################################
4445# check if __[u]int128_t is usable.
4446
4447int128=no
4448cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004449#if defined(__clang_major__) && defined(__clang_minor__)
4450# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4451# error __int128_t does not work in CLANG before 3.2
4452# endif
4453#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004454__int128_t a;
4455__uint128_t b;
4456int main (void) {
4457 a = a + b;
4458 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004459 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004460 return 0;
4461}
4462EOF
4463if compile_prog "" "" ; then
4464 int128=yes
4465fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004466
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004467########################################
4468# check if getauxval is available.
4469
4470getauxval=no
4471cat > $TMPC << EOF
4472#include <sys/auxv.h>
4473int main(void) {
4474 return getauxval(AT_HWCAP) == 0;
4475}
4476EOF
4477if compile_prog "" "" ; then
4478 getauxval=yes
4479fi
4480
John Snowfd0e6052015-03-25 18:57:39 -04004481########################################
4482# check if ccache is interfering with
4483# semantic analysis of macros
4484
John Snow5e4dfd32015-10-28 13:56:40 -04004485unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004486ccache_cpp2=no
4487cat > $TMPC << EOF
4488static const int Z = 1;
4489#define fn() ({ Z; })
4490#define TAUT(X) ((X) == Z)
4491#define PAREN(X, Y) (X == Y)
4492#define ID(X) (X)
4493int main(int argc, char *argv[])
4494{
4495 int x = 0, y = 0;
4496 x = ID(x);
4497 x = fn();
4498 fn();
4499 if (PAREN(x, y)) return 0;
4500 if (TAUT(Z)) return 0;
4501 return 0;
4502}
4503EOF
4504
4505if ! compile_object "-Werror"; then
4506 ccache_cpp2=yes
4507fi
4508
John Snowb553a042015-11-03 15:43:42 -05004509#################################################
4510# clang does not support glibc + FORTIFY_SOURCE.
4511
4512if test "$fortify_source" != "no"; then
4513 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4514 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004515 elif test -n "$cxx" &&
4516 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004517 fortify_source="no";
4518 else
4519 fortify_source="yes"
4520 fi
4521fi
4522
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304523##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04004524# check if struct fsxattr is available via linux/fs.h
4525
4526have_fsxattr=no
4527cat > $TMPC << EOF
4528#include <linux/fs.h>
4529struct fsxattr foo;
4530int main(void) {
4531 return 0;
4532}
4533EOF
4534if compile_prog "" "" ; then
4535 have_fsxattr=yes
4536fi
4537
Peter Maydellb66e10e2016-06-08 18:34:32 +01004538##########################################
4539# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02004540have_rtnetlink=no
4541cat > $TMPC << EOF
4542#include <linux/rtnetlink.h>
4543int main(void) {
4544 return IFLA_PROTO_DOWN;
4545}
4546EOF
4547if compile_prog "" "" ; then
4548 have_rtnetlink=yes
4549fi
4550
James Clarke6969ec62016-06-06 12:02:50 +01004551#################################################
4552# Sparc implicitly links with --relax, which is
4553# incompatible with -r, so --no-relax should be
4554# given. It does no harm to give it on other
4555# platforms too.
4556
4557# Note: the prototype is needed since QEMU_CFLAGS
4558# contains -Wmissing-prototypes
4559cat > $TMPC << EOF
4560extern int foo(void);
4561int foo(void) { return 0; }
4562EOF
4563if ! compile_object ""; then
4564 error_exit "Failed to compile object file for LD_REL_FLAGS test"
4565fi
4566if do_cc -nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
4567 LD_REL_FLAGS="-Wl,--no-relax"
4568fi
4569
Jan Vesely277abf12016-04-29 13:15:23 -04004570##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004571# End of CC checks
4572# After here, no more $cc or $ld runs
4573
Blue Swirl1d728c32012-05-01 18:45:39 +00004574if test "$gcov" = "yes" ; then
4575 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4576 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004577elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004578 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004579elif test "$debug" = "no"; then
4580 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004581fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004582
Peter Lieven6542aa92014-02-03 10:26:13 +01004583##########################################
4584# Do we have libnfs
4585if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004586 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004587 libnfs="yes"
4588 libnfs_libs=$($pkg_config --libs libnfs)
Peter Lieven6542aa92014-02-03 10:26:13 +01004589 else
4590 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004591 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004592 fi
4593 libnfs="no"
4594 fi
4595fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004596
Peter Maydell6ca026c2012-07-18 15:10:18 +01004597# Now we've finished running tests it's OK to add -Werror to the compiler flags
4598if test "$werror" = "yes"; then
4599 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4600fi
4601
Juan Quintelae86ecd42009-08-03 14:45:59 +02004602if test "$solaris" = "no" ; then
4603 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004604 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004605 fi
4606fi
4607
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004608# test if pod2man has --utf8 option
4609if pod2man --help | grep -q utf8; then
4610 POD2MAN="pod2man --utf8"
4611else
4612 POD2MAN="pod2man"
4613fi
4614
Blue Swirl952afb72010-09-19 08:36:34 +00004615# Use ASLR, no-SEH and DEP if available
4616if test "$mingw32" = "yes" ; then
4617 for flag in --dynamicbase --no-seh --nxcompat; do
4618 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4619 LDFLAGS="-Wl,$flag $LDFLAGS"
4620 fi
4621 done
4622fi
4623
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004624qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004625qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004626qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004627qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004628
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004629tools=""
4630if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004631 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004632 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4633 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004634 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004635 fi
4636fi
4637if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304638 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004639 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4640 virtfs=yes
4641 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4642 else
4643 if test "$virtfs" = yes; then
Stefan Weil3f3b5382016-04-08 18:11:13 +02004644 error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05304645 fi
Andreas Färber17500372012-05-01 01:12:03 +02004646 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004647 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304648 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004649fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004650
4651# Probe for guest agent support/options
4652
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004653if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004654 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004655 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004656 guest_agent=yes
4657 elif [ "$guest_agent" != yes ]; then
4658 guest_agent=no
4659 else
4660 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004661 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004662fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004663
Michael Roth9d6bc272015-08-26 10:49:13 -05004664# Guest agent Window MSI package
4665
4666if test "$guest_agent" != yes; then
4667 if test "$guest_agent_msi" = yes; then
4668 error_exit "MSI guest agent package requires guest agent enabled"
4669 fi
4670 guest_agent_msi=no
4671elif test "$mingw32" != "yes"; then
4672 if test "$guest_agent_msi" = "yes"; then
4673 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4674 fi
4675 guest_agent_msi=no
4676elif ! has wixl; then
4677 if test "$guest_agent_msi" = "yes"; then
4678 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4679 fi
4680 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004681else
4682 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4683 # disabled explicitly
4684 if test "$guest_agent_msi" != "no"; then
4685 guest_agent_msi=yes
4686 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004687fi
4688
Michael Roth1a349042015-08-26 11:14:31 -05004689if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004690 if test "$guest_agent_with_vss" = "yes"; then
4691 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4692 fi
4693
4694 if test "$QEMU_GA_MANUFACTURER" = ""; then
4695 QEMU_GA_MANUFACTURER=QEMU
4696 fi
4697
4698 if test "$QEMU_GA_DISTRO" = ""; then
4699 QEMU_GA_DISTRO=Linux
4700 fi
4701
4702 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02004703 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05004704 fi
4705
Stefan Weil89138852016-05-16 15:10:20 +02004706 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05004707
4708 case "$cpu" in
4709 x86_64)
4710 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4711 ;;
4712 i386)
4713 QEMU_GA_MSI_ARCH="-D Arch=32"
4714 ;;
4715 *)
4716 error_exit "CPU $cpu not supported for building installation package"
4717 ;;
4718 esac
4719fi
4720
Paolo Bonzinica35f782010-05-26 16:08:29 +02004721# Mac OS X ships with a broken assembler
4722roms=
4723if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4724 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4725 "$softmmu" = yes ; then
Peter Maydelle57218b2016-08-08 17:11:28 +01004726 # Different host OS linkers have different ideas about the name of the ELF
4727 # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
4728 # variant; and Windows uses i386pe.
4729 for emu in elf_i386 elf_i386_fbsd i386pe; do
4730 if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
4731 ld_i386_emulation="$emu"
4732 roms="optionrom"
4733 break
4734 fi
4735 done
Paolo Bonzinica35f782010-05-26 16:08:29 +02004736fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004737if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004738 roms="$roms spapr-rtas"
4739fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004740
Christian Borntraeger9933c302013-04-23 01:23:03 +00004741if test "$cpu" = "s390x" ; then
4742 roms="$roms s390-ccw"
4743fi
4744
Richard Henderson964c6fa2013-06-21 19:10:16 -07004745# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004746if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07004747 textseg_addr=
4748 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004749 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4750 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004751 textseg_addr=0x60000000
4752 ;;
4753 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004754 # A 256M aligned address, high in the address space, with enough
4755 # room for the code_gen_buffer above it before the stack.
4756 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004757 ;;
4758 esac
4759 if [ -n "$textseg_addr" ]; then
4760 cat > $TMPC <<EOF
4761 int main(void) { return 0; }
4762EOF
4763 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4764 if ! compile_prog "" "$textseg_ldflags"; then
4765 # In case ld does not support -Ttext-segment, edit the default linker
4766 # script via sed to set the .text start addr. This is needed on FreeBSD
4767 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004768 if ! $ld --verbose >/dev/null 2>&1; then
4769 error_exit \
4770 "We need to link the QEMU user mode binaries at a" \
4771 "specific text address. Unfortunately your linker" \
4772 "doesn't support either the -Ttext-segment option or" \
4773 "printing the default linker script with --verbose." \
4774 "If you don't want the user mode binaries, pass the" \
4775 "--disable-user option to configure."
4776 fi
4777
Richard Henderson964c6fa2013-06-21 19:10:16 -07004778 $ld --verbose | sed \
4779 -e '1,/==================================================/d' \
4780 -e '/==================================================/,$d' \
4781 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4782 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4783 textseg_ldflags="-Wl,-T../config-host.ld"
4784 fi
4785 fi
4786fi
4787
Cole Robinson02d34f62016-05-06 14:03:09 -04004788echo_version() {
4789 if test "$1" = "yes" ; then
4790 echo "($2)"
4791 fi
4792}
4793
Jan Kiszka50e12062014-10-02 10:03:55 +02004794# prepend pixman and ftd flags after all config tests are done
4795QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4796libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004797
bellard43ce4df2003-06-09 19:53:12 +00004798echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02004799echo "BIOS directory $(eval echo $qemu_datadir)"
4800echo "binary directory $(eval echo $bindir)"
4801echo "library directory $(eval echo $libdir)"
4802echo "module directory $(eval echo $qemu_moddir)"
4803echo "libexec directory $(eval echo $libexecdir)"
4804echo "include directory $(eval echo $includedir)"
4805echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00004806if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02004807echo "local state directory $(eval echo $local_statedir)"
4808echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00004809echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004810else
4811echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004812echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004813fi
bellard5a671352003-10-01 00:13:48 +00004814echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004815echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004816echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004817echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004818echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004819echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004820echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004821echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004822echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004823echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004824echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004825echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004826if test "$slirp" = "yes" ; then
4827 echo "smbd $smbd"
4828fi
Fam Zheng17969262014-02-10 14:48:56 +08004829echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004830echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004831echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004832echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004833echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004834echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004835echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004836echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004837echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004838echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004839if test "$darwin" = "yes" ; then
4840 echo "Cocoa support $cocoa"
4841fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004842echo "pixman $pixman"
Stefan Weil89138852016-05-16 15:10:20 +02004843echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
4844echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004845echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02004846echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01004847echo "TLS priority $tls_priority"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004848echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09004849echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004850echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01004851echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02004852echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01004853echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004854echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00004855echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004856echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004857echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004858echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004859echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004860echo "Block whitelist (rw) $block_drv_rw_whitelist"
4861echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304862echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004863echo "VNC support $vnc"
4864if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004865 echo "VNC SASL support $vnc_sasl"
4866 echo "VNC JPEG support $vnc_jpeg"
4867 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004868fi
blueswir131422552007-04-16 18:27:06 +00004869if test -n "$sparc_cpu"; then
4870 echo "Target Sparc Arch $sparc_cpu"
4871fi
aliguorie37630c2009-04-22 15:19:10 +00004872echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004873if test "$xen" = "yes" ; then
4874 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00004875 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00004876fi
aurel322e4d9fb2008-04-08 06:01:02 +00004877echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004878echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004879echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004880echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004881echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004882echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004883echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004884echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004885echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004886echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004887echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004888echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004889echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004890echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004891echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004892echo "madvise $madvise"
4893echo "posix_madvise $posix_madvise"
Corey Bryant47e98652012-01-26 09:42:26 -05004894echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004895echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004896echo "vhost-scsi support $vhost_scsi"
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01004897echo "vhost-vsock support $vhost_vsock"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004898echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01004899if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004900echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004901fi
Stefan Weil89138852016-05-16 15:10:20 +02004902echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004903echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004904echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004905echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004906echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004907echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004908echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01004909echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004910echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004911echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004912echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004913echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004914echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004915echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004916echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004917echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004918echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304919echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004920echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004921echo "gcov $gcov_tool"
4922echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004923echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004924echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004925echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004926echo "QOM debugging $qom_cast_debug"
qiaonuohan607dacd2014-02-18 14:11:30 +08004927echo "lzo support $lzo"
4928echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004929echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004930echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004931echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004932echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08004933echo "avx2 optimization $avx2_opt"
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08004934echo "replication support $replication"
bellard67b915a2004-03-31 23:37:16 +00004935
Stefan Weil1ba16962011-07-29 22:40:45 +02004936if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004937echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004938fi
bellard97a847b2003-08-10 21:36:04 +00004939
Juan Quintela98ec69a2009-07-16 18:34:18 +02004940config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004941
Stefan Weildbd99ae2013-01-01 18:33:44 +01004942echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4943
Juan Quintela98ec69a2009-07-16 18:34:18 +02004944echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004945echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004946
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004947echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004948echo "prefix=$prefix" >> $config_host_mak
4949echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004950echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004951echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004952echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004953echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004954echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004955echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004956echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4957echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004958echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004959if test "$mingw32" = "no" ; then
4960 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4961fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004962echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004963echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4964echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004965echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004966echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004967
Juan Quintela98ec69a2009-07-16 18:34:18 +02004968echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004969
aurel32f8393942009-04-13 18:45:38 +00004970if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004971 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004972fi
aliguori1625af82009-04-05 17:41:02 +00004973if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004974 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004975fi
bellard7d132992003-03-06 23:23:54 +00004976if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004977 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004978fi
bellard67b915a2004-03-31 23:37:16 +00004979if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004980 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02004981 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00004982 version_major=${rc_version%%.*}
4983 rc_version=${rc_version#*.}
4984 version_minor=${rc_version%%.*}
4985 rc_version=${rc_version#*.}
4986 version_subminor=${rc_version%%.*}
4987 version_micro=0
4988 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4989 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004990 if test "$guest_agent_with_vss" = "yes" ; then
4991 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004992 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004993 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4994 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004995 if test "$guest_agent_ntddscsi" = "yes" ; then
4996 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4997 fi
Michael Roth1a349042015-08-26 11:14:31 -05004998 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004999 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5000 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5001 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5002 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5003 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5004 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5005 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5006 fi
pbrook210fa552007-02-27 21:04:49 +00005007else
Juan Quintela35f4df22009-07-27 16:13:07 +02005008 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00005009fi
blueswir1128ab2f2008-08-15 18:33:42 +00005010
Mark McLoughlindffcb712009-10-22 17:49:11 +01005011if test "$linux" = "yes" ; then
5012 echo "CONFIG_LINUX=y" >> $config_host_mak
5013fi
5014
bellard83fb7ad2004-07-05 21:25:26 +00005015if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005016 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00005017fi
malcb29fe3e2008-11-18 01:42:22 +00005018
5019if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005020 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00005021fi
5022
bellardec530c82006-04-25 22:36:06 +00005023if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005024 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005025 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00005026 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02005027 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00005028 fi
bellardec530c82006-04-25 22:36:06 +00005029fi
Andreas Färber179cf402010-09-20 00:50:43 +02005030if test "$haiku" = "yes" ; then
5031 echo "CONFIG_HAIKU=y" >> $config_host_mak
5032fi
bellard97a847b2003-08-10 21:36:04 +00005033if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005034 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00005035fi
Stefan Weil1ba16962011-07-29 22:40:45 +02005036if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005037 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00005038fi
bellardc20709a2004-04-21 23:27:19 +00005039if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005040 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04005041 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00005042fi
ths8a16d272008-07-19 09:56:24 +00005043if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005044 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005045fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005046if test "$netmap" = "yes" ; then
5047 echo "CONFIG_NETMAP=y" >> $config_host_mak
5048fi
Gonglei015a33b2014-07-01 20:58:08 +08005049if test "$l2tpv3" = "yes" ; then
5050 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5051fi
Corey Bryant47e98652012-01-26 09:42:26 -05005052if test "$cap_ng" = "yes" ; then
5053 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5054fi
Juan Quintela2358a492009-07-27 16:13:25 +02005055echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005056for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005057 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005058 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005059done
Juan Quintela67f86e82009-08-03 14:46:59 +02005060if test "$audio_pt_int" = "yes" ; then
5061 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5062fi
malcd5631632009-10-10 01:13:41 +04005063if test "$audio_win_int" = "yes" ; then
5064 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5065fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005066echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5067echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005068if test "$vnc" = "yes" ; then
5069 echo "CONFIG_VNC=y" >> $config_host_mak
5070fi
aliguori2f9606b2009-03-06 20:27:28 +00005071if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005072 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005073fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005074if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005075 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005076fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005077if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005078 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005079fi
aliguori76655d62009-03-06 20:27:37 +00005080if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005081 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005082fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005083if test "$xfs" = "yes" ; then
5084 echo "CONFIG_XFS=y" >> $config_host_mak
5085fi
Stefan Weil89138852016-05-16 15:10:20 +02005086qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005087echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005088echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005089echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005090echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005091if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005092 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005093fi
Fam Zheng17969262014-02-10 14:48:56 +08005094if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005095 # $shacmd can generate a hash started with digit, which the compiler doesn't
5096 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005097 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005098 echo "CONFIG_MODULES=y" >> $config_host_mak
5099fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005100if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005101 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005102 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005103 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005104fi
5105if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005106 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005107fi
5108if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005109 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005110fi
Riku Voipioebc996f2009-04-21 15:01:51 +03005111if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005112 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03005113fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005114if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005115 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005116fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005117if test "$accept4" = "yes" ; then
5118 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5119fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305120if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005121 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305122fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005123if test "$eventfd" = "yes" ; then
5124 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5125fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005126if test "$memfd" = "yes" ; then
5127 echo "CONFIG_MEMFD=y" >> $config_host_mak
5128fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005129if test "$fallocate" = "yes" ; then
5130 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5131fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005132if test "$fallocate_punch_hole" = "yes" ; then
5133 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5134fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005135if test "$fallocate_zero_range" = "yes" ; then
5136 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5137fi
Kevin Wolfed911432014-09-29 17:12:59 +02005138if test "$posix_fallocate" = "yes" ; then
5139 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5140fi
Peter Maydellc727f472011-01-06 11:05:10 +00005141if test "$sync_file_range" = "yes" ; then
5142 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5143fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005144if test "$fiemap" = "yes" ; then
5145 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5146fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005147if test "$dup3" = "yes" ; then
5148 echo "CONFIG_DUP3=y" >> $config_host_mak
5149fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005150if test "$ppoll" = "yes" ; then
5151 echo "CONFIG_PPOLL=y" >> $config_host_mak
5152fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005153if test "$prctl_pr_set_timerslack" = "yes" ; then
5154 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5155fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005156if test "$epoll" = "yes" ; then
5157 echo "CONFIG_EPOLL=y" >> $config_host_mak
5158fi
5159if test "$epoll_create1" = "yes" ; then
5160 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5161fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005162if test "$sendfile" = "yes" ; then
5163 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5164fi
Riku Voipio51834342014-06-22 11:25:42 +01005165if test "$timerfd" = "yes" ; then
5166 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5167fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005168if test "$setns" = "yes" ; then
5169 echo "CONFIG_SETNS=y" >> $config_host_mak
5170fi
aurel323b3f24a2009-04-15 16:12:13 +00005171if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005172 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005173fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005174if test "$inotify1" = "yes" ; then
5175 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5176fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005177if test "$byteswap_h" = "yes" ; then
5178 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5179fi
5180if test "$bswap_h" = "yes" ; then
5181 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5182fi
Alexander Graf769ce762009-05-11 17:41:42 +02005183if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005184 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005185 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005186 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005187fi
aurel322e4d9fb2008-04-08 06:01:02 +00005188if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005189 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005190fi
balrogfb599c92008-09-28 23:49:55 +00005191if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005192 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005193 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005194fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005195if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005196 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5197fi
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005198if test "$gtk" = "yes" ; then
5199 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005200 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005201 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005202 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005203 if test "$gtk_gl" = "yes" ; then
5204 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5205 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005206fi
Daniel P. Berrangea1c5e942016-06-06 10:05:06 +01005207echo "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005208if test "$gnutls" = "yes" ; then
5209 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5210fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005211if test "$gnutls_rnd" = "yes" ; then
5212 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5213fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005214if test "$gcrypt" = "yes" ; then
5215 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005216 if test "$gcrypt_kdf" = "yes" ; then
5217 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5218 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005219fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005220if test "$nettle" = "yes" ; then
5221 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005222 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005223 if test "$nettle_kdf" = "yes" ; then
5224 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5225 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005226fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005227if test "$tasn1" = "yes" ; then
5228 echo "CONFIG_TASN1=y" >> $config_host_mak
5229fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005230if test "$have_ifaddrs_h" = "yes" ; then
5231 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5232fi
Jan Vesely277abf12016-04-29 13:15:23 -04005233
5234# Work around a system header bug with some kernel/XFS header
5235# versions where they both try to define 'struct fsxattr':
5236# xfs headers will not try to redefine structs from linux headers
5237# if this macro is set.
5238if test "$have_fsxattr" = "yes" ; then
5239 echo "HAVE_FSXATTR=y" >> $config_host_mak
5240fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005241if test "$vte" = "yes" ; then
5242 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005243 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5244fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005245if test "$virglrenderer" = "yes" ; then
5246 echo "CONFIG_VIRGL=y" >> $config_host_mak
5247 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5248 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5249fi
aliguorie37630c2009-04-22 15:19:10 +00005250if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005251 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005252 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005253 if test "$xen_pv_domain_build" = "yes" ; then
5254 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5255 fi
aliguorie37630c2009-04-22 15:19:10 +00005256fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005257if test "$linux_aio" = "yes" ; then
5258 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5259fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005260if test "$attr" = "yes" ; then
5261 echo "CONFIG_ATTR=y" >> $config_host_mak
5262fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005263if test "$libattr" = "yes" ; then
5264 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5265fi
Meador Inge983eef52012-02-24 14:00:42 +05305266if test "$virtfs" = "yes" ; then
5267 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005268fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005269if test "$vhost_scsi" = "yes" ; then
5270 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5271fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005272if test "$vhost_net" = "yes" ; then
5273 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5274fi
Stefan Hajnoczifc0b9b02016-08-16 13:27:22 +01005275if test "$vhost_vsock" = "yes" ; then
5276 echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5277fi
ths77755342008-11-27 15:45:16 +00005278if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005279 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005280fi
aliguoribf9298b2008-12-05 20:05:26 +00005281if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005282 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005283fi
aliguoriceb42de2009-04-07 18:43:28 +00005284if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005285 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005286fi
aurel32f652e6a2008-12-16 10:43:48 +00005287if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005288 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005289fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005290if test "$signalfd" = "yes" ; then
5291 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5292fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005293if test "$tcg_interpreter" = "yes" ; then
5294 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5295fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005296if test "$fdatasync" = "yes" ; then
5297 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5298fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005299if test "$madvise" = "yes" ; then
5300 echo "CONFIG_MADVISE=y" >> $config_host_mak
5301fi
5302if test "$posix_madvise" = "yes" ; then
5303 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5304fi
bellard97a847b2003-08-10 21:36:04 +00005305
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005306if test "$spice" = "yes" ; then
5307 echo "CONFIG_SPICE=y" >> $config_host_mak
5308fi
5309
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005310if test "$smartcard" = "yes" ; then
5311 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005312fi
5313
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005314if test "$libusb" = "yes" ; then
5315 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5316fi
5317
Hans de Goede69354a82011-07-19 11:04:10 +02005318if test "$usb_redir" = "yes" ; then
5319 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5320fi
5321
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005322if test "$opengl" = "yes" ; then
5323 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005324 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005325 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005326 if test "$opengl_dmabuf" = "yes" ; then
5327 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5328 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005329fi
5330
Liang Li99f2dbd2016-03-08 13:53:16 +08005331if test "$avx2_opt" = "yes" ; then
5332 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5333fi
5334
qiaonuohan607dacd2014-02-18 14:11:30 +08005335if test "$lzo" = "yes" ; then
5336 echo "CONFIG_LZO=y" >> $config_host_mak
5337fi
5338
5339if test "$snappy" = "yes" ; then
5340 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5341fi
5342
Peter Wu6b383c02015-01-06 18:48:14 +01005343if test "$bzip2" = "yes" ; then
5344 echo "CONFIG_BZIP2=y" >> $config_host_mak
5345 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5346fi
5347
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005348if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005349 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005350 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5351 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005352fi
5353
Peter Lieven6542aa92014-02-03 10:26:13 +01005354if test "$libnfs" = "yes" ; then
Colin Lord4be48792016-08-12 09:27:04 -04005355 echo "CONFIG_LIBNFS=m" >> $config_host_mak
5356 echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
Peter Lieven6542aa92014-02-03 10:26:13 +01005357fi
5358
Eduardo Otubof7945732012-08-14 18:44:05 -03005359if test "$seccomp" = "yes"; then
5360 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5361fi
5362
bellard83fb7ad2004-07-05 21:25:26 +00005363# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005364if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005365 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005366fi
5367
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005368if test "$localtime_r" = "yes" ; then
5369 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5370fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005371if test "$qom_cast_debug" = "yes" ; then
5372 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5373fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005374if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005375 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005376 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5377 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005378fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005379
Peter Maydell7c2acc72013-04-08 12:11:27 +01005380echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005381if test "$coroutine_pool" = "yes" ; then
5382 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5383else
5384 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5385fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305386
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305387if test "$open_by_handle_at" = "yes" ; then
5388 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5389fi
5390
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305391if test "$linux_magic_h" = "yes" ; then
5392 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5393fi
5394
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005395if test "$pragma_diagnostic_available" = "yes" ; then
5396 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005397fi
5398
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005399if test "$valgrind_h" = "yes" ; then
5400 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5401fi
5402
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005403if test "$has_environ" = "yes" ; then
5404 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5405fi
5406
Richard Henderson76a347e2012-12-28 14:17:02 -08005407if test "$cpuid_h" = "yes" ; then
5408 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5409fi
5410
Richard Hendersonf5401662013-02-16 12:46:59 -08005411if test "$int128" = "yes" ; then
5412 echo "CONFIG_INT128=y" >> $config_host_mak
5413fi
5414
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005415if test "$getauxval" = "yes" ; then
5416 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5417fi
5418
Bharata B Raoeb100392012-09-24 14:42:45 +05305419if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005420 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005421 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5422 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305423fi
5424
Jeff Codyd85fa9e2016-04-05 10:40:09 -04005425if test "$glusterfs_xlator_opt" = "yes" ; then
5426 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5427fi
5428
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305429if test "$glusterfs_discard" = "yes" ; then
5430 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5431fi
5432
Bharata B Rao7c815372013-12-21 14:51:25 +05305433if test "$glusterfs_zerofill" = "yes" ; then
5434 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5435fi
5436
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005437if test "$archipelago" = "yes" ; then
5438 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5439 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5440fi
5441
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005442if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005443 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005444 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5445 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005446fi
5447
blueswir168063642008-11-22 21:03:55 +00005448# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005449if test "$libusb" = "yes"; then
5450 echo "HOST_USB=libusb legacy" >> $config_host_mak
5451else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005452 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005453fi
blueswir168063642008-11-22 21:03:55 +00005454
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005455# TPM passthrough support?
5456if test "$tpm" = "yes"; then
5457 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5458 if test "$tpm_passthrough" = "yes"; then
5459 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5460 fi
5461fi
5462
Lluís Vilanova5b808272014-05-27 15:02:14 +02005463echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5464if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005465 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305466fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005467if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005468 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5469 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005470 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005471fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03005472if have_backend "log"; then
5473 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02005474fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005475if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005476 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5477fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005478if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005479 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5480 if test "$trace_backend_stap" = "yes" ; then
5481 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5482 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005483fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005484if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005485 if test "$linux" = "yes" ; then
5486 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005487 else
Stewart Smith21684af2014-01-24 12:39:10 +11005488 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005489 fi
5490fi
Paul Durrant0a852412016-08-04 14:44:14 +01005491if have_backend "syslog"; then
5492 if test "$posix_syslog" = "yes" ; then
5493 echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5494 else
5495 feature_not_found "syslog(trace backend)" "syslog not available"
5496 fi
5497fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005498echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5499
Michael R. Hines2da776d2013-07-22 10:01:54 -04005500if test "$rdma" = "yes" ; then
5501 echo "CONFIG_RDMA=y" >> $config_host_mak
5502fi
5503
Laurent Vivier575b22b2016-06-02 22:14:15 +02005504if test "$have_rtnetlink" = "yes" ; then
5505 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5506fi
5507
Changlong Xiea6b1d4c2016-07-27 15:01:48 +08005508if test "$replication" = "yes" ; then
5509 echo "CONFIG_REPLICATION=y" >> $config_host_mak
5510fi
5511
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005512# Hold two types of flag:
5513# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5514# a thread we have a handle to
5515# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5516# platform
5517if test "$pthread_setname_np" = "yes" ; then
5518 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5519 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5520fi
5521
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005522if test "$tcg_interpreter" = "yes"; then
5523 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5524elif test "$ARCH" = "sparc64" ; then
5525 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5526elif test "$ARCH" = "s390x" ; then
5527 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005528elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005529 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005530elif test "$ARCH" = "ppc64" ; then
5531 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005532else
5533 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5534fi
5535QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5536
Juan Quintela98ec69a2009-07-16 18:34:18 +02005537echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005538echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005539echo "MAKE=$make" >> $config_host_mak
5540echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005541echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5542echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03005543echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5544echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00005545echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005546echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005547if $iasl -h > /dev/null 2>&1; then
5548 echo "IASL=$iasl" >> $config_host_mak
5549fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005550echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005551echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005552echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005553echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005554echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005555echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07005556echo "AS=$as" >> $config_host_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07005557echo "CCAS=$ccas" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005558echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005559echo "OBJCOPY=$objcopy" >> $config_host_mak
5560echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005561echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005562echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005563echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005564echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005565echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005566echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005567if test "$sparse" = "yes" ; then
5568 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005569 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005570 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005571 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5572 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5573fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005574if test "$cross_prefix" != ""; then
5575 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5576else
5577 echo "AUTOCONF_HOST := " >> $config_host_mak
5578fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005579echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005580echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01005581echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Peter Maydelle57218b2016-08-08 17:11:28 +01005582echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005583echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005584echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Daniel P. Berrange409437e2016-07-20 14:23:13 +01005585echo "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005586echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005587echo "DSOSUF=$DSOSUF" >> $config_host_mak
5588echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005589echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005590echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5591echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005592echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005593echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005594if test "$gcov" = "yes" ; then
5595 echo "CONFIG_GCOV=y" >> $config_host_mak
5596 echo "GCOV=$gcov_tool" >> $config_host_mak
5597fi
Juan Quintela804edf22009-07-27 16:12:49 +02005598
Peter Maydell6efd7512011-11-30 11:59:04 +00005599# use included Linux headers
5600if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005601 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005602 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005603 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005604 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005605 ;;
5606 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005607 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005608 ;;
5609 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005610 linux_arch=s390
5611 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005612 aarch64)
5613 linux_arch=arm64
5614 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005615 mips64)
5616 linux_arch=mips
5617 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005618 *)
5619 # For most CPUs the kernel architecture name and QEMU CPU name match.
5620 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005621 ;;
5622 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005623 # For non-KVM architectures we will not have asm headers
5624 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5625 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5626 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005627fi
5628
bellard1d14ffa2005-10-30 18:58:22 +00005629for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005630target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005631config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02005632target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00005633target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005634
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005635case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005636 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 +02005637 target_bigendian=yes
5638 ;;
5639esac
bellard97a847b2003-08-10 21:36:04 +00005640target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005641target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005642target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005643target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005644case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005645 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005646 target_softmmu="yes"
5647 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005648 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005649 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005650 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005651 fi
pbrook9e407a82007-05-26 16:38:53 +00005652 target_user_only="yes"
5653 target_linux_user="yes"
5654 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005655 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005656 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005657 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005658 fi
blueswir184778502008-10-26 20:33:16 +00005659 target_user_only="yes"
5660 target_bsd_user="yes"
5661 ;;
pbrook9e407a82007-05-26 16:38:53 +00005662 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005663 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005664 exit 1
5665 ;;
5666esac
ths831b7822007-01-18 20:06:33 +00005667
bellard97a847b2003-08-10 21:36:04 +00005668mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005669echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005670
pbrooke5fe0c52006-06-11 13:32:59 +00005671bflt="no"
Stefan Weil89138852016-05-16 15:10:20 +02005672interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00005673gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005674
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005675TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005676TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005677TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005678
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005679case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005680 i386)
aurel322408a522008-04-20 20:19:44 +00005681 ;;
5682 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005683 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005684 ;;
5685 alpha)
aurel322408a522008-04-20 20:19:44 +00005686 ;;
5687 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005688 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005689 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005690 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005691 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005692 aarch64)
5693 TARGET_BASE_ARCH=arm
5694 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005695 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 +01005696 ;;
aurel322408a522008-04-20 20:19:44 +00005697 cris)
aurel322408a522008-04-20 20:19:44 +00005698 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005699 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005700 ;;
aurel322408a522008-04-20 20:19:44 +00005701 m68k)
aurel322408a522008-04-20 20:19:44 +00005702 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005703 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005704 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005705 microblaze|microblazeel)
5706 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005707 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005708 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005709 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005710 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005711 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005712 ;;
5713 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005714 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005715 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005716 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005717 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005718 ;;
5719 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005720 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005721 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005722 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005723 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005724 moxie)
5725 ;;
Jia Liue67db062012-07-20 15:50:39 +08005726 or32)
5727 TARGET_ARCH=openrisc
5728 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005729 ;;
aurel322408a522008-04-20 20:19:44 +00005730 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005731 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005732 ;;
5733 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005734 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005735 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005736 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005737 ;;
5738 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005739 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005740 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005741 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005742 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005743 ppc64le)
5744 TARGET_ARCH=ppc64
5745 TARGET_BASE_ARCH=ppc
5746 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005747 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 -05005748 ;;
aurel322408a522008-04-20 20:19:44 +00005749 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005750 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005751 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005752 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005753 echo "TARGET_ABI32=y" >> $config_target_mak
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 ;;
5756 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005757 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005758 bflt="yes"
5759 ;;
5760 sparc)
aurel322408a522008-04-20 20:19:44 +00005761 ;;
5762 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005763 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005764 ;;
5765 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005766 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005767 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005768 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005769 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005770 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005771 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005772 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 +01005773 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005774 tilegx)
5775 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005776 tricore)
5777 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005778 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005779 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005780 xtensa|xtensaeb)
5781 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005782 ;;
aurel322408a522008-04-20 20:19:44 +00005783 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005784 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005785 ;;
5786esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005787# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5788if [ "$TARGET_BASE_ARCH" = "" ]; then
5789 TARGET_BASE_ARCH=$TARGET_ARCH
5790fi
5791
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005792symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5793
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005794upper() {
5795 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5796}
5797
Stefan Weil89138852016-05-16 15:10:20 +02005798target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02005799echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005800echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005801echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005802if [ "$TARGET_ABI_DIR" = "" ]; then
5803 TARGET_ABI_DIR=$TARGET_ARCH
5804fi
Juan Quintela25be2102009-10-07 02:41:00 +02005805echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005806if [ "$HOST_VARIANT_DIR" != "" ]; then
5807 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5808fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005809case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005810 i386|x86_64)
5811 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005812 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005813 if test "$xen_pci_passthrough" = yes; then
5814 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5815 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005816 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005817 ;;
5818 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005819esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005820case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005821 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005822 # Make sure the target and host cpus are compatible
5823 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005824 \( "$target_name" = "$cpu" -o \
5825 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5826 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5827 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5828 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005829 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005830 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005831 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5832 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5833 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005834 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005835 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005836 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureau421f4442015-10-26 15:32:00 +01005837 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005838 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005839 fi
5840esac
bellardde83cd02003-06-15 20:25:43 +00005841if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005842 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005843fi
5844if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005845 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005846fi
bellard997344f2003-10-27 21:10:39 +00005847if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005848 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005849 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005850fi
ths831b7822007-01-18 20:06:33 +00005851if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005852 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005853fi
pbrook56aebc82008-10-11 17:55:29 +00005854list=""
5855if test ! -z "$gdb_xml_files" ; then
5856 for x in $gdb_xml_files; do
5857 list="$list $source_path/gdb-xml/$x"
5858 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005859 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005860fi
bellardde83cd02003-06-15 20:25:43 +00005861
pbrooke5fe0c52006-06-11 13:32:59 +00005862if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005863 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005864fi
blueswir184778502008-10-26 20:33:16 +00005865if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005866 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005867fi
bellard5b0753e2005-03-01 21:37:28 +00005868
Juan Quintela4afddb52009-08-03 14:46:45 +02005869# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005870
Juan Quintela4afddb52009-08-03 14:46:45 +02005871cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005872ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005873
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005874disas_config() {
5875 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5876 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5877}
5878
Juan Quintela64656022009-08-03 14:46:53 +02005879for i in $ARCH $TARGET_BASE_ARCH ; do
5880 case "$i" in
5881 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005882 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005883 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005884 aarch64)
5885 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005886 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005887 fi
5888 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005889 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005890 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005891 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005892 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005893 fi
Juan Quintela64656022009-08-03 14:46:53 +02005894 ;;
5895 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005896 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005897 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005898 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005899 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005900 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005901 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005902 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005903 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005904 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005905 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005906 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005907 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005908 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005909 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005910 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005911 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005912 ;;
5913 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005914 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005915 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005916 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005917 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005918 ;;
Jia Liue67db062012-07-20 15:50:39 +08005919 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005920 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005921 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005922 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005923 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005924 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005925 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005926 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005927 ;;
5928 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005929 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005930 ;;
5931 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005932 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005933 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005934 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005935 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005936 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005937 esac
5938done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005939if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005940 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005941fi
Juan Quintela64656022009-08-03 14:46:53 +02005942
Juan Quintela6ee71262009-08-03 14:46:47 +02005943case "$ARCH" in
5944alpha)
5945 # Ensure there's only a single GP
5946 cflags="-msmall-data $cflags"
5947;;
5948esac
5949
Juan Quintelad02c1db2009-08-03 14:46:50 +02005950if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005951 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005952 if test "$target_linux_user" = "yes" ; then
5953 cflags="-p $cflags"
5954 ldflags="-p $ldflags"
5955 fi
5956 if test "$target_softmmu" = "yes" ; then
5957 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005958 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005959 fi
5960fi
5961
Juan Quintela9b8e1112009-08-03 14:46:46 +02005962if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005963 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005964fi
Juan Quintelafa282482009-07-22 22:37:39 +02005965
Juan Quintela25be2102009-10-07 02:41:00 +02005966echo "LDFLAGS+=$ldflags" >> $config_target_mak
5967echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005968
bellard97a847b2003-08-10 21:36:04 +00005969done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005970
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005971if [ "$pixman" = "internal" ]; then
5972 echo "config-host.h: subdir-pixman" >> $config_host_mak
5973fi
5974
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005975if [ "$dtc_internal" = "yes" ]; then
5976 echo "config-host.h: subdir-dtc" >> $config_host_mak
5977fi
5978
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005979if test "$numa" = "yes"; then
5980 echo "CONFIG_NUMA=y" >> $config_host_mak
5981fi
5982
John Snowfd0e6052015-03-25 18:57:39 -04005983if test "$ccache_cpp2" = "yes"; then
5984 echo "export CCACHE_CPP2=y" >> $config_host_mak
5985fi
5986
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005987# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005988DIRS="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 +04005989DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005990DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005991DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005992DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005993FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5994FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005995FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005996FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005997FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005998FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005999FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01006000FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07006001for bios_file in \
6002 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01006003 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07006004 $source_path/pc-bios/*.rom \
6005 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00006006 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07006007 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01006008 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07006009 $source_path/pc-bios/palcode-*
6010do
Stefan Weil89138852016-05-16 15:10:20 +02006011 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006012done
Stefan Weil89138852016-05-16 15:10:20 +02006013for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006014do
Stefan Weil89138852016-05-16 15:10:20 +02006015 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02006016done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006017mkdir -p $DIRS
6018for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03006019 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01006020 symlink "$source_path/$f" "$f"
6021 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01006022done
Paul Brook1ad21342009-05-19 16:17:58 +01006023
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006024# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06006025for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006026 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01006027 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006028 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Richard Hendersoncdbd7272016-07-07 21:49:36 -07006029 echo "AS=$as" >> $config_mak
Richard Henderson5f6f0e22016-06-23 10:39:18 -07006030 echo "CCAS=$ccas" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006031 echo "CC=$cc" >> $config_mak
6032 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00006033 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006034 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03006035 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05006036 echo "LD=$ld" >> $config_mak
6037done
6038
Marc-André Lureaufe310172016-06-15 13:06:00 +02006039# set up tests data directory
6040if [ ! -e tests/data ]; then
6041 symlink "$source_path/tests/data" tests/data
6042fi
6043
Max Reitz76c75602014-05-24 23:24:56 +02006044# set up qemu-iotests in this build directory
6045iotests_common_env="tests/qemu-iotests/common.env"
6046iotests_check="tests/qemu-iotests/check"
6047
6048echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6049echo >> "$iotests_common_env"
6050echo "export PYTHON='$python'" >> "$iotests_common_env"
6051
6052if [ ! -e "$iotests_check" ]; then
6053 symlink "$source_path/$iotests_check" "$iotests_check"
6054fi
6055
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006056# Save the configure command line for later reuse.
6057cat <<EOD >config.status
6058#!/bin/sh
6059# Generated by configure.
6060# Run this file to recreate the current configuration.
6061# Compiler output produced by configure, useful for debugging
6062# configure, is in config.log if it exists.
6063EOD
6064printf "exec" >>config.status
6065printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006066echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006067chmod +x config.status
6068
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006069rm -r "$TMPDIR1"