blob: 65bd1ff86cdcb085f01839e6c91aa2b273672080 [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
John Snow5e4dfd32015-10-28 13:56:40 -040011# Don't allow CCACHE, if present, to use cached results of compile tests!
12export CCACHE_RECACHE=yes
13
Peter Maydell8cd05ab2014-05-23 17:07:24 +010014# Temporary directory used for files created while
15# configure runs. Since it is in the build directory
16# we can safely blow away any previous version of it
17# (and we need not jump through hoops to try to delete
18# it when configure exits.)
19TMPDIR1="config-temp"
20rm -rf "${TMPDIR1}"
21mkdir -p "${TMPDIR1}"
22if [ $? -ne 0 ]; then
23 echo "ERROR: failed to create temporary directory"
24 exit 1
bellard7d132992003-03-06 23:23:54 +000025fi
26
Peter Maydell8cd05ab2014-05-23 17:07:24 +010027TMPB="qemu-conf"
28TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050029TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000030TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Don Slutz66518bf2014-01-02 21:12:46 -050031TMPL="${TMPDIR1}/${TMPB}.lo"
32TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010033TMPE="${TMPDIR1}/${TMPB}.exe"
James Clarke6969ec62016-06-06 12:02:50 +010034TMPMO="${TMPDIR1}/${TMPB}.mo"
bellard7d132992003-03-06 23:23:54 +000035
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020036rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000037
Peter Maydellb48e3612011-11-23 17:26:44 +000038# Print a helpful header at the top of config.log
39echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000040printf "# Configured with:" >> config.log
41printf " '%s'" "$0" "$@" >> config.log
42echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000043echo "#" >> config.log
44
Peter Maydell76ad07a2013-04-08 12:11:26 +010045error_exit() {
46 echo
47 echo "ERROR: $1"
48 while test -n "$2"; do
49 echo " $2"
50 shift
51 done
52 echo
53 exit 1
54}
55
Peter Maydell9c83ffd2014-02-25 18:27:49 +000056do_compiler() {
57 # Run the compiler, capturing its output to the log. First argument
58 # is compiler binary to execute.
59 local compiler="$1"
60 shift
61 echo $compiler "$@" >> config.log
62 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010063 # Test passed. If this is an --enable-werror build, rerun
64 # the test with -Werror and bail out if it fails. This
65 # makes warning-generating-errors in configure test code
66 # obvious to developers.
67 if test "$werror" != "yes"; then
68 return 0
69 fi
70 # Don't bother rerunning the compile if we were already using -Werror
71 case "$*" in
72 *-Werror*)
73 return 0
74 ;;
75 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000076 echo $compiler -Werror "$@" >> config.log
77 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010078 error_exit "configure test passed without -Werror but failed with -Werror." \
79 "This is probably a bug in the configure script. The failing command" \
80 "will be at the bottom of config.log." \
81 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010082}
83
Peter Maydell9c83ffd2014-02-25 18:27:49 +000084do_cc() {
85 do_compiler "$cc" "$@"
86}
87
88do_cxx() {
89 do_compiler "$cxx" "$@"
90}
91
92update_cxxflags() {
93 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
94 # options which some versions of GCC's C++ compiler complain about
95 # because they only make sense for C programs.
96 QEMU_CXXFLAGS=
97 for arg in $QEMU_CFLAGS; do
98 case $arg in
99 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
100 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
101 ;;
102 *)
103 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
104 ;;
105 esac
106 done
107}
108
Juan Quintela52166aa2009-08-03 14:46:03 +0200109compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400110 local_cflags="$1"
111 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200112}
113
114compile_prog() {
115 local_cflags="$1"
116 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100117 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200118}
119
Paolo Bonzini11568d62010-12-23 11:43:58 +0100120# symbolically link $1 to $2. Portable version of "ln -sf".
121symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100122 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800123 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100124 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100125}
126
Loïc Minier0dba6192010-01-28 21:26:51 +0000127# check whether a command is available to this shell (may be either an
128# executable or a builtin)
129has() {
130 type "$1" >/dev/null 2>&1
131}
132
133# search for an executable in PATH
134path_of() {
135 local_command="$1"
136 local_ifs="$IFS"
137 local_dir=""
138
139 # pathname has a dir component?
140 if [ "${local_command#*/}" != "$local_command" ]; then
141 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
142 echo "$local_command"
143 return 0
144 fi
145 fi
146 if [ -z "$local_command" ]; then
147 return 1
148 fi
149
150 IFS=:
151 for local_dir in $PATH; do
152 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
153 echo "$local_dir/$local_command"
154 IFS="${local_ifs:-$(printf ' \t\n')}"
155 return 0
156 fi
157 done
158 # not found
159 IFS="${local_ifs:-$(printf ' \t\n')}"
160 return 1
161}
162
Lluís Vilanova5b808272014-05-27 15:02:14 +0200163have_backend () {
164 echo "$trace_backends" | grep "$1" >/dev/null
165}
166
bellard7d132992003-03-06 23:23:54 +0000167# default parameters
Stefan Weil89138852016-05-16 15:10:20 +0200168source_path=$(dirname "$0")
Juan Quintela2ff6b912009-08-03 14:45:55 +0200169cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300170iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000171interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000172static="no"
bellard7d132992003-03-06 23:23:54 +0000173cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000174audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800175block_drv_rw_whitelist=""
176block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000177host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200178libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200179libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200180audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400181audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200182cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500183libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100184debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100185stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000186
Stefan Weilafb63eb2012-09-26 22:04:38 +0200187# Don't accept a target_list environment variable.
188unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100189
190# Default value for a variable defining feature "foo".
191# * foo="no" feature will only be used if --enable-foo arg is given
192# * foo="" feature will be searched for, and if found, will be used
193# unless --disable-foo is given
194# * foo="yes" this value will only be set by --enable-foo flag.
195# feature will searched for,
196# if not found, configure exits with error
197#
198# Always add --enable-foo and --disable-foo command line args.
199# Distributions want to ensure that several features are compiled in, and it
200# is impossible without a --enable-foo that exits if a feature is not found.
201
202bluez=""
203brlapi=""
204curl=""
205curses=""
206docs=""
207fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100208netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200209pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100210sdl=""
Cole Robinsonee8466d2016-05-06 14:03:07 -0400211sdlabi=""
Meador Inge983eef52012-02-24 14:00:42 +0530212virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100213vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100214sparse="no"
215uuid=""
216vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100217vnc_sasl=""
218vnc_jpeg=""
219vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100220xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000221xen_ctrl_version=""
Ian Campbell64a7ad62016-01-15 13:23:44 +0000222xen_pv_domain_build="no"
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000223xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100224linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500225cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100226attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200227libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100228xfs=""
229
Bradd41a75a2011-07-26 23:11:26 -0400230vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000231vhost_scsi="no"
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. Berrangeddbb0d02015-07-01 18:10:29 +0100308gnutls=""
Daniel P. Berrangeb917da42015-10-31 14:39:52 +0900309gnutls_rnd=""
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100310nettle=""
Daniel P. Berrangefff2f982016-03-29 15:47:51 +0100311nettle_kdf="no"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +0100312gcrypt=""
Daniel P. Berrange37788f22015-10-14 13:14:04 +0100313gcrypt_kdf="no"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100314vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200315virglrenderer=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400316tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100317libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400318vhdx=""
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"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100322
aliguoriac0df512008-12-29 17:14:15 +0000323# parse CC options first
324for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200325 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
aliguoriac0df512008-12-29 17:14:15 +0000326 case "$opt" in
327 --cross-prefix=*) cross_prefix="$optarg"
328 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100329 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000330 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400331 --cxx=*) CXX="$optarg"
332 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100333 --source-path=*) source_path="$optarg"
334 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200335 --cpu=*) cpu="$optarg"
336 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100337 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100338 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200339 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100340 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100341 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200342 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100343 --enable-debug-info) debug_info="yes"
344 ;;
345 --disable-debug-info) debug_info="no"
346 ;;
aliguoriac0df512008-12-29 17:14:15 +0000347 esac
348done
aliguoriac0df512008-12-29 17:14:15 +0000349# OS specific
350# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100351# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000352
Peter Maydelle49d0212012-12-07 15:39:13 +0000353# Preferred compiler:
354# ${CC} (if set)
355# ${cross_prefix}gcc (if cross-prefix specified)
356# system compiler
357if test -z "${CC}${cross_prefix}"; then
358 cc="$host_cc"
359else
360 cc="${CC-${cross_prefix}gcc}"
361fi
362
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400363if test -z "${CXX}${cross_prefix}"; then
364 cxx="c++"
365else
366 cxx="${CXX-${cross_prefix}g++}"
367fi
368
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500369ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000370as="${AS-${cross_prefix}as}"
371cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500372objcopy="${OBJCOPY-${cross_prefix}objcopy}"
373ld="${LD-${cross_prefix}ld}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200374nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500375strip="${STRIP-${cross_prefix}strip}"
376windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300377pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
378query_pkg_config() {
379 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
380}
381pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500382sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000383sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000384
Peter Maydell45d285a2013-10-21 21:03:06 +0100385# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
386ARFLAGS="${ARFLAGS-rv}"
387
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200388# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000389QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400390QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100391QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200392QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200393QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100394if test "$debug_info" = "yes"; then
395 CFLAGS="-g $CFLAGS"
396 LDFLAGS="-g $LDFLAGS"
397fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200398
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100399# make source path absolute
Stefan Weil89138852016-05-16 15:10:20 +0200400source_path=$(cd "$source_path"; pwd)
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100401
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300402# running configure in the source tree?
403# we know that's the case if configure is there.
404if test -f "./configure"; then
405 pwd_is_source_path="y"
406else
407 pwd_is_source_path="n"
408fi
409
aliguoriac0df512008-12-29 17:14:15 +0000410check_define() {
411cat > $TMPC <<EOF
412#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000413#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000414#endif
415int main(void) { return 0; }
416EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200417 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000418}
419
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200420check_include() {
421cat > $TMPC <<EOF
422#include <$1>
423int main(void) { return 0; }
424EOF
425 compile_object
426}
427
John Snow93b25862015-03-25 18:57:37 -0400428write_c_skeleton() {
429 cat > $TMPC <<EOF
430int main(void) { return 0; }
431EOF
432}
433
Peter Maydellbbea4052012-08-14 15:35:34 +0100434if check_define __linux__ ; then
435 targetos="Linux"
436elif check_define _WIN32 ; then
437 targetos='MINGW32'
438elif check_define __OpenBSD__ ; then
439 targetos='OpenBSD'
440elif check_define __sun__ ; then
441 targetos='SunOS'
442elif check_define __HAIKU__ ; then
443 targetos='Haiku'
444else
Stefan Weil89138852016-05-16 15:10:20 +0200445 targetos=$(uname -s)
Peter Maydellbbea4052012-08-14 15:35:34 +0100446fi
447
448# Some host OSes need non-standard checks for which CPU to use.
449# Note that these checks are broken for cross-compilation: if you're
450# cross-compiling to one of these OSes then you'll need to specify
451# the correct CPU with the --cpu option.
452case $targetos in
453Darwin)
454 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
455 # run 64-bit userspace code.
456 # If the user didn't specify a CPU explicitly and the kernel says this is
457 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
458 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
459 cpu="x86_64"
460 fi
461 ;;
462SunOS)
Stefan Weil89138852016-05-16 15:10:20 +0200463 # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
Peter Maydellbbea4052012-08-14 15:35:34 +0100464 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
465 cpu="x86_64"
466 fi
467esac
468
Juan Quintela2ff6b912009-08-03 14:45:55 +0200469if test ! -z "$cpu" ; then
470 # command line argument
471 :
472elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000473 cpu="i386"
474elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700475 if check_define __ILP32__ ; then
476 cpu="x32"
477 else
478 cpu="x86_64"
479 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000480elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000481 if check_define __arch64__ ; then
482 cpu="sparc64"
483 else
484 cpu="sparc"
485 fi
malcfdf7ed92009-01-14 18:39:52 +0000486elif check_define _ARCH_PPC ; then
487 if check_define _ARCH_PPC64 ; then
488 cpu="ppc64"
489 else
490 cpu="ppc"
491 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200492elif check_define __mips__ ; then
493 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200494elif check_define __ia64__ ; then
495 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200496elif check_define __s390__ ; then
497 if check_define __s390x__ ; then
498 cpu="s390x"
499 else
500 cpu="s390"
501 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100502elif check_define __arm__ ; then
503 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100504elif check_define __aarch64__ ; then
505 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400506elif check_define __hppa__ ; then
507 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000508else
Stefan Weil89138852016-05-16 15:10:20 +0200509 cpu=$(uname -m)
aliguoriac0df512008-12-29 17:14:15 +0000510fi
511
Peter Maydell359bc952011-12-24 13:07:25 +0000512ARCH=
513# Normalise host CPU name and set ARCH.
514# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000515case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700516 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200517 cpu="$cpu"
518 ;;
bellard7d132992003-03-06 23:23:54 +0000519 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000520 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000521 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000522 x86_64|amd64)
523 cpu="x86_64"
524 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100525 armv*b|armv*l|arm)
526 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000527 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100528 aarch64)
529 cpu="aarch64"
530 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200531 mips*)
532 cpu="mips"
533 ;;
blueswir131422552007-04-16 18:27:06 +0000534 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000535 cpu="sparc"
536 ;;
bellard7d132992003-03-06 23:23:54 +0000537 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000538 # This will result in either an error or falling back to TCI later
539 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000540 ;;
541esac
Peter Maydell359bc952011-12-24 13:07:25 +0000542if test -z "$ARCH"; then
543 ARCH="$cpu"
544fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200545
bellard7d132992003-03-06 23:23:54 +0000546# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200547
Stacey Sonadfc3e92014-06-08 09:57:22 -0700548# host *BSD for user mode
549HOST_VARIANT_DIR=""
550
bellard7d132992003-03-06 23:23:54 +0000551case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000552CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200553 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200554 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200555 audio_possible_drivers="sdl"
556 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000557;;
bellard67b915a2004-03-31 23:37:16 +0000558MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200559 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200560 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200561 if check_include dsound.h; then
562 audio_drv_list="dsound"
563 else
564 audio_drv_list=""
565 fi
bellard67b915a2004-03-31 23:37:16 +0000566;;
ths5c40d2b2007-06-23 16:03:36 +0000567GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100568 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200569 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200570 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000571;;
bellard7d3505c2004-05-12 19:32:15 +0000572FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200573 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100574 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200575 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200576 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100577 # needed for kinfo_getvmmap(3) in libutil.h
578 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100579 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700580 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000581;;
blueswir1c5e97232009-03-07 20:06:23 +0000582DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200583 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100584 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200585 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200586 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700587 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000588;;
bellard7d3505c2004-05-12 19:32:15 +0000589NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200590 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100591 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200592 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200593 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200594 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700595 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000596;;
597OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200598 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100599 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400600 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200601 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700602 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000603;;
bellard83fb7ad2004-07-05 21:25:26 +0000604Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200605 bsd="yes"
606 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800607 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200608 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200609 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200610 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200611 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 cocoa="yes"
613 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200614 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200615 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200616 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100617 # Disable attempts to use ObjectiveC features in os/object.h since they
618 # won't work when we're compiling with gcc as a C compiler.
619 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700620 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000621;;
bellardec530c82006-04-25 22:36:06 +0000622SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200623 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100624 make="${MAKE-gmake}"
625 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000626 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400627 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200628 needs_libsunmath="no"
Stefan Weil89138852016-05-16 15:10:20 +0200629 solarisrev=$(uname -r | cut -f2 -d.)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200630 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
631 if test "$solarisrev" -le 9 ; then
632 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
633 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200634 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
635 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
636 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200637 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100638 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
639 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
640 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
641 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 fi
thsef18c882007-09-16 22:12:39 +0000643 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200644 fi
645 if test -f /usr/include/sys/soundcard.h ; then
646 audio_drv_list="oss"
647 fi
648 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000649# needed for CMSG_ macros in sys/socket.h
650 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
651# needed for TIOCWIN* defines in termios.h
652 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200653 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200654 solarisnetlibs="-lsocket -lnsl -lresolv"
655 LIBS="$solarisnetlibs $LIBS"
656 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000657;;
malcb29fe3e2008-11-18 01:42:22 +0000658AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200659 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100660 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000661;;
Andreas Färber179cf402010-09-20 00:50:43 +0200662Haiku)
663 haiku="yes"
664 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
665 LIBS="-lposix_error_mapper -lnetwork $LIBS"
666;;
bellard1d14ffa2005-10-30 18:58:22 +0000667*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200668 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200669 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200670 linux="yes"
671 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200672 kvm="yes"
673 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000674 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000675 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000676;;
bellard7d132992003-03-06 23:23:54 +0000677esac
678
bellard7d3505c2004-05-12 19:32:15 +0000679if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000680 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200681 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000682 fi
bellard7d3505c2004-05-12 19:32:15 +0000683fi
684
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100685: ${make=${MAKE-make}}
686: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100687: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400688: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100689
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100690# Default objcc to clang if available, otherwise use CC
691if has clang; then
692 objcc=clang
693else
694 objcc="$cc"
695fi
696
Juan Quintela3457a3f2009-08-03 14:46:07 +0200697if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200698 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800699 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200700 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100701 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
702 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weil78e9d4a2015-11-26 12:13:12 +0100703 # MinGW needs -mthreads for TLS and macro _MT.
704 QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100705 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400706 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100707 if compile_prog "" "-liberty" ; then
708 LIBS="-liberty $LIBS"
709 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200710 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200711 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300712 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300713 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200714 bindir="\${prefix}"
715 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200716 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200717 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200718 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200719fi
720
Anthony Liguori487fefd2009-06-11 13:28:25 -0500721werror=""
bellard85aa5182007-11-11 20:17:03 +0000722
bellard7d132992003-03-06 23:23:54 +0000723for opt do
Stefan Weil89138852016-05-16 15:10:20 +0200724 optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
bellard7d132992003-03-06 23:23:54 +0000725 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000726 --help|-h) show_help=yes
727 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400728 --version|-V) exec cat $source_path/VERSION
729 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000730 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000731 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000732 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000733 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100734 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000735 ;;
aliguoriac0df512008-12-29 17:14:15 +0000736 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000737 ;;
aliguoriac0df512008-12-29 17:14:15 +0000738 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000739 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000740 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000741 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400742 --cxx=*)
743 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200744 --iasl=*) iasl="$optarg"
745 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100746 --objcc=*) objcc="$optarg"
747 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000748 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000749 ;;
pbrook6a882642006-04-17 13:57:12 +0000750 --install=*) install="$optarg"
751 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000752 --python=*) python="$optarg"
753 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000754 --gcov=*) gcov_tool="$optarg"
755 ;;
Brade2d88302011-09-02 16:53:28 -0400756 --smbd=*) smbd="$optarg"
757 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200758 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000759 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200760 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000761 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100762 --enable-debug-info)
763 ;;
764 --disable-debug-info)
765 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800766 --enable-modules)
767 modules="yes"
768 ;;
Stefan Hajnoczi3aa88b32015-11-02 14:06:23 +0000769 --disable-modules)
770 modules="no"
771 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200772 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000773 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000774 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000775 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200776 --enable-trace-backends=*) trace_backends="$optarg"
777 ;;
778 # XXX: backwards compatibility
779 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100780 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100781 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100782 ;;
bellard7d132992003-03-06 23:23:54 +0000783 --enable-gprof) gprof="yes"
784 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000785 --enable-gcov) gcov="yes"
786 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100787 --static)
788 static="yes"
789 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300790 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000791 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200792 --mandir=*) mandir="$optarg"
793 ;;
794 --bindir=*) bindir="$optarg"
795 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300796 --libdir=*) libdir="$optarg"
797 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400798 --libexecdir=*) libexecdir="$optarg"
799 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200800 --includedir=*) includedir="$optarg"
801 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300802 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200803 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300804 --with-confsuffix=*) confsuffix="$optarg"
805 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300806 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200807 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100808 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600809 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300810 --localstatedir=*) local_statedir="$optarg"
811 ;;
812 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400813 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
814 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
815 # These switches are silently ignored, for compatibility with
816 # autoconf-generated configure scripts. This allows QEMU's
817 # configure to be used by RPM and similar macros that set
818 # lots of directory switches by default.
819 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200820 --with-system-pixman) pixman="system"
821 ;;
822 --without-system-pixman) pixman="internal"
823 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100824 --without-pixman) pixman="none"
825 ;;
bellard97a847b2003-08-10 21:36:04 +0000826 --disable-sdl) sdl="no"
827 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200828 --enable-sdl) sdl="yes"
829 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000830 --with-sdlabi=*) sdlabi="$optarg"
831 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200832 --disable-qom-cast-debug) qom_cast_debug="no"
833 ;;
834 --enable-qom-cast-debug) qom_cast_debug="yes"
835 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530836 --disable-virtfs) virtfs="no"
837 ;;
838 --enable-virtfs) virtfs="yes"
839 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100840 --disable-vnc) vnc="no"
841 ;;
842 --enable-vnc) vnc="yes"
843 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000844 --oss-lib=*) oss_lib="$optarg"
845 ;;
malc0c58ac12008-06-25 21:04:05 +0000846 --audio-drv-list=*) audio_drv_list="$optarg"
847 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200848 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800849 ;;
Stefan Weil89138852016-05-16 15:10:20 +0200850 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
Markus Armbrustereb852012009-10-27 18:41:44 +0100851 ;;
aurel32f8393942009-04-13 18:45:38 +0000852 --enable-debug-tcg) debug_tcg="yes"
853 ;;
854 --disable-debug-tcg) debug_tcg="no"
855 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100856 --enable-debug)
857 # Enable debugging options that aren't excessively noisy
858 debug_tcg="yes"
859 debug="yes"
860 strip_opt="no"
John Snowb553a042015-11-03 15:43:42 -0500861 fortify_source="no"
Paul Brookf3d08ee2009-06-04 11:39:04 +0100862 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000863 --enable-sparse) sparse="yes"
864 ;;
865 --disable-sparse) sparse="no"
866 ;;
aliguori1625af82009-04-05 17:41:02 +0000867 --disable-strip) strip_opt="no"
868 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000869 --disable-vnc-sasl) vnc_sasl="no"
870 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200871 --enable-vnc-sasl) vnc_sasl="yes"
872 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200873 --disable-vnc-jpeg) vnc_jpeg="no"
874 ;;
875 --enable-vnc-jpeg) vnc_jpeg="yes"
876 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200877 --disable-vnc-png) vnc_png="no"
878 ;;
879 --enable-vnc-png) vnc_png="yes"
880 ;;
bellard443f1372004-06-04 11:13:20 +0000881 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000882 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200883 --disable-uuid) uuid="no"
884 ;;
885 --enable-uuid) uuid="yes"
886 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000887 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000888 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200889 --enable-vde) vde="yes"
890 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100891 --disable-netmap) netmap="no"
892 ;;
893 --enable-netmap) netmap="yes"
894 ;;
aliguorie37630c2009-04-22 15:19:10 +0000895 --disable-xen) xen="no"
896 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200897 --enable-xen) xen="yes"
898 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000899 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
900 ;;
901 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
902 ;;
Ian Campbell64a7ad62016-01-15 13:23:44 +0000903 --disable-xen-pv-domain-build) xen_pv_domain_build="no"
904 ;;
905 --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
906 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000907 --disable-brlapi) brlapi="no"
908 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200909 --enable-brlapi) brlapi="yes"
910 ;;
balrogfb599c92008-09-28 23:49:55 +0000911 --disable-bluez) bluez="no"
912 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200913 --enable-bluez) bluez="yes"
914 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000915 --disable-kvm) kvm="no"
916 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200917 --enable-kvm) kvm="yes"
918 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200919 --disable-tcg-interpreter) tcg_interpreter="no"
920 ;;
921 --enable-tcg-interpreter) tcg_interpreter="yes"
922 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500923 --disable-cap-ng) cap_ng="no"
924 ;;
925 --enable-cap-ng) cap_ng="yes"
926 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100927 --disable-spice) spice="no"
928 ;;
929 --enable-spice) spice="yes"
930 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100931 --disable-libiscsi) libiscsi="no"
932 ;;
933 --enable-libiscsi) libiscsi="yes"
934 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100935 --disable-libnfs) libnfs="no"
936 ;;
937 --enable-libnfs) libnfs="yes"
938 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000939 --enable-profiler) profiler="yes"
940 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400941 --disable-cocoa) cocoa="no"
942 ;;
malcc2de5c92008-06-28 19:13:06 +0000943 --enable-cocoa)
944 cocoa="yes" ;
Stefan Weil89138852016-05-16 15:10:20 +0200945 audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
bellard1d14ffa2005-10-30 18:58:22 +0000946 ;;
pbrookcad25d62006-03-19 16:31:11 +0000947 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000948 ;;
pbrookcad25d62006-03-19 16:31:11 +0000949 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000950 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000951 --disable-user)
952 linux_user="no" ;
953 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000954 ;;
955 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000956 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000957 ;;
ths831b7822007-01-18 20:06:33 +0000958 --enable-linux-user) linux_user="yes"
959 ;;
blueswir184778502008-10-26 20:33:16 +0000960 --disable-bsd-user) bsd_user="no"
961 ;;
962 --enable-bsd-user) bsd_user="yes"
963 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200964 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300965 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200966 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300967 ;;
bellard85aa5182007-11-11 20:17:03 +0000968 --enable-werror) werror="yes"
969 ;;
970 --disable-werror) werror="no"
971 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100972 --enable-stack-protector) stack_protector="yes"
973 ;;
974 --disable-stack-protector) stack_protector="no"
975 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000976 --disable-curses) curses="no"
977 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200978 --enable-curses) curses="yes"
979 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200980 --disable-curl) curl="no"
981 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200982 --enable-curl) curl="yes"
983 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200984 --disable-fdt) fdt="no"
985 ;;
986 --enable-fdt) fdt="yes"
987 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +0200988 --disable-linux-aio) linux_aio="no"
989 ;;
990 --enable-linux-aio) linux_aio="yes"
991 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -0700992 --disable-attr) attr="no"
993 ;;
994 --enable-attr) attr="yes"
995 ;;
ths77755342008-11-27 15:45:16 +0000996 --disable-blobs) blobs="no"
997 ;;
pbrook4a19f1e2009-04-07 23:17:49 +0000998 --with-pkgversion=*) pkgversion=" ($optarg)"
999 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001000 --with-coroutine=*) coroutine="$optarg"
1001 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001002 --disable-coroutine-pool) coroutine_pool="no"
1003 ;;
1004 --enable-coroutine-pool) coroutine_pool="yes"
1005 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001006 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001007 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001008 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001009 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001010 --disable-vhost-net) vhost_net="no"
1011 ;;
1012 --enable-vhost-net) vhost_net="yes"
1013 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001014 --disable-vhost-scsi) vhost_scsi="no"
1015 ;;
1016 --enable-vhost-scsi) vhost_scsi="yes"
1017 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001018 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001019 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001020 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001021 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001022 --disable-rbd) rbd="no"
1023 ;;
1024 --enable-rbd) rbd="yes"
1025 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001026 --disable-xfsctl) xfs="no"
1027 ;;
1028 --enable-xfsctl) xfs="yes"
1029 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001030 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001031 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001032 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001033 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001034 --disable-libusb) libusb="no"
1035 ;;
1036 --enable-libusb) libusb="yes"
1037 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001038 --disable-usb-redir) usb_redir="no"
1039 ;;
1040 --enable-usb-redir) usb_redir="yes"
1041 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001042 --disable-zlib-test) zlib="no"
1043 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001044 --disable-lzo) lzo="no"
1045 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001046 --enable-lzo) lzo="yes"
1047 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001048 --disable-snappy) snappy="no"
1049 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001050 --enable-snappy) snappy="yes"
1051 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001052 --disable-bzip2) bzip2="no"
1053 ;;
1054 --enable-bzip2) bzip2="yes"
1055 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001056 --enable-guest-agent) guest_agent="yes"
1057 ;;
1058 --disable-guest-agent) guest_agent="no"
1059 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001060 --enable-guest-agent-msi) guest_agent_msi="yes"
1061 ;;
1062 --disable-guest-agent-msi) guest_agent_msi="no"
1063 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001064 --with-vss-sdk) vss_win32_sdk=""
1065 ;;
1066 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1067 ;;
1068 --without-vss-sdk) vss_win32_sdk="no"
1069 ;;
1070 --with-win-sdk) win_sdk=""
1071 ;;
1072 --with-win-sdk=*) win_sdk="$optarg"
1073 ;;
1074 --without-win-sdk) win_sdk="no"
1075 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001076 --enable-tools) want_tools="yes"
1077 ;;
1078 --disable-tools) want_tools="no"
1079 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001080 --enable-seccomp) seccomp="yes"
1081 ;;
1082 --disable-seccomp) seccomp="no"
1083 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301084 --disable-glusterfs) glusterfs="no"
1085 ;;
1086 --enable-glusterfs) glusterfs="yes"
1087 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001088 --disable-archipelago) archipelago="no"
1089 ;;
1090 --enable-archipelago) archipelago="yes"
1091 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001092 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1093 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001094 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001095 --disable-gtk) gtk="no"
1096 ;;
1097 --enable-gtk) gtk="yes"
1098 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001099 --disable-gnutls) gnutls="no"
1100 ;;
1101 --enable-gnutls) gnutls="yes"
1102 ;;
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001103 --disable-nettle) nettle="no"
1104 ;;
1105 --enable-nettle) nettle="yes"
1106 ;;
1107 --disable-gcrypt) gcrypt="no"
1108 ;;
1109 --enable-gcrypt) gcrypt="yes"
1110 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001111 --enable-rdma) rdma="yes"
1112 ;;
1113 --disable-rdma) rdma="no"
1114 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001115 --with-gtkabi=*) gtkabi="$optarg"
1116 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001117 --disable-vte) vte="no"
1118 ;;
1119 --enable-vte) vte="yes"
1120 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001121 --disable-virglrenderer) virglrenderer="no"
1122 ;;
1123 --enable-virglrenderer) virglrenderer="yes"
1124 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001125 --disable-tpm) tpm="no"
1126 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001127 --enable-tpm) tpm="yes"
1128 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001129 --disable-libssh2) libssh2="no"
1130 ;;
1131 --enable-libssh2) libssh2="yes"
1132 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001133 --enable-vhdx) vhdx="yes"
1134 ;;
1135 --disable-vhdx) vhdx="no"
1136 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001137 --disable-numa) numa="no"
1138 ;;
1139 --enable-numa) numa="yes"
1140 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001141 --disable-tcmalloc) tcmalloc="no"
1142 ;;
1143 --enable-tcmalloc) tcmalloc="yes"
1144 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001145 --disable-jemalloc) jemalloc="no"
1146 ;;
1147 --enable-jemalloc) jemalloc="yes"
1148 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001149 *)
1150 echo "ERROR: unknown option $opt"
1151 echo "Try '$0 --help' for more information"
1152 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001153 ;;
bellard7d132992003-03-06 23:23:54 +00001154 esac
1155done
1156
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001157if ! has $python; then
1158 error_exit "Python not found. Use --python=/path/to/python"
1159fi
1160
1161# Note that if the Python conditional here evaluates True we will exit
1162# with status 1 which is a shell 'false' value.
Markus Armbrusterfec21032015-09-04 21:53:03 +02001163if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1164 error_exit "Cannot use '$python', Python 2.6 or later is required." \
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001165 "Note that Python 3 or later is not yet supported." \
1166 "Use --python=/path/to/python to specify a supported Python."
1167fi
1168
Markus Armbrusterfec21032015-09-04 21:53:03 +02001169# Suppress writing compiled files
1170python="$python -B"
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001171
bellard40293e52008-01-31 11:32:10 +00001172case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001173 ppc)
1174 CPU_CFLAGS="-m32"
1175 LDFLAGS="-m32 $LDFLAGS"
1176 ;;
1177 ppc64)
1178 CPU_CFLAGS="-m64"
1179 LDFLAGS="-m64 $LDFLAGS"
1180 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001181 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001182 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001183 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001184 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001185 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001186 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001187 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001188 ;;
ths76d83bd2007-11-18 21:22:10 +00001189 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001190 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001191 LDFLAGS="-m31 $LDFLAGS"
1192 ;;
1193 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001194 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001195 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001196 ;;
bellard40293e52008-01-31 11:32:10 +00001197 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001198 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001199 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001200 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001201 ;;
1202 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001203 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001204 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001205 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001206 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001207 x32)
1208 CPU_CFLAGS="-mx32"
1209 LDFLAGS="-mx32 $LDFLAGS"
1210 cc_i386='$(CC) -m32'
1211 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001212 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001213esac
1214
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001215QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1216EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1217
Peter Maydellaffc88c2016-06-13 11:32:24 +01001218# For user-mode emulation the host arch has to be one we explicitly
1219# support, even if we're using TCI.
1220if [ "$ARCH" = "unknown" ]; then
1221 bsd_user="no"
1222 linux_user="no"
1223fi
1224
Peter Maydell60e0df22011-05-03 14:50:13 +01001225default_target_list=""
1226
Peter Maydell6e92f822013-05-20 16:16:15 +01001227mak_wilds=""
1228
1229if [ "$softmmu" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001231fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001232if [ "$linux_user" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001234fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001235if [ "$bsd_user" = "yes" ]; then
1236 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001237fi
1238
Peter Maydell6e92f822013-05-20 16:16:15 +01001239for config in $mak_wilds; do
1240 default_target_list="${default_target_list} $(basename "$config" .mak)"
1241done
1242
pbrookaf5db582006-04-08 14:26:41 +00001243if test x"$show_help" = x"yes" ; then
1244cat << EOF
1245
1246Usage: configure [options]
1247Options: [defaults in brackets after descriptions]
1248
Stefan Weil08fb77e2013-12-18 22:09:39 +01001249Standard options:
1250 --help print this message
1251 --prefix=PREFIX install in PREFIX [$prefix]
1252 --interp-prefix=PREFIX where to find shared libraries, etc.
1253 use %M for cpu name [$interp_prefix]
1254 --target-list=LIST set target list (default: build everything)
1255$(echo Available targets: $default_target_list | \
1256 fold -s -w 53 | sed -e 's/^/ /')
1257
1258Advanced options (experts only):
1259 --source-path=PATH path of source code [$source_path]
1260 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1261 --cc=CC use C compiler CC [$cc]
1262 --iasl=IASL use ACPI compiler IASL [$iasl]
1263 --host-cc=CC use C compiler CC [$host_cc] for code run at
1264 build time
1265 --cxx=CXX use C++ compiler CXX [$cxx]
1266 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1267 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1268 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1269 --make=MAKE use specified make [$make]
1270 --install=INSTALL use specified install [$install]
1271 --python=PYTHON use specified python [$python]
1272 --smbd=SMBD use specified smbd [$smbd]
1273 --static enable static build [$static]
1274 --mandir=PATH install man pages in PATH
1275 --datadir=PATH install firmware in PATH$confsuffix
1276 --docdir=PATH install documentation in PATH$confsuffix
1277 --bindir=PATH install binaries in PATH
1278 --libdir=PATH install libraries in PATH
1279 --sysconfdir=PATH install config in PATH$confsuffix
1280 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001281 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001282 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001283 --disable-strip disable stripping binaries
1284 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001285 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001286 --audio-drv-list=LIST set audio drivers list:
1287 Available drivers: $audio_possible_drivers
1288 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1289 --block-drv-rw-whitelist=L
1290 set block driver read-write whitelist
1291 (affects only QEMU, not qemu-img)
1292 --block-drv-ro-whitelist=L
1293 set block driver read-only whitelist
1294 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001295 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001296 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1297 --with-trace-file=NAME Full PATH,NAME of file to store traces
1298 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001299 --disable-slirp disable SLIRP userspace network connectivity
1300 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1301 --oss-lib path to OSS library
1302 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001303 --with-coroutine=BACKEND coroutine backend. Supported options:
1304 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001305 --enable-gcov enable test coverage analysis with gcov
1306 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001307 --disable-blobs disable installing provided firmware blobs
1308 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1309 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1310
1311Optional features, enabled with --enable-FEATURE and
1312disabled with --disable-FEATURE, default is enabled if available:
1313
1314 system all system emulation targets
1315 user supported user emulation targets
1316 linux-user all linux usermode emulation targets
1317 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001318 docs build documentation
1319 guest-agent build the QEMU Guest Agent
1320 guest-agent-msi build guest agent Windows MSI installation package
1321 pie Position Independent Executables
1322 modules modules support
1323 debug-tcg TCG debugging (default is disabled)
1324 debug-info debugging information
1325 sparse sparse checker
1326
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001327 gnutls GNUTLS cryptography support
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01001328 nettle nettle cryptography support
1329 gcrypt libgcrypt cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001330 sdl SDL UI
1331 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1332 gtk gtk UI
1333 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1334 vte vte support for the gtk UI
1335 curses curses UI
1336 vnc VNC UI support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001337 vnc-sasl SASL encryption for VNC server
1338 vnc-jpeg JPEG lossy compression for VNC server
1339 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001340 cocoa Cocoa UI (Mac OS X only)
1341 virtfs VirtFS
1342 xen xen backend driver support
1343 xen-pci-passthrough
1344 brlapi BrlAPI (Braile)
1345 curl curl connectivity
1346 fdt fdt device tree
1347 bluez bluez stack connectivity
1348 kvm KVM acceleration support
1349 rdma RDMA-based migration support
1350 uuid uuid support
1351 vde support for vde network
1352 netmap support for netmap network
1353 linux-aio Linux AIO support
1354 cap-ng libcap-ng support
1355 attr attr and xattr support
1356 vhost-net vhost-net acceleration support
1357 spice spice
1358 rbd rados block device (rbd)
1359 libiscsi iscsi support
1360 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001361 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001362 libusb libusb (for usb passthrough)
1363 usb-redir usb network redirection support
1364 lzo support of lzo compression library
1365 snappy support of snappy compression library
1366 bzip2 support of bzip2 compression library
1367 (for reading bzip2-compressed dmg images)
1368 seccomp seccomp support
1369 coroutine-pool coroutine freelist (better performance)
1370 glusterfs GlusterFS backend
1371 archipelago Archipelago backend
1372 tpm TPM support
1373 libssh2 ssh block device support
1374 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001375 numa libnuma support
1376 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001377 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001378
1379NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001380EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001381exit 0
pbrookaf5db582006-04-08 14:26:41 +00001382fi
1383
Peter Maydell359bc952011-12-24 13:07:25 +00001384# Now we have handled --enable-tcg-interpreter and know we're not just
1385# printing the help message, bail out if the host CPU isn't supported.
1386if test "$ARCH" = "unknown"; then
1387 if test "$tcg_interpreter" = "yes" ; then
1388 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
Peter Maydell359bc952011-12-24 13:07:25 +00001389 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001390 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001391 fi
1392fi
1393
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001394# Consult white-list to determine whether to enable werror
1395# by default. Only enable by default for git builds
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001396if test -z "$werror" ; then
1397 if test -d "$source_path/.git" -a \
Thomas Huthe4650c82016-06-08 10:13:26 +02001398 \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001399 werror="yes"
1400 else
1401 werror="no"
1402 fi
1403fi
1404
Paolo Bonzini8d050952010-12-23 11:43:52 +01001405# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001406write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001407if compile_object ; then
1408 : C compiler works ok
1409else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001410 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001411fi
Peter Maydell0ef74c72015-11-24 14:55:46 +00001412if ! compile_prog ; then
1413 error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1414fi
Paolo Bonzini8d050952010-12-23 11:43:52 +01001415
Peter Maydell98b21dc2014-02-20 15:10:16 +00001416# Check that the C++ compiler exists and works with the C compiler
1417if has $cxx; then
1418 cat > $TMPC <<EOF
1419int c_function(void);
1420int main(void) { return c_function(); }
1421EOF
1422
1423 compile_object
1424
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001425 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001426extern "C" {
1427 int c_function(void);
1428}
1429int c_function(void) { return 42; }
1430EOF
1431
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001432 update_cxxflags
1433
1434 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001435 # C++ compiler $cxx works ok with C compiler $cc
1436 :
1437 else
1438 echo "C++ compiler $cxx does not work with C compiler $cc"
1439 echo "Disabling C++ specific optional code"
1440 cxx=
1441 fi
1442else
1443 echo "No C++ compiler available; disabling C++ specific optional code"
1444 cxx=
1445fi
1446
Paolo Bonzini8d050952010-12-23 11:43:52 +01001447gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1448gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1449gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001450gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001451gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001452gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001453# Note that we do not add -Werror to gcc_flags here, because that would
1454# enable it for all configure tests. If a configure test failed due
1455# to -Werror this would just silently disable some features,
1456# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001457
1458cc_has_warning_flag() {
1459 write_c_skeleton;
1460
Peter Maydella1d29d62012-10-27 22:19:07 +01001461 # Use the positive sense of the flag when testing for -Wno-wombat
1462 # support (gcc will happily accept the -Wno- form of unknown
1463 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001464 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1465 compile_prog "-Werror $optflag" ""
1466}
1467
1468for flag in $gcc_flags; do
1469 if cc_has_warning_flag $flag ; then
1470 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001471 fi
1472done
1473
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001474if test "$stack_protector" != "no"; then
Rodrigo Rebellofccd35a2015-11-12 12:04:28 -02001475 cat > $TMPC << EOF
1476int main(int argc, char *argv[])
1477{
1478 char arr[64], *p = arr, *c = argv[0];
1479 while (*c) {
1480 *p++ = *c++;
1481 }
1482 return 0;
1483}
1484EOF
Steven Noonan63678e12014-03-28 17:19:02 +01001485 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001486 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001487 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001488 # We need to check both a compile and a link, since some compiler
1489 # setups fail only on a .c->.o compile and some only at link time
1490 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1491 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001492 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001493 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001494 break
1495 fi
1496 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001497 if test "$stack_protector" = yes; then
1498 if test $sp_on = 0; then
1499 error_exit "Stack protector not supported"
1500 fi
1501 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001502fi
1503
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001504# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1505# large functions that use global variables. The bug is in all releases of
1506# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1507# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1508cat > $TMPC << EOF
1509#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1510int main(void) { return 0; }
1511#else
1512#error No bug in this compiler.
1513#endif
1514EOF
1515if compile_prog "-Werror -fno-gcse" "" ; then
1516 TRANSLATE_OPT_CFLAGS=-fno-gcse
1517fi
1518
Avi Kivity40d64442011-11-15 20:12:17 +02001519if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001520 if test "$modules" = "yes" ; then
1521 error_exit "static and modules are mutually incompatible"
1522 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001523 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001524 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001525 else
1526 pie="no"
1527 fi
1528fi
1529
Emilio G. Cota768b7852015-04-29 13:09:02 +02001530# Unconditional check for compiler __thread support
1531 cat > $TMPC << EOF
1532static __thread int tls_var;
1533int main(void) { return tls_var; }
1534EOF
1535
1536if ! compile_prog "-Werror" "" ; then
1537 error_exit "Your compiler does not support the __thread specifier for " \
1538 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1539fi
1540
Avi Kivity40d64442011-11-15 20:12:17 +02001541if test "$pie" = ""; then
1542 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001543 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001544 ;;
1545 *)
1546 pie="no"
1547 ;;
1548 esac
1549fi
1550
1551if test "$pie" != "no" ; then
1552 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001553
1554#ifdef __linux__
1555# define THREAD __thread
1556#else
1557# define THREAD
1558#endif
1559
1560static THREAD int tls_var;
1561
1562int main(void) { return tls_var; }
1563
Avi Kivity40d64442011-11-15 20:12:17 +02001564EOF
1565 if compile_prog "-fPIE -DPIE" "-pie"; then
1566 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1567 LDFLAGS="-pie $LDFLAGS"
1568 pie="yes"
1569 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1570 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1571 fi
1572 else
1573 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001574 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001575 else
1576 echo "Disabling PIE due to missing toolchain support"
1577 pie="no"
1578 fi
1579 fi
Brad46eef332013-12-10 19:49:08 -05001580
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001581 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001582 CFLAGS_NOPIE="-fno-pie"
1583 LDFLAGS_NOPIE="-nopie"
1584 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001585fi
1586
Paolo Bonzini09dada42013-04-17 16:26:47 +02001587##########################################
1588# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1589# use i686 as default anyway, but for those that don't, an explicit
1590# specification is necessary
1591
1592if test "$cpu" = "i386"; then
1593 cat > $TMPC << EOF
1594static int sfaa(int *ptr)
1595{
1596 return __sync_fetch_and_and(ptr, 0);
1597}
1598
1599int main(void)
1600{
1601 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001602 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001603 sfaa(&val);
1604 return val;
1605}
1606EOF
1607 if ! compile_prog "" "" ; then
1608 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1609 fi
1610fi
1611
1612#########################################
bellardec530c82006-04-25 22:36:06 +00001613# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001614
bellardec530c82006-04-25 22:36:06 +00001615if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001616 if has $install; then
1617 :
1618 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001619 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1620 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1621 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001622 fi
Stefan Weil89138852016-05-16 15:10:20 +02001623 if test "$(path_of $install)" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001624 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1625 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1626 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001627 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001628 if has ar; then
1629 :
1630 else
bellardec530c82006-04-25 22:36:06 +00001631 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001632 error_exit "No path includes ar" \
1633 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001634 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001635 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001636 fi
ths5fafdf22007-09-16 21:08:06 +00001637fi
bellardec530c82006-04-25 22:36:06 +00001638
Stefan Weilafb63eb2012-09-26 22:04:38 +02001639if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001640 target_list="$default_target_list"
1641else
Stefan Weil89138852016-05-16 15:10:20 +02001642 target_list=$(echo "$target_list" | sed -e 's/,/ /g')
bellard5327cf42005-01-10 23:18:50 +00001643fi
Peter Maydell25b48332013-05-20 16:16:16 +01001644
1645# Check that we recognised the target name; this allows a more
1646# friendly error message than if we let it fall through.
1647for target in $target_list; do
1648 case " $default_target_list " in
1649 *" $target "*)
1650 ;;
1651 *)
1652 error_exit "Unknown target name '$target'"
1653 ;;
1654 esac
1655done
1656
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001657# see if system emulation was really requested
1658case " $target_list " in
1659 *"-softmmu "*) softmmu=yes
1660 ;;
1661 *) softmmu=no
1662 ;;
1663esac
bellard5327cf42005-01-10 23:18:50 +00001664
Juan Quintela249247c2009-08-12 18:20:25 +02001665feature_not_found() {
1666 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001667 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001668
Peter Maydell76ad07a2013-04-08 12:11:26 +01001669 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001670 "configure was not able to find it." \
1671 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001672}
1673
bellard7d132992003-03-06 23:23:54 +00001674# ---
1675# big/little endian test
1676cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001677short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1678short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1679extern int foo(short *, short *);
1680int main(int argc, char *argv[]) {
1681 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001682}
1683EOF
1684
Mike Frysinger61cc9192013-06-30 23:30:18 -04001685if compile_object ; then
1686 if grep -q BiGeNdIaN $TMPO ; then
1687 bigendian="yes"
1688 elif grep -q LiTtLeEnDiAn $TMPO ; then
1689 bigendian="no"
1690 else
1691 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001692 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001693else
1694 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001695fi
1696
Juan Quintelab0a47e72009-08-12 18:29:49 +02001697##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001698# cocoa implies not SDL or GTK
1699# (the cocoa UI code currently assumes it is always the active UI
1700# and doesn't interact well with other UI frontend code)
1701if test "$cocoa" = "yes"; then
1702 if test "$sdl" = "yes"; then
1703 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1704 fi
1705 if test "$gtk" = "yes"; then
1706 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1707 fi
1708 gtk=no
1709 sdl=no
1710fi
1711
1712##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001713# L2TPV3 probe
1714
1715cat > $TMPC <<EOF
1716#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001717#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001718int main(void) { return sizeof(struct mmsghdr); }
1719EOF
1720if compile_prog "" "" ; then
1721 l2tpv3=yes
1722else
1723 l2tpv3=no
1724fi
1725
1726##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001727# MinGW / Mingw-w64 localtime_r/gmtime_r check
1728
1729if test "$mingw32" = "yes"; then
1730 # Some versions of MinGW / Mingw-w64 lack localtime_r
1731 # and gmtime_r entirely.
1732 #
1733 # Some versions of Mingw-w64 define a macro for
1734 # localtime_r/gmtime_r.
1735 #
1736 # Some versions of Mingw-w64 will define functions
1737 # for localtime_r/gmtime_r, but only if you have
1738 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1739 # though, unistd.h and pthread.h both define
1740 # that for you.
1741 #
1742 # So this #undef localtime_r and #include <unistd.h>
1743 # are not in fact redundant.
1744cat > $TMPC << EOF
1745#include <unistd.h>
1746#include <time.h>
1747#undef localtime_r
1748int main(void) { localtime_r(NULL, NULL); return 0; }
1749EOF
1750 if compile_prog "" "" ; then
1751 localtime_r="yes"
1752 else
1753 localtime_r="no"
1754 fi
1755fi
1756
1757##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001758# pkg-config probe
1759
1760if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001761 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001762fi
1763
1764##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001765# NPTL probe
1766
Peter Maydell24cb36a2013-07-16 18:45:00 +01001767if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001768 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001769#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001770#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001771int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001772#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1773#error bork
1774#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001775 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001776}
1777EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001778 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001779 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001780 fi
pbrookbd0c5662008-05-29 14:34:11 +00001781fi
1782
bellard11d9f692004-04-02 20:55:59 +00001783##########################################
Liang Li99f2dbd2016-03-08 13:53:16 +08001784# avx2 optimization requirement check
1785
1786cat > $TMPC << EOF
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001787#pragma GCC push_options
1788#pragma GCC target("avx2")
1789#include <cpuid.h>
1790#include <immintrin.h>
1791
1792static int bar(void *a) {
1793 return _mm256_movemask_epi8(_mm256_cmpeq_epi8(*(__m256i *)a, (__m256i){0}));
1794}
Liang Li99f2dbd2016-03-08 13:53:16 +08001795static void *bar_ifunc(void) {return (void*) bar;}
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001796int foo(void *a) __attribute__((ifunc("bar_ifunc")));
1797int main(int argc, char *argv[]) { return foo(argv[0]);}
Liang Li99f2dbd2016-03-08 13:53:16 +08001798EOF
Dr. David Alan Gilbert4fb83202016-06-10 12:16:18 +01001799if compile_object "" ; then
Peter Maydell7dd929d2016-06-18 23:05:02 +01001800 if has readelf; then
1801 if readelf --syms $TMPO 2>/dev/null |grep -q "IFUNC.*foo"; then
1802 avx2_opt="yes"
1803 fi
Liang Li99f2dbd2016-03-08 13:53:16 +08001804 fi
1805fi
1806
1807#########################################
balrogac629222008-10-11 09:56:04 +00001808# zlib check
1809
Alon Levy1ece9902011-07-26 12:30:40 +03001810if test "$zlib" != "no" ; then
1811 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001812#include <zlib.h>
1813int main(void) { zlibVersion(); return 0; }
1814EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001815 if compile_prog "" "-lz" ; then
1816 :
1817 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001818 error_exit "zlib check failed" \
1819 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001820 fi
balrogac629222008-10-11 09:56:04 +00001821fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001822LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001823
1824##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001825# lzo check
1826
1827if test "$lzo" != "no" ; then
1828 cat > $TMPC << EOF
1829#include <lzo/lzo1x.h>
1830int main(void) { lzo_version(); return 0; }
1831EOF
1832 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001833 libs_softmmu="$libs_softmmu -llzo2"
1834 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001835 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001836 if test "$lzo" = "yes"; then
1837 feature_not_found "liblzo2" "Install liblzo2 devel"
1838 fi
1839 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001840 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001841fi
1842
1843##########################################
1844# snappy check
1845
1846if test "$snappy" != "no" ; then
1847 cat > $TMPC << EOF
1848#include <snappy-c.h>
1849int main(void) { snappy_max_compressed_length(4096); return 0; }
1850EOF
1851 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001852 libs_softmmu="$libs_softmmu -lsnappy"
1853 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001854 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001855 if test "$snappy" = "yes"; then
1856 feature_not_found "libsnappy" "Install libsnappy devel"
1857 fi
1858 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001859 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001860fi
1861
1862##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001863# bzip2 check
1864
1865if test "$bzip2" != "no" ; then
1866 cat > $TMPC << EOF
1867#include <bzlib.h>
1868int main(void) { BZ2_bzlibVersion(); return 0; }
1869EOF
1870 if compile_prog "" "-lbz2" ; then
1871 bzip2="yes"
1872 else
1873 if test "$bzip2" = "yes"; then
1874 feature_not_found "libbzip2" "Install libbzip2 devel"
1875 fi
1876 bzip2="no"
1877 fi
1878fi
1879
1880##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001881# libseccomp check
1882
1883if test "$seccomp" != "no" ; then
Andrew Jones693e5912015-09-30 11:59:18 -04001884 case "$cpu" in
1885 i386|x86_64)
dann frazierba060c52015-10-23 15:34:22 -06001886 libseccomp_minver="2.1.0"
Andrew Jones693e5912015-09-30 11:59:18 -04001887 ;;
James Hogan5ce43972016-04-08 14:16:34 +01001888 mips)
1889 libseccomp_minver="2.2.0"
1890 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001891 arm|aarch64)
1892 libseccomp_minver="2.2.3"
1893 ;;
Michael Strosaker3e684452016-06-01 18:30:18 -05001894 ppc|ppc64)
1895 libseccomp_minver="2.3.0"
1896 ;;
Andrew Jones693e5912015-09-30 11:59:18 -04001897 *)
1898 libseccomp_minver=""
1899 ;;
1900 esac
1901
1902 if test "$libseccomp_minver" != "" &&
1903 $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
Stefan Weil89138852016-05-16 15:10:20 +02001904 libs_softmmu="$libs_softmmu $($pkg_config --libs libseccomp)"
1905 QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
Andrew Jones693e5912015-09-30 11:59:18 -04001906 seccomp="yes"
Eduardo Otubof7945732012-08-14 18:44:05 -03001907 else
Andrew Jones693e5912015-09-30 11:59:18 -04001908 if test "$seccomp" = "yes" ; then
1909 if test "$libseccomp_minver" != "" ; then
1910 feature_not_found "libseccomp" \
1911 "Install libseccomp devel >= $libseccomp_minver"
1912 else
1913 feature_not_found "libseccomp" \
1914 "libseccomp is not supported for host cpu $cpu"
1915 fi
1916 fi
1917 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001918 fi
1919fi
1920##########################################
aliguorie37630c2009-04-22 15:19:10 +00001921# xen probe
1922
Juan Quintelafc321b42009-08-12 18:29:55 +02001923if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001924 xen_libs="-lxenstore -lxenctrl -lxenguest"
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001925 xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001926
Stefan Weil50ced5b2011-12-17 09:27:39 +01001927 # First we test whether Xen headers and libraries are available.
1928 # If no, we are done and there is no Xen support.
1929 # If yes, more tests are run to detect the Xen version.
1930
1931 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001932 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001933#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001934int main(void) {
1935 return 0;
1936}
1937EOF
1938 if ! compile_prog "" "$xen_libs" ; then
1939 # Xen not found
1940 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001941 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001942 fi
1943 xen=no
1944
1945 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001946 elif
1947 cat > $TMPC <<EOF &&
Ian Campbell5eeb39c2016-01-15 13:23:42 +00001948/*
1949 * If we have stable libs the we don't want the libxc compat
1950 * layers, regardless of what CFLAGS we may have been given.
1951 */
1952#undef XC_WANT_COMPAT_EVTCHN_API
1953#undef XC_WANT_COMPAT_GNTTAB_API
1954#undef XC_WANT_COMPAT_MAP_FOREIGN_API
1955#include <xenctrl.h>
1956#include <xenstore.h>
1957#include <xenevtchn.h>
1958#include <xengnttab.h>
1959#include <xenforeignmemory.h>
1960#include <stdint.h>
1961#include <xen/hvm/hvm_info_table.h>
1962#if !defined(HVM_MAX_VCPUS)
1963# error HVM_MAX_VCPUS not defined
1964#endif
1965int main(void) {
1966 xc_interface *xc = NULL;
1967 xenforeignmemory_handle *xfmem;
1968 xenevtchn_handle *xe;
1969 xengnttab_handle *xg;
1970 xen_domain_handle_t handle;
1971
1972 xs_daemon_open();
1973
1974 xc = xc_interface_open(0, 0, 0);
1975 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1976 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1977 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1978 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1979 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
1980
1981 xfmem = xenforeignmemory_open(0, 0);
1982 xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
1983
1984 xe = xenevtchn_open(0, 0);
1985 xenevtchn_fd(xe);
1986
1987 xg = xengnttab_open(0, 0);
1988 xengnttab_map_grant_ref(xg, 0, 0, 0);
1989
1990 return 0;
1991}
1992EOF
1993 compile_prog "" "$xen_libs $xen_stable_libs"
1994 then
1995 xen_ctrl_version=471
1996 xen=yes
1997 elif
1998 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001999#include <xenctrl.h>
Roger Pau Monnecdadde32015-11-13 17:38:06 +00002000#include <stdint.h>
2001int main(void) {
2002 xc_interface *xc = NULL;
2003 xen_domain_handle_t handle;
2004 xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2005 return 0;
2006}
2007EOF
2008 compile_prog "" "$xen_libs"
2009 then
2010 xen_ctrl_version=470
2011 xen=yes
2012
2013 # Xen 4.6
2014 elif
2015 cat > $TMPC <<EOF &&
2016#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00002017#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002018#include <stdint.h>
2019#include <xen/hvm/hvm_info_table.h>
2020#if !defined(HVM_MAX_VCPUS)
2021# error HVM_MAX_VCPUS not defined
2022#endif
2023int main(void) {
2024 xc_interface *xc;
2025 xs_daemon_open();
2026 xc = xc_interface_open(0, 0, 0);
2027 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2028 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002029 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002030 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002031 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04002032 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06002033 return 0;
2034}
2035EOF
2036 compile_prog "" "$xen_libs"
2037 then
2038 xen_ctrl_version=460
2039 xen=yes
2040
2041 # Xen 4.5
2042 elif
2043 cat > $TMPC <<EOF &&
2044#include <xenctrl.h>
2045#include <xenstore.h>
2046#include <stdint.h>
2047#include <xen/hvm/hvm_info_table.h>
2048#if !defined(HVM_MAX_VCPUS)
2049# error HVM_MAX_VCPUS not defined
2050#endif
2051int main(void) {
2052 xc_interface *xc;
2053 xs_daemon_open();
2054 xc = xc_interface_open(0, 0, 0);
2055 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2056 xc_gnttab_open(NULL, 0);
2057 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2058 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00002059 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2060 return 0;
2061}
2062EOF
2063 compile_prog "" "$xen_libs"
2064 then
2065 xen_ctrl_version=450
2066 xen=yes
2067
2068 elif
2069 cat > $TMPC <<EOF &&
2070#include <xenctrl.h>
2071#include <xenstore.h>
2072#include <stdint.h>
2073#include <xen/hvm/hvm_info_table.h>
2074#if !defined(HVM_MAX_VCPUS)
2075# error HVM_MAX_VCPUS not defined
2076#endif
2077int main(void) {
2078 xc_interface *xc;
2079 xs_daemon_open();
2080 xc = xc_interface_open(0, 0, 0);
2081 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2082 xc_gnttab_open(NULL, 0);
2083 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2084 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002085 return 0;
2086}
2087EOF
2088 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002089 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00002090 xen_ctrl_version=420
2091 xen=yes
2092
Juan Quintelab2266be2009-07-27 16:13:16 +02002093 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002094 if test "$xen" = "yes" ; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002095 feature_not_found "xen (unsupported version)" \
2096 "Install a supported xen (xen 4.2 or newer)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002097 fi
2098 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002099 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002100
2101 if test "$xen" = yes; then
Ian Campbell5eeb39c2016-01-15 13:23:42 +00002102 if test $xen_ctrl_version -ge 471 ; then
2103 libs_softmmu="$xen_stable_libs $libs_softmmu"
2104 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002105 libs_softmmu="$xen_libs $libs_softmmu"
2106 fi
aliguorie37630c2009-04-22 15:19:10 +00002107fi
2108
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002109if test "$xen_pci_passthrough" != "no"; then
Ian Campbelledfb07e2016-02-10 11:07:01 +00002110 if test "$xen" = "yes" && test "$linux" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002111 xen_pci_passthrough=yes
2112 else
2113 if test "$xen_pci_passthrough" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002114 error_exit "User requested feature Xen PCI Passthrough" \
2115 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002116 fi
2117 xen_pci_passthrough=no
2118 fi
2119fi
2120
Ian Campbell64a7ad62016-01-15 13:23:44 +00002121if test "$xen_pv_domain_build" = "yes" &&
2122 test "$xen" != "yes"; then
2123 error_exit "User requested Xen PV domain builder support" \
2124 "which requires Xen support."
2125fi
2126
aliguorie37630c2009-04-22 15:19:10 +00002127##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002128# Sparse probe
2129if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002130 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002131 sparse=yes
2132 else
2133 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002134 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002135 fi
2136 sparse=no
2137 fi
2138fi
2139
2140##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002141# X11 probe
2142x11_cflags=
2143x11_libs=-lX11
2144if $pkg_config --exists "x11"; then
Stefan Weil89138852016-05-16 15:10:20 +02002145 x11_cflags=$($pkg_config --cflags x11)
2146 x11_libs=$($pkg_config --libs x11)
Jeremy Whitef676c672015-01-09 13:08:49 -06002147fi
2148
2149##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002150# GTK probe
2151
Stefan Weil9e04c682014-05-17 16:29:18 +02002152if test "$gtkabi" = ""; then
2153 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2154 # Use 3.0 as a fallback if that is available.
2155 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2156 gtkabi=2.0
2157 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2158 gtkabi=3.0
2159 else
2160 gtkabi=2.0
2161 fi
2162fi
2163
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002164if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002165 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002166 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002167 if test "$gtkabi" = "3.0" ; then
2168 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002169 else
2170 gtkversion="2.18.0"
2171 fi
2172 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002173 gtk_cflags=$($pkg_config --cflags $gtkpackage)
2174 gtk_libs=$($pkg_config --libs $gtkpackage)
2175 gtk_version=$($pkg_config --modversion $gtkpackage)
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002176 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002177 gtk_cflags="$gtk_cflags $x11_cflags"
2178 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002179 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002180 libs_softmmu="$gtk_libs $libs_softmmu"
2181 gtk="yes"
2182 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002183 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002184 else
2185 gtk="no"
2186 fi
2187fi
2188
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002189
2190##########################################
2191# GNUTLS probe
2192
Peter Maydell37371292015-07-24 18:28:08 +01002193gnutls_works() {
2194 # Unfortunately some distros have bad pkg-config information for gnutls
2195 # such that it claims to exist but you get a compiler error if you try
2196 # to use the options returned by --libs. Specifically, Ubuntu for --static
2197 # builds doesn't work:
2198 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2199 #
2200 # So sanity check the cflags/libs before assuming gnutls can be used.
2201 if ! $pkg_config --exists "gnutls"; then
2202 return 1
2203 fi
2204
2205 write_c_skeleton
2206 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2207}
2208
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002209gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002210gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002211if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002212 if gnutls_works; then
Stefan Weil89138852016-05-16 15:10:20 +02002213 gnutls_cflags=$($pkg_config --cflags gnutls)
2214 gnutls_libs=$($pkg_config --libs gnutls)
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002215 libs_softmmu="$gnutls_libs $libs_softmmu"
2216 libs_tools="$gnutls_libs $libs_tools"
2217 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2218 gnutls="yes"
2219
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002220 # gnutls_rnd requires >= 2.11.0
2221 if $pkg_config --exists "gnutls >= 2.11.0"; then
2222 gnutls_rnd="yes"
2223 else
2224 gnutls_rnd="no"
2225 fi
2226
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002227 if $pkg_config --exists 'gnutls >= 3.0'; then
2228 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002229 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002230 elif $pkg_config --exists 'gnutls >= 2.12'; then
Stefan Weil89138852016-05-16 15:10:20 +02002231 case $($pkg_config --libs --static gnutls) in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002232 *gcrypt*)
2233 gnutls_gcrypt=yes
2234 gnutls_nettle=no
2235 ;;
2236 *nettle*)
2237 gnutls_gcrypt=no
2238 gnutls_nettle=yes
2239 ;;
2240 *)
2241 gnutls_gcrypt=yes
2242 gnutls_nettle=no
2243 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002244 esac
2245 else
2246 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002247 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002248 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002249 elif test "$gnutls" = "yes"; then
2250 feature_not_found "gnutls" "Install gnutls devel"
2251 else
2252 gnutls="no"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002253 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002254 fi
2255else
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09002256 gnutls_rnd="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002257fi
2258
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002259
2260# If user didn't give a --disable/enable-gcrypt flag,
2261# then mark as disabled if user requested nettle
2262# explicitly, or if gnutls links to nettle
2263if test -z "$gcrypt"
2264then
2265 if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2266 then
2267 gcrypt="no"
2268 fi
2269fi
2270
2271# If user didn't give a --disable/enable-nettle flag,
2272# then mark as disabled if user requested gcrypt
2273# explicitly, or if gnutls links to gcrypt
2274if test -z "$nettle"
2275then
2276 if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2277 then
2278 nettle="no"
2279 fi
2280fi
2281
2282has_libgcrypt_config() {
2283 if ! has "libgcrypt-config"
2284 then
2285 return 1
2286 fi
2287
2288 if test -n "$cross_prefix"
2289 then
Stefan Weil89138852016-05-16 15:10:20 +02002290 host=$(libgcrypt-config --host)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002291 if test "$host-" != $cross_prefix
2292 then
2293 return 1
2294 fi
2295 fi
2296
2297 return 0
2298}
2299
2300if test "$gcrypt" != "no"; then
2301 if has_libgcrypt_config; then
Stefan Weil89138852016-05-16 15:10:20 +02002302 gcrypt_cflags=$(libgcrypt-config --cflags)
2303 gcrypt_libs=$(libgcrypt-config --libs)
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002304 # Debian has remove -lgpg-error from libgcrypt-config
2305 # as it "spreads unnecessary dependencies" which in
2306 # turn breaks static builds...
2307 if test "$static" = "yes"
2308 then
2309 gcrypt_libs="$gcrypt_libs -lgpg-error"
2310 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002311 libs_softmmu="$gcrypt_libs $libs_softmmu"
2312 libs_tools="$gcrypt_libs $libs_tools"
2313 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002314 gcrypt="yes"
2315 if test -z "$nettle"; then
2316 nettle="no"
2317 fi
Daniel P. Berrange37788f22015-10-14 13:14:04 +01002318
2319 cat > $TMPC << EOF
2320#include <gcrypt.h>
2321int main(void) {
2322 gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2323 GCRY_MD_SHA256,
2324 NULL, 0, 0, 0, NULL);
2325 return 0;
2326}
2327EOF
2328 if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2329 gcrypt_kdf=yes
2330 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002331 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002332 if test "$gcrypt" = "yes"; then
2333 feature_not_found "gcrypt" "Install gcrypt devel"
2334 else
2335 gcrypt="no"
2336 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002337 fi
2338fi
2339
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002340
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002341if test "$nettle" != "no"; then
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002342 if $pkg_config --exists "nettle"; then
Stefan Weil89138852016-05-16 15:10:20 +02002343 nettle_cflags=$($pkg_config --cflags nettle)
2344 nettle_libs=$($pkg_config --libs nettle)
2345 nettle_version=$($pkg_config --modversion nettle)
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002346 libs_softmmu="$nettle_libs $libs_softmmu"
2347 libs_tools="$nettle_libs $libs_tools"
2348 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002349 nettle="yes"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002350
2351 cat > $TMPC << EOF
Steven Luo9e87a692016-05-26 21:53:13 -07002352#include <stddef.h>
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01002353#include <nettle/pbkdf2.h>
2354int main(void) {
2355 pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2356 return 0;
2357}
2358EOF
2359 if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2360 nettle_kdf=yes
2361 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002362 else
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002363 if test "$nettle" = "yes"; then
2364 feature_not_found "nettle" "Install nettle devel"
2365 else
2366 nettle="no"
2367 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002368 fi
2369fi
2370
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01002371if test "$gcrypt" = "yes" && test "$nettle" = "yes"
2372then
2373 error_exit "Only one of gcrypt & nettle can be enabled"
2374fi
2375
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002376##########################################
2377# libtasn1 - only for the TLS creds/session test suite
2378
2379tasn1=yes
Daniel P. Berrange90246032015-09-21 17:25:34 +01002380tasn1_cflags=""
2381tasn1_libs=""
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002382if $pkg_config --exists "libtasn1"; then
Stefan Weil89138852016-05-16 15:10:20 +02002383 tasn1_cflags=$($pkg_config --cflags libtasn1)
2384 tasn1_libs=$($pkg_config --libs libtasn1)
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002385else
2386 tasn1=no
2387fi
2388
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002389
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002390##########################################
Daniel P. Berrange559607e2015-02-27 16:19:33 +00002391# getifaddrs (for tests/test-io-channel-socket )
2392
2393have_ifaddrs_h=yes
2394if ! check_include "ifaddrs.h" ; then
2395 have_ifaddrs_h=no
2396fi
2397
2398##########################################
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002399# VTE probe
2400
2401if test "$vte" != "no"; then
2402 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002403 vteminversion="0.32.0"
2404 if $pkg_config --exists "vte-2.91"; then
2405 vtepackage="vte-2.91"
2406 else
2407 vtepackage="vte-2.90"
2408 fi
Daniel P. Berrange528de902013-02-25 15:20:44 +00002409 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002410 vtepackage="vte"
Cole Robinsonc6feff92016-05-06 14:03:12 -04002411 vteminversion="0.24.0"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002412 fi
Cole Robinsonc6feff92016-05-06 14:03:12 -04002413 if $pkg_config --exists "$vtepackage >= $vteminversion"; then
Stefan Weil89138852016-05-16 15:10:20 +02002414 vte_cflags=$($pkg_config --cflags $vtepackage)
2415 vte_libs=$($pkg_config --libs $vtepackage)
2416 vteversion=$($pkg_config --modversion $vtepackage)
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002417 libs_softmmu="$vte_libs $libs_softmmu"
2418 vte="yes"
2419 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002420 if test "$gtkabi" = "3.0"; then
Cole Robinsonc6feff92016-05-06 14:03:12 -04002421 feature_not_found "vte" "Install libvte-2.90/2.91 devel"
Stefan Weil9e04c682014-05-17 16:29:18 +02002422 else
2423 feature_not_found "vte" "Install libvte devel"
2424 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002425 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002426 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002427 fi
2428fi
2429
2430##########################################
bellard11d9f692004-04-02 20:55:59 +00002431# SDL probe
2432
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002433# Look for sdl configuration program (pkg-config or sdl-config). Try
2434# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002435
Cole Robinsonee8466d2016-05-06 14:03:07 -04002436if test "$sdlabi" = ""; then
2437 if $pkg_config --exists "sdl"; then
2438 sdlabi=1.2
2439 elif $pkg_config --exists "sdl2"; then
2440 sdlabi=2.0
2441 else
2442 sdlabi=1.2
2443 fi
2444fi
2445
Dave Airlie47c03742013-12-10 14:05:51 +10002446if test $sdlabi = "2.0"; then
2447 sdl_config=$sdl2_config
2448 sdlname=sdl2
2449 sdlconfigname=sdl2_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002450elif test $sdlabi = "1.2"; then
Dave Airlie47c03742013-12-10 14:05:51 +10002451 sdlname=sdl
2452 sdlconfigname=sdl_config
Cole Robinsone07047c2016-05-06 14:03:08 -04002453else
2454 error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002455fi
2456
Stefan Weil89138852016-05-16 15:10:20 +02002457if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
Dave Airlie47c03742013-12-10 14:05:51 +10002458 sdl_config=$sdlconfigname
2459fi
2460
2461if $pkg_config $sdlname --exists; then
2462 sdlconfig="$pkg_config $sdlname"
Stefan Weil89138852016-05-16 15:10:20 +02002463 sdlversion=$($sdlconfig --modversion 2>/dev/null)
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002464elif has ${sdl_config}; then
2465 sdlconfig="$sdl_config"
Stefan Weil89138852016-05-16 15:10:20 +02002466 sdlversion=$($sdlconfig --version)
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002467else
2468 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002469 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002470 fi
2471 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002472fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002473if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002474 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2475fi
bellard11d9f692004-04-02 20:55:59 +00002476
Paolo Bonzini9316f802010-01-13 09:52:55 +01002477sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002478if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002479 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002480#include <SDL.h>
2481#undef main /* We don't want SDL to override our main() */
2482int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2483EOF
Stefan Weil89138852016-05-16 15:10:20 +02002484 sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002485 if test "$static" = "yes" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002486 sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002487 else
Stefan Weil89138852016-05-16 15:10:20 +02002488 sdl_libs=$($sdlconfig --libs 2>/dev/null)
TeLeMan74f42e12010-02-08 13:56:44 +08002489 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002490 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Stefan Weil89138852016-05-16 15:10:20 +02002491 if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002492 sdl_too_old=yes
2493 else
Peter Maydella30878e2015-08-14 16:10:52 +01002494 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002495 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002496
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002497 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002498 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002499 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weil89138852016-05-16 15:10:20 +02002500 sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2501 sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
Juan Quintelaac119f92009-07-27 16:13:15 +02002502 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002503 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002504 :
2505 else
2506 sdl=no
2507 fi
2508 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002509 else # sdl not found
2510 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002511 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002512 fi
2513 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002514 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002515fi
bellard11d9f692004-04-02 20:55:59 +00002516
aliguori5368a422009-03-03 17:37:21 +00002517if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002518 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002519#include <SDL.h>
2520#if defined(SDL_VIDEO_DRIVER_X11)
2521#include <X11/XKBlib.h>
2522#else
2523#error No x11 support
2524#endif
2525int main(void) { return 0; }
2526EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002527 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2528 sdl_cflags="$sdl_cflags $x11_cflags"
2529 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002530 fi
Juan Quintela07056672009-08-03 14:46:27 +02002531 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002532fi
2533
ths8f28f3f2007-01-05 21:25:54 +00002534##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002535# RDMA needs OpenFabrics libraries
2536if test "$rdma" != "no" ; then
2537 cat > $TMPC <<EOF
2538#include <rdma/rdma_cma.h>
2539int main(void) { return 0; }
2540EOF
2541 rdma_libs="-lrdmacm -libverbs"
2542 if compile_prog "" "$rdma_libs" ; then
2543 rdma="yes"
2544 libs_softmmu="$libs_softmmu $rdma_libs"
2545 else
2546 if test "$rdma" = "yes" ; then
2547 error_exit \
2548 " OpenFabrics librdmacm/libibverbs not present." \
2549 " Your options:" \
2550 " (1) Fast: Install infiniband packages from your distro." \
2551 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2552 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2553 fi
2554 rdma="no"
2555 fi
2556fi
2557
ths8d5d2d42007-08-25 01:37:51 +00002558
2559##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002560# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002561if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002562 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002563#include <sasl/sasl.h>
2564#include <stdio.h>
2565int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2566EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002567 # Assuming Cyrus-SASL installed in /usr prefix
2568 vnc_sasl_cflags=""
2569 vnc_sasl_libs="-lsasl2"
2570 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2571 vnc_sasl=yes
2572 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002573 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002574 else
2575 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002576 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002577 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002578 vnc_sasl=no
2579 fi
aliguori2f9606b2009-03-06 20:27:28 +00002580fi
2581
2582##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002583# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002584if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002585cat > $TMPC <<EOF
2586#include <stdio.h>
2587#include <jpeglib.h>
2588int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2589EOF
2590 vnc_jpeg_cflags=""
2591 vnc_jpeg_libs="-ljpeg"
2592 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2593 vnc_jpeg=yes
2594 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002595 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002596 else
2597 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002598 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002599 fi
2600 vnc_jpeg=no
2601 fi
2602fi
2603
2604##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002605# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002606if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002607cat > $TMPC <<EOF
2608//#include <stdio.h>
2609#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002610#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002611int main(void) {
2612 png_structp png_ptr;
2613 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002614 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002615}
2616EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002617 if $pkg_config libpng --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02002618 vnc_png_cflags=$($pkg_config libpng --cflags)
2619 vnc_png_libs=$($pkg_config libpng --libs)
Brad9af80252011-07-30 01:45:55 -04002620 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002621 vnc_png_cflags=""
2622 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002623 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002624 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2625 vnc_png=yes
2626 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002627 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002628 else
2629 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002630 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002631 fi
2632 vnc_png=no
2633 fi
2634fi
2635
2636##########################################
aliguori76655d62009-03-06 20:27:37 +00002637# fnmatch() probe, used for ACL routines
2638fnmatch="no"
2639cat > $TMPC << EOF
2640#include <fnmatch.h>
2641int main(void)
2642{
2643 fnmatch("foo", "foo", 0);
2644 return 0;
2645}
2646EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002647if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002648 fnmatch="yes"
2649fi
2650
2651##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002652# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002653# Note that on some systems (notably MacOSX) no extra library
2654# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002655if test "$uuid" != "no" ; then
2656 uuid_libs="-luuid"
2657 cat > $TMPC << EOF
2658#include <uuid/uuid.h>
2659int main(void)
2660{
2661 uuid_t my_uuid;
2662 uuid_generate(my_uuid);
2663 return 0;
2664}
2665EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002666 if compile_prog "" "" ; then
2667 uuid="yes"
2668 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002669 uuid="yes"
2670 libs_softmmu="$uuid_libs $libs_softmmu"
2671 libs_tools="$uuid_libs $libs_tools"
2672 else
2673 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002674 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002675 fi
2676 uuid=no
2677 fi
2678fi
2679
Jeff Cody4f18b782013-10-30 10:44:39 -04002680if test "$vhdx" = "yes" ; then
2681 if test "$uuid" = "no" ; then
2682 error_exit "uuid required for VHDX support"
2683 fi
2684elif test "$vhdx" != "no" ; then
2685 if test "$uuid" = "yes" ; then
2686 vhdx=yes
2687 else
2688 vhdx=no
2689 fi
2690fi
2691
Stefan Weilee682d22009-10-01 20:10:37 +02002692##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002693# xfsctl() probe, used for raw-posix
2694if test "$xfs" != "no" ; then
2695 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002696#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002697#include <xfs/xfs.h>
2698int main(void)
2699{
2700 xfsctl(NULL, 0, 0, NULL);
2701 return 0;
2702}
2703EOF
2704 if compile_prog "" "" ; then
2705 xfs="yes"
2706 else
2707 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002708 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002709 fi
2710 xfs=no
2711 fi
2712fi
2713
2714##########################################
ths8a16d272008-07-19 09:56:24 +00002715# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002716if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002717 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002718 cat > $TMPC << EOF
2719#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002720int main(void)
2721{
2722 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002723 char s[] = "";
2724 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002725 return 0;
2726}
ths8a16d272008-07-19 09:56:24 +00002727EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002728 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002729 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002730 libs_softmmu="$vde_libs $libs_softmmu"
2731 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002732 else
2733 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002734 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002735 fi
2736 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002737 fi
ths8a16d272008-07-19 09:56:24 +00002738fi
2739
2740##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002741# netmap support probe
2742# Apart from looking for netmap headers, we make sure that the host API version
2743# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2744# a minor/major version number. Minor new features will be marked with values up
2745# to 15, and if something happens that requires a change to the backend we will
2746# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002747if test "$netmap" != "no" ; then
2748 cat > $TMPC << EOF
2749#include <inttypes.h>
2750#include <net/if.h>
2751#include <net/netmap.h>
2752#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002753#if (NETMAP_API < 11) || (NETMAP_API > 15)
2754#error
2755#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002756int main(void) { return 0; }
2757EOF
2758 if compile_prog "" "" ; then
2759 netmap=yes
2760 else
2761 if test "$netmap" = "yes" ; then
2762 feature_not_found "netmap"
2763 fi
2764 netmap=no
2765 fi
2766fi
2767
2768##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002769# libcap-ng library probe
2770if test "$cap_ng" != "no" ; then
2771 cap_libs="-lcap-ng"
2772 cat > $TMPC << EOF
2773#include <cap-ng.h>
2774int main(void)
2775{
2776 capng_capability_to_name(CAPNG_EFFECTIVE);
2777 return 0;
2778}
2779EOF
2780 if compile_prog "" "$cap_libs" ; then
2781 cap_ng=yes
2782 libs_tools="$cap_libs $libs_tools"
2783 else
2784 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002785 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002786 fi
2787 cap_ng=no
2788 fi
2789fi
2790
2791##########################################
malcc2de5c92008-06-28 19:13:06 +00002792# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002793
malcc2de5c92008-06-28 19:13:06 +00002794audio_drv_probe()
2795{
2796 drv=$1
2797 hdr=$2
2798 lib=$3
2799 exp=$4
2800 cfl=$5
2801 cat > $TMPC << EOF
2802#include <$hdr>
2803int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002804EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002805 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002806 :
2807 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002808 error_exit "$drv check failed" \
2809 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002810 fi
2811}
2812
Stefan Weil89138852016-05-16 15:10:20 +02002813audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
malcc2de5c92008-06-28 19:13:06 +00002814for drv in $audio_drv_list; do
2815 case $drv in
2816 alsa)
2817 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002818 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002819 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002820 ;;
2821
malcb8e59f12008-07-02 21:03:08 +00002822 pa)
Peter Krempae58ff622016-05-11 12:31:04 +02002823 audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
2824 "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002825 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002826 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002827 ;;
2828
Juan Quintela997e6902009-08-03 14:46:29 +02002829 coreaudio)
2830 libs_softmmu="-framework CoreAudio $libs_softmmu"
2831 ;;
2832
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002833 dsound)
2834 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002835 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002836 ;;
2837
2838 oss)
2839 libs_softmmu="$oss_lib $libs_softmmu"
2840 ;;
2841
2842 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002843 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2844 ;;
2845
malce4c63a62008-07-19 16:15:16 +00002846 *)
malc1c9b2a52008-07-19 16:57:30 +00002847 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002848 error_exit "Unknown driver '$drv' selected" \
2849 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002850 }
2851 ;;
malcc2de5c92008-06-28 19:13:06 +00002852 esac
2853done
ths8f28f3f2007-01-05 21:25:54 +00002854
balrog4d3b6f62008-02-10 16:33:14 +00002855##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002856# BrlAPI probe
2857
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002858if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002859 brlapi_libs="-lbrlapi"
2860 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002861#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002862#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002863int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2864EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002865 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002866 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002867 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002868 else
2869 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002870 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002871 fi
2872 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002873 fi
2874fi
aurel322e4d9fb2008-04-08 06:01:02 +00002875
2876##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002877# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002878if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002879 if test "$mingw32" = "yes" ; then
Stefan Weilae629632016-03-16 21:27:25 +01002880 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002881 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002882 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002883 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002884 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002885 cat > $TMPC << EOF
2886#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002887int main(void) {
2888 const char *s = curses_version();
2889 resize_term(0, 0);
2890 return s != 0;
2891}
balrog4d3b6f62008-02-10 16:33:14 +00002892EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002893 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002894 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002895 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002896 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002897 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002898 libs_softmmu="$curses_lib $libs_softmmu"
2899 break
2900 fi
2901 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002902 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002903 if test "$curses_found" = "yes" ; then
2904 curses=yes
2905 else
2906 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002907 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002908 fi
2909 curses=no
2910 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002911fi
balrog4d3b6f62008-02-10 16:33:14 +00002912
blueswir1414f0da2008-08-15 18:20:52 +00002913##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002914# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002915if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002916 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002917 curlconfig="$pkg_config libcurl"
2918 else
2919 curlconfig=curl-config
2920 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002921 cat > $TMPC << EOF
2922#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002923int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002924EOF
Stefan Weil89138852016-05-16 15:10:20 +02002925 curl_cflags=$($curlconfig --cflags 2>/dev/null)
2926 curl_libs=$($curlconfig --libs 2>/dev/null)
Juan Quintelab1d5a272009-08-03 14:46:05 +02002927 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002928 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002929 else
2930 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002931 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002932 fi
2933 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002934 fi
2935fi # test "$curl"
2936
2937##########################################
balrogfb599c92008-09-28 23:49:55 +00002938# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002939if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002940 cat > $TMPC << EOF
2941#include <bluetooth/bluetooth.h>
2942int main(void) { return bt_error(0); }
2943EOF
Stefan Weil89138852016-05-16 15:10:20 +02002944 bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
2945 bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
Juan Quintela52166aa2009-08-03 14:46:03 +02002946 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002947 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002948 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002949 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002950 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002951 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002952 fi
balroge820e3f2008-09-30 02:27:44 +00002953 bluez="no"
2954 fi
balrogfb599c92008-09-28 23:49:55 +00002955fi
2956
2957##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002958# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002959
John Snowf40685c2015-05-22 14:13:42 -04002960glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002961glib_modules=gthread-2.0
2962if test "$modules" = yes; then
2963 glib_modules="$glib_modules gmodule-2.0"
2964fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002965
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002966for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002967 if $pkg_config --atleast-version=$glib_req_ver $i; then
Stefan Weil89138852016-05-16 15:10:20 +02002968 glib_cflags=$($pkg_config --cflags $i)
2969 glib_libs=$($pkg_config --libs $i)
Fam Zhenge26110c2014-02-10 14:48:57 +08002970 CFLAGS="$glib_cflags $CFLAGS"
2971 LIBS="$glib_libs $LIBS"
2972 libs_qga="$glib_libs $libs_qga"
2973 else
2974 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2975 fi
2976done
2977
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00002978# Sanity check that the current size_t matches the
2979# size that glib thinks it should be. This catches
2980# problems on multi-arch where people try to build
2981# 32-bit QEMU while pointing at 64-bit glib headers
2982cat > $TMPC <<EOF
2983#include <glib.h>
2984#include <unistd.h>
2985
2986#define QEMU_BUILD_BUG_ON(x) \
2987 typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
2988
2989int main(void) {
2990 QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
2991 return 0;
2992}
2993EOF
2994
Stefan Weil5919e032016-04-28 23:33:41 +02002995if ! compile_prog "$CFLAGS" "$LIBS" ; then
Daniel P. Berrange977a82a2016-01-27 09:00:45 +00002996 error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
2997 "You probably need to set PKG_CONFIG_LIBDIR"\
2998 "to point to the right pkg-config files for your"\
2999 "build target"
3000fi
3001
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03003002# g_test_trap_subprocess added in 2.38. Used by some tests.
3003glib_subprocess=yes
3004if ! $pkg_config --atleast-version=2.38 glib-2.0; then
3005 glib_subprocess=no
3006fi
3007
John Snowbbbf2e02015-03-25 18:57:38 -04003008# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3009cat > $TMPC << EOF
3010#include <glib.h>
3011int main(void) { return 0; }
3012EOF
3013if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3014 if cc_has_warning_flag "-Wno-unknown-attributes"; then
3015 glib_cflags="-Wno-unknown-attributes $glib_cflags"
3016 CFLAGS="-Wno-unknown-attributes $CFLAGS"
3017 fi
3018fi
3019
Fam Zhenge26110c2014-02-10 14:48:57 +08003020##########################################
3021# SHA command probe for modules
3022if test "$modules" = yes; then
3023 shacmd_probe="sha1sum sha1 shasum"
3024 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08003025 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08003026 shacmd="$c"
3027 break
3028 fi
3029 done
3030 if test "$shacmd" = ""; then
3031 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3032 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05003033fi
3034
3035##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003036# pixman support probe
3037
3038if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01003039 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3040 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08003041 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003042 pixman="system"
3043 else
3044 pixman="internal"
3045 fi
3046fi
Robert Schiele74880fe2012-12-04 16:58:08 +01003047if test "$pixman" = "none"; then
3048 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003049 error_exit "pixman disabled but system emulation or tools build" \
3050 "enabled. You can turn off pixman only if you also" \
3051 "disable all system emulation targets and the tools" \
3052 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01003053 fi
3054 pixman_cflags=
3055 pixman_libs=
3056elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08003057 # pixman version has been checked above
Stefan Weil89138852016-05-16 15:10:20 +02003058 pixman_cflags=$($pkg_config --cflags pixman-1)
3059 pixman_libs=$($pkg_config --libs pixman-1)
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003060else
3061 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08003062 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01003063 " (1) Preferred: Install the pixman devel package (any recent" \
3064 " distro should have packages as Xorg needs pixman too)." \
3065 " (2) Fetch the pixman submodule, using:" \
3066 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003067 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01003068 mkdir -p pixman/pixman
3069 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3070 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003071fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02003072
3073##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303074# libcap probe
3075
3076if test "$cap" != "no" ; then
3077 cat > $TMPC <<EOF
3078#include <stdio.h>
3079#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01003080int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05303081EOF
3082 if compile_prog "" "-lcap" ; then
3083 cap=yes
3084 else
3085 cap=no
3086 fi
3087fi
3088
3089##########################################
aliguorie5d355d2009-04-24 18:03:15 +00003090# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04003091PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00003092
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02003093pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00003094cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00003095#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01003096static void *f(void *p) { return NULL; }
3097int main(void) {
3098 pthread_t thread;
3099 pthread_create(&thread, 0, f, 0);
3100 return 0;
3101}
blueswir1414f0da2008-08-15 18:20:52 +00003102EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02003103if compile_prog "" "" ; then
3104 pthread=yes
3105else
3106 for pthread_lib in $PTHREADLIBS_LIST; do
3107 if compile_prog "" "$pthread_lib" ; then
3108 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04003109 found=no
3110 for lib_entry in $LIBS; do
3111 if test "$lib_entry" = "$pthread_lib"; then
3112 found=yes
3113 break
3114 fi
3115 done
3116 if test "$found" = "no"; then
3117 LIBS="$pthread_lib $LIBS"
3118 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02003119 break
3120 fi
3121 done
3122fi
blueswir1414f0da2008-08-15 18:20:52 +00003123
Anthony Liguori4617e592009-08-25 17:21:56 -05003124if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003125 error_exit "pthread check failed" \
3126 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00003127fi
3128
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00003129# check for pthread_setname_np
3130pthread_setname_np=no
3131cat > $TMPC << EOF
3132#include <pthread.h>
3133
3134static void *f(void *p) { return NULL; }
3135int main(void)
3136{
3137 pthread_t thread;
3138 pthread_create(&thread, 0, f, 0);
3139 pthread_setname_np(thread, "QEMU");
3140 return 0;
3141}
3142EOF
3143if compile_prog "" "$pthread_lib" ; then
3144 pthread_setname_np=yes
3145fi
3146
aliguoribf9298b2008-12-05 20:05:26 +00003147##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003148# rbd probe
3149if test "$rbd" != "no" ; then
3150 cat > $TMPC <<EOF
3151#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003152#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003153int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003154 rados_t cluster;
3155 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003156 return 0;
3157}
3158EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003159 rbd_libs="-lrbd -lrados"
3160 if compile_prog "" "$rbd_libs" ; then
3161 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003162 else
3163 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003164 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003165 fi
3166 rbd=no
3167 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003168fi
3169
3170##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003171# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003172min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003173if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003174 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Stefan Weil89138852016-05-16 15:10:20 +02003175 libssh2_cflags=$($pkg_config libssh2 --cflags)
3176 libssh2_libs=$($pkg_config libssh2 --libs)
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003177 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003178 else
3179 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003180 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003181 fi
3182 libssh2=no
3183 fi
3184fi
3185
3186##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003187# libssh2_sftp_fsync probe
3188
3189if test "$libssh2" = "yes"; then
3190 cat > $TMPC <<EOF
3191#include <stdio.h>
3192#include <libssh2.h>
3193#include <libssh2_sftp.h>
3194int main(void) {
3195 LIBSSH2_SESSION *session;
3196 LIBSSH2_SFTP *sftp;
3197 LIBSSH2_SFTP_HANDLE *sftp_handle;
3198 session = libssh2_session_init ();
3199 sftp = libssh2_sftp_init (session);
3200 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3201 libssh2_sftp_fsync (sftp_handle);
3202 return 0;
3203}
3204EOF
3205 # libssh2_cflags/libssh2_libs defined in previous test.
3206 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3207 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3208 fi
3209fi
3210
3211##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003212# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003213
3214if test "$linux_aio" != "no" ; then
3215 cat > $TMPC <<EOF
3216#include <libaio.h>
3217#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003218#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003219int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3220EOF
3221 if compile_prog "" "-laio" ; then
3222 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003223 else
3224 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003225 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003226 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003227 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003228 fi
3229fi
3230
3231##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003232# TPM passthrough is only on x86 Linux
3233
3234if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3235 tpm_passthrough=$tpm
3236else
3237 tpm_passthrough=no
3238fi
3239
3240##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003241# attr probe
3242
3243if test "$attr" != "no" ; then
3244 cat > $TMPC <<EOF
3245#include <stdio.h>
3246#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003247#ifdef CONFIG_LIBATTR
3248#include <attr/xattr.h>
3249#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003250#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003251#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003252int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3253EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003254 if compile_prog "" "" ; then
3255 attr=yes
3256 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003257 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003258 attr=yes
3259 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003260 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003261 else
3262 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003263 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003264 fi
3265 attr=no
3266 fi
3267fi
3268
3269##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003270# iovec probe
3271cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003272#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003273#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003274#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003275int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003276EOF
3277iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003278if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003279 iovec=yes
3280fi
3281
aurel32f652e6a2008-12-16 10:43:48 +00003282##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003283# preadv probe
3284cat > $TMPC <<EOF
3285#include <sys/types.h>
3286#include <sys/uio.h>
3287#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003288int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003289EOF
3290preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003291if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003292 preadv=yes
3293fi
3294
3295##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003296# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003297# fdt support is mandatory for at least some target architectures,
3298# so insist on it if we're building those system emulators.
3299fdt_required=no
3300for target in $target_list; do
3301 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003302 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003303 fdt_required=yes
3304 ;;
3305 esac
3306done
3307
3308if test "$fdt_required" = "yes"; then
3309 if test "$fdt" = "no"; then
3310 error_exit "fdt disabled but some requested targets require it." \
3311 "You can turn off fdt only if you also disable all the system emulation" \
3312 "targets which need it (by specifying a cut down --target-list)."
3313 fi
3314 fdt=yes
3315fi
3316
Juan Quintela2df87df2009-08-12 18:29:54 +02003317if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003318 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003319 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003320 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003321 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003322#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003323#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003324int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003325EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003326 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003327 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003328 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003329 elif test -d ${source_path}/dtc/libfdt ; then
3330 # have submodule DTC - use it
3331 fdt=yes
3332 dtc_internal="yes"
3333 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003334 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003335 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3336 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003337 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003338 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3339 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3340 elif test "$fdt" = "yes" ; then
3341 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003342 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003343 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003344 " (2) Fetch the DTC submodule, using:" \
3345 " git submodule update --init dtc"
3346 else
3347 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003348 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003349 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003350 fi
3351fi
3352
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003353libs_softmmu="$libs_softmmu $fdt_libs"
3354
Michael Walle20ff0752011-03-07 23:32:39 +01003355##########################################
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003356# opengl probe (for sdl2, gtk, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003357
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003358if test "$opengl" != "no" ; then
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003359 opengl_pkgs="epoxy libdrm gbm"
OGAWA Hirofumifb719562015-10-27 02:45:48 +09003360 if $pkg_config $opengl_pkgs x11; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003361 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3362 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003363 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003364 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3365 gtk_gl="yes"
3366 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003367 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003368 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003369 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003370 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003371 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003372 opengl_libs=""
3373 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003374 fi
3375fi
3376
Gerd Hoffmann014cb152015-12-03 12:56:34 +01003377if test "$opengl" = "yes"; then
3378 cat > $TMPC << EOF
3379#include <epoxy/egl.h>
3380#ifndef EGL_MESA_image_dma_buf_export
3381# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3382#endif
3383int main(void) { return 0; }
3384EOF
3385 if compile_prog "" "" ; then
3386 opengl_dmabuf=yes
3387 fi
3388fi
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003389
3390##########################################
3391# archipelago probe
3392if test "$archipelago" != "no" ; then
3393 cat > $TMPC <<EOF
3394#include <stdio.h>
3395#include <xseg/xseg.h>
3396#include <xseg/protocol.h>
3397int main(void) {
3398 xseg_initialize();
3399 return 0;
3400}
3401EOF
3402 archipelago_libs=-lxseg
3403 if compile_prog "" "$archipelago_libs"; then
3404 archipelago="yes"
3405 libs_tools="$archipelago_libs $libs_tools"
3406 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003407
3408 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3409 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3410 echo "license and therefore prevent redistribution."
3411 echo
3412 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003413 else
3414 if test "$archipelago" = "yes" ; then
3415 feature_not_found "Archipelago backend support" "Install libxseg devel"
3416 fi
3417 archipelago="no"
3418 fi
3419fi
3420
3421
Bharata B Raoeb100392012-09-24 14:42:45 +05303422##########################################
3423# glusterfs probe
3424if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003425 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303426 glusterfs="yes"
Stefan Weil89138852016-05-16 15:10:20 +02003427 glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3428 glusterfs_libs=$($pkg_config --libs glusterfs-api)
Jeff Codyd85fa9e2016-04-05 10:40:09 -04003429 if $pkg_config --atleast-version=4 glusterfs-api; then
3430 glusterfs_xlator_opt="yes"
3431 fi
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003432 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303433 glusterfs_discard="yes"
3434 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303435 if $pkg_config --atleast-version=6 glusterfs-api; then
3436 glusterfs_zerofill="yes"
3437 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303438 else
3439 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003440 feature_not_found "GlusterFS backend support" \
3441 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303442 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303443 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303444 fi
3445fi
3446
aurel3239386ac2009-04-15 19:48:17 +00003447# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003448# emulator. This is done because older glibc versions don't
3449# have syscall stubs for these implemented. In that case we
3450# don't provide them even if kernel supports them.
3451#
3452inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003453cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003454#include <sys/inotify.h>
3455
3456int
3457main(void)
3458{
3459 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003460 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003461}
3462EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003463if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003464 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003465fi
3466
Riku Voipioc05c7a72010-03-26 15:25:11 +00003467inotify1=no
3468cat > $TMPC << EOF
3469#include <sys/inotify.h>
3470
3471int
3472main(void)
3473{
3474 /* try to start inotify */
3475 return inotify_init1(0);
3476}
3477EOF
3478if compile_prog "" "" ; then
3479 inotify1=yes
3480fi
3481
Riku Voipioebc996f2009-04-21 15:01:51 +03003482# check if utimensat and futimens are supported
3483utimens=no
3484cat > $TMPC << EOF
3485#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003486#include <stddef.h>
3487#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003488#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003489
3490int main(void)
3491{
3492 utimensat(AT_FDCWD, "foo", NULL, 0);
3493 futimens(0, NULL);
3494 return 0;
3495}
3496EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003497if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003498 utimens=yes
3499fi
3500
Riku Voipio099d6b02009-05-05 12:10:04 +03003501# check if pipe2 is there
3502pipe2=no
3503cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003504#include <unistd.h>
3505#include <fcntl.h>
3506
3507int main(void)
3508{
3509 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003510 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003511}
3512EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003513if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003514 pipe2=yes
3515fi
3516
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003517# check if accept4 is there
3518accept4=no
3519cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003520#include <sys/socket.h>
3521#include <stddef.h>
3522
3523int main(void)
3524{
3525 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3526 return 0;
3527}
3528EOF
3529if compile_prog "" "" ; then
3530 accept4=yes
3531fi
3532
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303533# check if tee/splice is there. vmsplice was added same time.
3534splice=no
3535cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303536#include <unistd.h>
3537#include <fcntl.h>
3538#include <limits.h>
3539
3540int main(void)
3541{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003542 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303543 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3544 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3545 return 0;
3546}
3547EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003548if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303549 splice=yes
3550fi
3551
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003552##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003553# libnuma probe
3554
3555if test "$numa" != "no" ; then
3556 cat > $TMPC << EOF
3557#include <numa.h>
3558int main(void) { return numa_available(); }
3559EOF
3560
3561 if compile_prog "" "-lnuma" ; then
3562 numa=yes
3563 libs_softmmu="-lnuma $libs_softmmu"
3564 else
3565 if test "$numa" = "yes" ; then
3566 feature_not_found "numa" "install numactl devel"
3567 fi
3568 numa=no
3569 fi
3570fi
3571
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003572if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3573 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3574 exit 1
3575fi
3576
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003577##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003578# tcmalloc probe
3579
3580if test "$tcmalloc" = "yes" ; then
3581 cat > $TMPC << EOF
3582#include <stdlib.h>
3583int main(void) { malloc(1); return 0; }
3584EOF
3585
3586 if compile_prog "" "-ltcmalloc" ; then
3587 LIBS="-ltcmalloc $LIBS"
3588 else
3589 feature_not_found "tcmalloc" "install gperftools devel"
3590 fi
3591fi
3592
3593##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003594# jemalloc probe
3595
3596if test "$jemalloc" = "yes" ; then
3597 cat > $TMPC << EOF
3598#include <stdlib.h>
3599int main(void) { malloc(1); return 0; }
3600EOF
3601
3602 if compile_prog "" "-ljemalloc" ; then
3603 LIBS="-ljemalloc $LIBS"
3604 else
3605 feature_not_found "jemalloc" "install jemalloc devel"
3606 fi
3607fi
3608
3609##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003610# signalfd probe
3611signalfd="no"
3612cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003613#include <unistd.h>
3614#include <sys/syscall.h>
3615#include <signal.h>
3616int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3617EOF
3618
3619if compile_prog "" "" ; then
3620 signalfd=yes
3621fi
3622
Riku Voipioc2882b92009-08-12 15:08:24 +03003623# check if eventfd is supported
3624eventfd=no
3625cat > $TMPC << EOF
3626#include <sys/eventfd.h>
3627
3628int main(void)
3629{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003630 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003631}
3632EOF
3633if compile_prog "" "" ; then
3634 eventfd=yes
3635fi
3636
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003637# check if memfd is supported
3638memfd=no
3639cat > $TMPC << EOF
3640#include <sys/memfd.h>
3641
3642int main(void)
3643{
3644 return memfd_create("foo", MFD_ALLOW_SEALING);
3645}
3646EOF
3647if compile_prog "" "" ; then
3648 memfd=yes
3649fi
3650
3651
3652
Ulrich Hechtd0927932009-09-17 20:22:14 +03003653# check for fallocate
3654fallocate=no
3655cat > $TMPC << EOF
3656#include <fcntl.h>
3657
3658int main(void)
3659{
3660 fallocate(0, 0, 0, 0);
3661 return 0;
3662}
3663EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003664if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003665 fallocate=yes
3666fi
3667
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003668# check for fallocate hole punching
3669fallocate_punch_hole=no
3670cat > $TMPC << EOF
3671#include <fcntl.h>
3672#include <linux/falloc.h>
3673
3674int main(void)
3675{
3676 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3677 return 0;
3678}
3679EOF
3680if compile_prog "" "" ; then
3681 fallocate_punch_hole=yes
3682fi
3683
Denis V. Lunevb953f072015-01-30 11:42:14 +03003684# check that fallocate supports range zeroing inside the file
3685fallocate_zero_range=no
3686cat > $TMPC << EOF
3687#include <fcntl.h>
3688#include <linux/falloc.h>
3689
3690int main(void)
3691{
3692 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3693 return 0;
3694}
3695EOF
3696if compile_prog "" "" ; then
3697 fallocate_zero_range=yes
3698fi
3699
Kevin Wolfed911432014-09-29 17:12:59 +02003700# check for posix_fallocate
3701posix_fallocate=no
3702cat > $TMPC << EOF
3703#include <fcntl.h>
3704
3705int main(void)
3706{
3707 posix_fallocate(0, 0, 0);
3708 return 0;
3709}
3710EOF
3711if compile_prog "" "" ; then
3712 posix_fallocate=yes
3713fi
3714
Peter Maydellc727f472011-01-06 11:05:10 +00003715# check for sync_file_range
3716sync_file_range=no
3717cat > $TMPC << EOF
3718#include <fcntl.h>
3719
3720int main(void)
3721{
3722 sync_file_range(0, 0, 0, 0);
3723 return 0;
3724}
3725EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003726if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003727 sync_file_range=yes
3728fi
3729
Peter Maydelldace20d2011-01-10 13:11:24 +00003730# check for linux/fiemap.h and FS_IOC_FIEMAP
3731fiemap=no
3732cat > $TMPC << EOF
3733#include <sys/ioctl.h>
3734#include <linux/fs.h>
3735#include <linux/fiemap.h>
3736
3737int main(void)
3738{
3739 ioctl(0, FS_IOC_FIEMAP, 0);
3740 return 0;
3741}
3742EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003743if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003744 fiemap=yes
3745fi
3746
Ulrich Hechtd0927932009-09-17 20:22:14 +03003747# check for dup3
3748dup3=no
3749cat > $TMPC << EOF
3750#include <unistd.h>
3751
3752int main(void)
3753{
3754 dup3(0, 0, 0);
3755 return 0;
3756}
3757EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003758if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003759 dup3=yes
3760fi
3761
Alex Bligh4e0c6522013-08-21 16:02:43 +01003762# check for ppoll support
3763ppoll=no
3764cat > $TMPC << EOF
3765#include <poll.h>
3766
3767int main(void)
3768{
3769 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3770 ppoll(&pfd, 1, 0, 0);
3771 return 0;
3772}
3773EOF
3774if compile_prog "" "" ; then
3775 ppoll=yes
3776fi
3777
Alex Blighcd758dd2013-08-21 16:02:44 +01003778# check for prctl(PR_SET_TIMERSLACK , ... ) support
3779prctl_pr_set_timerslack=no
3780cat > $TMPC << EOF
3781#include <sys/prctl.h>
3782
3783int main(void)
3784{
3785 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3786 return 0;
3787}
3788EOF
3789if compile_prog "" "" ; then
3790 prctl_pr_set_timerslack=yes
3791fi
3792
Peter Maydell3b6edd12011-02-15 18:35:05 +00003793# check for epoll support
3794epoll=no
3795cat > $TMPC << EOF
3796#include <sys/epoll.h>
3797
3798int main(void)
3799{
3800 epoll_create(0);
3801 return 0;
3802}
3803EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003804if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003805 epoll=yes
3806fi
3807
Peter Maydell227f0212016-06-06 19:58:11 +01003808# epoll_create1 is a later addition
3809# so we must check separately for its presence
Peter Maydell3b6edd12011-02-15 18:35:05 +00003810epoll_create1=no
3811cat > $TMPC << EOF
3812#include <sys/epoll.h>
3813
3814int main(void)
3815{
Peter Maydell19e83f62011-04-26 16:56:40 +01003816 /* Note that we use epoll_create1 as a value, not as
3817 * a function being called. This is necessary so that on
3818 * old SPARC glibc versions where the function was present in
3819 * the library but not declared in the header file we will
3820 * fail the configure check. (Otherwise we will get a compiler
3821 * warning but not an error, and will proceed to fail the
3822 * qemu compile where we compile with -Werror.)
3823 */
Blue Swirlc075a722012-08-09 20:21:25 +00003824 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003825}
3826EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003827if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003828 epoll_create1=yes
3829fi
3830
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003831# check for sendfile support
3832sendfile=no
3833cat > $TMPC << EOF
3834#include <sys/sendfile.h>
3835
3836int main(void)
3837{
3838 return sendfile(0, 0, 0, 0);
3839}
3840EOF
3841if compile_prog "" "" ; then
3842 sendfile=yes
3843fi
3844
Riku Voipio51834342014-06-22 11:25:42 +01003845# check for timerfd support (glibc 2.8 and newer)
3846timerfd=no
3847cat > $TMPC << EOF
3848#include <sys/timerfd.h>
3849
3850int main(void)
3851{
3852 return(timerfd_create(CLOCK_REALTIME, 0));
3853}
3854EOF
3855if compile_prog "" "" ; then
3856 timerfd=yes
3857fi
3858
Riku Voipio9af5c902014-08-12 15:58:57 +03003859# check for setns and unshare support
3860setns=no
3861cat > $TMPC << EOF
3862#include <sched.h>
3863
3864int main(void)
3865{
3866 int ret;
3867 ret = setns(0, 0);
3868 ret = unshare(0);
3869 return ret;
3870}
3871EOF
3872if compile_prog "" "" ; then
3873 setns=yes
3874fi
3875
pbrookcc8ae6d2006-04-23 17:57:59 +00003876# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003877if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003878 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003879 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003880 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003881 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003882 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003883 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003884 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003885 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003886fi
3887
Stefan Weilf514f412009-10-11 12:44:07 +02003888# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003889byteswap_h=no
3890cat > $TMPC << EOF
3891#include <byteswap.h>
3892int main(void) { return bswap_32(0); }
3893EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003894if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003895 byteswap_h=yes
3896fi
3897
Stefan Weil75f13592013-01-05 12:17:38 +01003898# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003899bswap_h=no
3900cat > $TMPC << EOF
3901#include <sys/endian.h>
3902#include <sys/types.h>
3903#include <machine/bswap.h>
3904int main(void) { return bswap32(0); }
3905EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003906if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003907 bswap_h=yes
3908fi
3909
aliguorida93a1f2008-12-12 20:02:52 +00003910##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003911# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003912if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003913 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003914 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003915 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3916 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003917 else
3918 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003919 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003920 fi
3921 libiscsi="no"
3922 fi
3923fi
3924
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003925##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003926# Do we need libm
3927cat > $TMPC << EOF
3928#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003929int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003930EOF
3931if compile_prog "" "" ; then
3932 :
3933elif compile_prog "" "-lm" ; then
3934 LIBS="-lm $LIBS"
3935 libs_qga="-lm $libs_qga"
3936else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003937 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003938fi
3939
3940##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003941# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003942# uClibc provides 2 versions of clock_gettime(), one with realtime
3943# support and one without. This means that the clock_gettime() don't
3944# need -lrt. We still need it for timer_create() so we check for this
3945# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003946cat > $TMPC <<EOF
3947#include <signal.h>
3948#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003949int main(void) {
3950 timer_create(CLOCK_REALTIME, NULL, NULL);
3951 return clock_gettime(CLOCK_REALTIME, NULL);
3952}
aliguorida93a1f2008-12-12 20:02:52 +00003953EOF
3954
Juan Quintela52166aa2009-08-03 14:46:03 +02003955if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003956 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003957# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003958elif compile_prog "" "$pthread_lib -lrt" ; then
3959 LIBS="$LIBS -lrt"
3960 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003961fi
3962
Blue Swirl31ff5042009-09-12 12:33:07 +00003963if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003964 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003965 libs_softmmu="-lutil $libs_softmmu"
3966fi
3967
Blue Swirlde5071c2009-09-12 09:58:46 +00003968##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003969# spice probe
3970if test "$spice" != "no" ; then
3971 cat > $TMPC << EOF
3972#include <spice.h>
3973int main(void) { spice_server_new(); return 0; }
3974EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003975 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3976 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003977 if $pkg_config --atleast-version=0.12.0 spice-server && \
3978 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003979 compile_prog "$spice_cflags" "$spice_libs" ; then
3980 spice="yes"
3981 libs_softmmu="$libs_softmmu $spice_libs"
3982 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003983 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3984 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003985 else
3986 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003987 feature_not_found "spice" \
3988 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003989 fi
3990 spice="no"
3991 fi
3992fi
3993
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003994# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003995smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003996if test "$smartcard" != "no"; then
3997 if $pkg_config libcacard; then
3998 libcacard_cflags=$($pkg_config --cflags libcacard)
3999 libcacard_libs=$($pkg_config --libs libcacard)
4000 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4001 libs_softmmu="$libs_softmmu $libcacard_libs"
4002 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004003 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004004 if test "$smartcard" = "yes"; then
4005 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004006 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004007 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01004008 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02004009fi
4010
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004011# check for libusb
4012if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004013 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004014 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004015 libusb_cflags=$($pkg_config --cflags libusb-1.0)
4016 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004017 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4018 libs_softmmu="$libs_softmmu $libusb_libs"
4019 else
4020 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08004021 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004022 fi
4023 libusb="no"
4024 fi
4025fi
4026
Hans de Goede69354a82011-07-19 11:04:10 +02004027# check for usbredirparser for usb network redirection support
4028if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02004029 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02004030 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02004031 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4032 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02004033 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02004034 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02004035 else
4036 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11004037 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02004038 fi
4039 usb_redir="no"
4040 fi
4041fi
4042
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004043##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004044# check if we have VSS SDK headers for win
4045
4046if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4047 case "$vss_win32_sdk" in
4048 "") vss_win32_include="-I$source_path" ;;
4049 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4050 # handle path with spaces. So we symlink the headers into ".sdk/vss".
4051 vss_win32_include="-I$source_path/.sdk/vss"
4052 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4053 ;;
4054 *) vss_win32_include="-I$vss_win32_sdk"
4055 esac
4056 cat > $TMPC << EOF
4057#define __MIDL_user_allocate_free_DEFINED__
4058#include <inc/win2003/vss.h>
4059int main(void) { return VSS_CTX_BACKUP; }
4060EOF
4061 if compile_prog "$vss_win32_include" "" ; then
4062 guest_agent_with_vss="yes"
4063 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4064 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05004065 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004066 else
4067 if test "$vss_win32_sdk" != "" ; then
4068 echo "ERROR: Please download and install Microsoft VSS SDK:"
4069 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4070 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4071 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
4072 echo "ERROR: The headers are extracted in the directory \`inc'."
4073 feature_not_found "VSS support"
4074 fi
4075 guest_agent_with_vss="no"
4076 fi
4077fi
4078
4079##########################################
4080# lookup Windows platform SDK (if not specified)
4081# The SDK is needed only to build .tlb (type library) file of guest agent
4082# VSS provider from the source. It is usually unnecessary because the
4083# pre-compiled .tlb file is included.
4084
4085if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4086 if test -z "$win_sdk"; then
4087 programfiles="$PROGRAMFILES"
4088 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4089 if test -n "$programfiles"; then
4090 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4091 else
4092 feature_not_found "Windows SDK"
4093 fi
4094 elif test "$win_sdk" = "no"; then
4095 win_sdk=""
4096 fi
4097fi
4098
4099##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05004100# check if mingw environment provides a recent ntddscsi.h
4101if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4102 cat > $TMPC << EOF
4103#include <windows.h>
4104#include <ntddscsi.h>
4105int main(void) {
4106#if !defined(IOCTL_SCSI_GET_ADDRESS)
4107#error Missing required ioctl definitions
4108#endif
4109 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4110 return addr.Lun;
4111}
4112EOF
4113 if compile_prog "" "" ; then
4114 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05004115 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05004116 fi
4117fi
4118
4119##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004120# virgl renderer probe
4121
4122if test "$virglrenderer" != "no" ; then
4123 cat > $TMPC << EOF
4124#include <virglrenderer.h>
4125int main(void) { virgl_renderer_poll(); return 0; }
4126EOF
4127 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4128 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4129 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4130 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4131 virglrenderer="yes"
4132 else
4133 if test "$virglrenderer" = "yes" ; then
4134 feature_not_found "virglrenderer"
4135 fi
4136 virglrenderer="no"
4137 fi
4138fi
4139
4140##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004141# check if we have fdatasync
4142
4143fdatasync=no
4144cat > $TMPC << EOF
4145#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004146int main(void) {
4147#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4148return fdatasync(0);
4149#else
Stefan Weile172fe12012-04-06 21:33:20 +02004150#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004151#endif
4152}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004153EOF
4154if compile_prog "" "" ; then
4155 fdatasync=yes
4156fi
4157
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004158##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004159# check if we have madvise
4160
4161madvise=no
4162cat > $TMPC << EOF
4163#include <sys/types.h>
4164#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004165#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004166int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4167EOF
4168if compile_prog "" "" ; then
4169 madvise=yes
4170fi
4171
4172##########################################
4173# check if we have posix_madvise
4174
4175posix_madvise=no
4176cat > $TMPC << EOF
4177#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004178#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004179int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4180EOF
4181if compile_prog "" "" ; then
4182 posix_madvise=yes
4183fi
4184
4185##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004186# check if trace backend exists
4187
Lluís Vilanova5b808272014-05-27 15:02:14 +02004188$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004189if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004190 error_exit "invalid trace backends" \
4191 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004192fi
4193
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004194##########################################
4195# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004196if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004197 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004198#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004199int main(void) { return 0; }
4200EOF
4201 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004202 if $pkg_config lttng-ust --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004203 lttng_ust_libs=$($pkg_config --libs lttng-ust)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004204 else
4205 lttng_ust_libs="-llttng-ust"
4206 fi
4207 if $pkg_config liburcu-bp --exists; then
Stefan Weil89138852016-05-16 15:10:20 +02004208 urcu_bp_libs=$($pkg_config --libs liburcu-bp)
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004209 else
4210 urcu_bp_libs="-lurcu-bp"
4211 fi
4212
4213 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4214 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004215 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004216 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004217 fi
4218fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004219
4220##########################################
4221# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004222if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004223 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004224 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004225 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004226 trace_backend_stap="no"
4227 if has 'stap' ; then
4228 trace_backend_stap="yes"
4229 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004230fi
4231
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004232##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004233# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304234
Peter Maydell7c2acc72013-04-08 12:11:27 +01004235# We prefer ucontext, but it's not always possible. The fallback
4236# is sigcontext. gthread is not selectable except explicitly, because
4237# it is not functional enough to run QEMU proper. (It is occasionally
4238# useful for debugging purposes.) On Windows the only valid backend
4239# is the Windows-specific one.
4240
4241ucontext_works=no
4242if test "$darwin" != "yes"; then
4243 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304244#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004245#ifdef __stub_makecontext
4246#error Ignoring glibc stub makecontext which will always fail
4247#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004248int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304249EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004250 if compile_prog "" "" ; then
4251 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304252 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004253fi
4254
4255if test "$coroutine" = ""; then
4256 if test "$mingw32" = "yes"; then
4257 coroutine=win32
4258 elif test "$ucontext_works" = "yes"; then
4259 coroutine=ucontext
4260 else
4261 coroutine=sigaltstack
4262 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004263else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004264 case $coroutine in
4265 windows)
4266 if test "$mingw32" != "yes"; then
4267 error_exit "'windows' coroutine backend only valid for Windows"
4268 fi
4269 # Unfortunately the user visible backend name doesn't match the
4270 # coroutine-*.c filename for this case, so we have to adjust it here.
4271 coroutine=win32
4272 ;;
4273 ucontext)
4274 if test "$ucontext_works" != "yes"; then
4275 feature_not_found "ucontext"
4276 fi
4277 ;;
4278 gthread|sigaltstack)
4279 if test "$mingw32" = "yes"; then
4280 error_exit "only the 'windows' coroutine backend is valid for Windows"
4281 fi
4282 ;;
4283 *)
4284 error_exit "unknown coroutine backend $coroutine"
4285 ;;
4286 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304287fi
4288
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004289if test "$coroutine_pool" = ""; then
4290 if test "$coroutine" = "gthread"; then
4291 coroutine_pool=no
4292 else
4293 coroutine_pool=yes
4294 fi
4295fi
4296if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4297 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4298fi
4299
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304300##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304301# check if we have open_by_handle_at
4302
Stefan Weil4e1797f2012-06-18 22:11:06 +02004303open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304304cat > $TMPC << EOF
4305#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004306#if !defined(AT_EMPTY_PATH)
4307# error missing definition
4308#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004309int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004310#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304311EOF
4312if compile_prog "" "" ; then
4313 open_by_handle_at=yes
4314fi
4315
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304316########################################
4317# check if we have linux/magic.h
4318
4319linux_magic_h=no
4320cat > $TMPC << EOF
4321#include <linux/magic.h>
4322int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004323 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304324}
4325EOF
4326if compile_prog "" "" ; then
4327 linux_magic_h=yes
4328fi
4329
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004330########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004331# check whether we can disable warning option with a pragma (this is needed
4332# to silence warnings in the headers of some versions of external libraries).
4333# This test has to be compiled with -Werror as otherwise an unknown pragma is
4334# only a warning.
4335#
4336# If we can't selectively disable warning in the code, disable -Werror so that
4337# the build doesn't fail anyway.
4338
Peter Maydell06d71fa2012-07-30 16:13:07 +01004339pragma_disable_unused_but_set=no
4340cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004341#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004342#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004343#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004344#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004345
Peter Maydell06d71fa2012-07-30 16:13:07 +01004346int main(void) {
4347 return 0;
4348}
4349EOF
4350if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004351 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004352else
4353 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004354fi
4355
4356########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004357# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004358
4359valgrind_h=no
4360cat > $TMPC << EOF
4361#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004362int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004363 return 0;
4364}
4365EOF
4366if compile_prog "" "" ; then
4367 valgrind_h=yes
4368fi
4369
4370########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004371# check if environ is declared
4372
4373has_environ=no
4374cat > $TMPC << EOF
4375#include <unistd.h>
4376int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004377 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004378 return 0;
4379}
4380EOF
4381if compile_prog "" "" ; then
4382 has_environ=yes
4383fi
4384
Richard Henderson76a347e2012-12-28 14:17:02 -08004385########################################
4386# check if cpuid.h is usable.
4387
4388cpuid_h=no
4389cat > $TMPC << EOF
4390#include <cpuid.h>
4391int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004392 unsigned a, b, c, d;
4393 int max = __get_cpuid_max(0, 0);
4394
4395 if (max >= 1) {
4396 __cpuid(1, a, b, c, d);
4397 }
4398
4399 if (max >= 7) {
4400 __cpuid_count(7, 0, a, b, c, d);
4401 }
4402
4403 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004404}
4405EOF
4406if compile_prog "" "" ; then
4407 cpuid_h=yes
4408fi
4409
Richard Hendersonf5401662013-02-16 12:46:59 -08004410########################################
4411# check if __[u]int128_t is usable.
4412
4413int128=no
4414cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004415#if defined(__clang_major__) && defined(__clang_minor__)
4416# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4417# error __int128_t does not work in CLANG before 3.2
4418# endif
4419#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004420__int128_t a;
4421__uint128_t b;
4422int main (void) {
4423 a = a + b;
4424 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004425 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004426 return 0;
4427}
4428EOF
4429if compile_prog "" "" ; then
4430 int128=yes
4431fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004432
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004433########################################
4434# check if getauxval is available.
4435
4436getauxval=no
4437cat > $TMPC << EOF
4438#include <sys/auxv.h>
4439int main(void) {
4440 return getauxval(AT_HWCAP) == 0;
4441}
4442EOF
4443if compile_prog "" "" ; then
4444 getauxval=yes
4445fi
4446
John Snowfd0e6052015-03-25 18:57:39 -04004447########################################
4448# check if ccache is interfering with
4449# semantic analysis of macros
4450
John Snow5e4dfd32015-10-28 13:56:40 -04004451unset CCACHE_CPP2
John Snowfd0e6052015-03-25 18:57:39 -04004452ccache_cpp2=no
4453cat > $TMPC << EOF
4454static const int Z = 1;
4455#define fn() ({ Z; })
4456#define TAUT(X) ((X) == Z)
4457#define PAREN(X, Y) (X == Y)
4458#define ID(X) (X)
4459int main(int argc, char *argv[])
4460{
4461 int x = 0, y = 0;
4462 x = ID(x);
4463 x = fn();
4464 fn();
4465 if (PAREN(x, y)) return 0;
4466 if (TAUT(Z)) return 0;
4467 return 0;
4468}
4469EOF
4470
4471if ! compile_object "-Werror"; then
4472 ccache_cpp2=yes
4473fi
4474
John Snowb553a042015-11-03 15:43:42 -05004475#################################################
4476# clang does not support glibc + FORTIFY_SOURCE.
4477
4478if test "$fortify_source" != "no"; then
4479 if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4480 fortify_source="no";
John Snowcfcc7c12015-11-12 11:29:49 -05004481 elif test -n "$cxx" &&
4482 echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
John Snowb553a042015-11-03 15:43:42 -05004483 fortify_source="no";
4484 else
4485 fortify_source="yes"
4486 fi
4487fi
4488
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304489##########################################
Jan Vesely277abf12016-04-29 13:15:23 -04004490# check if struct fsxattr is available via linux/fs.h
4491
4492have_fsxattr=no
4493cat > $TMPC << EOF
4494#include <linux/fs.h>
4495struct fsxattr foo;
4496int main(void) {
4497 return 0;
4498}
4499EOF
4500if compile_prog "" "" ; then
4501 have_fsxattr=yes
4502fi
4503
Peter Maydellb66e10e2016-06-08 18:34:32 +01004504##########################################
4505# check if rtnetlink.h exists and is useful
Laurent Vivier575b22b2016-06-02 22:14:15 +02004506have_rtnetlink=no
4507cat > $TMPC << EOF
4508#include <linux/rtnetlink.h>
4509int main(void) {
4510 return IFLA_PROTO_DOWN;
4511}
4512EOF
4513if compile_prog "" "" ; then
4514 have_rtnetlink=yes
4515fi
4516
James Clarke6969ec62016-06-06 12:02:50 +01004517#################################################
4518# Sparc implicitly links with --relax, which is
4519# incompatible with -r, so --no-relax should be
4520# given. It does no harm to give it on other
4521# platforms too.
4522
4523# Note: the prototype is needed since QEMU_CFLAGS
4524# contains -Wmissing-prototypes
4525cat > $TMPC << EOF
4526extern int foo(void);
4527int foo(void) { return 0; }
4528EOF
4529if ! compile_object ""; then
4530 error_exit "Failed to compile object file for LD_REL_FLAGS test"
4531fi
4532if do_cc -nostdlib -Wl,-r -Wl,--no-relax -o $TMPMO $TMPO; then
4533 LD_REL_FLAGS="-Wl,--no-relax"
4534fi
4535
Jan Vesely277abf12016-04-29 13:15:23 -04004536##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004537# End of CC checks
4538# After here, no more $cc or $ld runs
4539
Blue Swirl1d728c32012-05-01 18:45:39 +00004540if test "$gcov" = "yes" ; then
4541 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4542 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
John Snowb553a042015-11-03 15:43:42 -05004543elif test "$fortify_source" = "yes" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004544 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Peter Maydellce278612015-11-09 15:14:09 +00004545elif test "$debug" = "no"; then
4546 CFLAGS="-O2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004547fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004548
Peter Lieven6542aa92014-02-03 10:26:13 +01004549##########################################
4550# Do we have libnfs
4551if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004552 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004553 libnfs="yes"
4554 libnfs_libs=$($pkg_config --libs libnfs)
4555 LIBS="$LIBS $libnfs_libs"
4556 else
4557 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004558 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004559 fi
4560 libnfs="no"
4561 fi
4562fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004563
Peter Maydell6ca026c2012-07-18 15:10:18 +01004564# Now we've finished running tests it's OK to add -Werror to the compiler flags
4565if test "$werror" = "yes"; then
4566 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4567fi
4568
Juan Quintelae86ecd42009-08-03 14:45:59 +02004569if test "$solaris" = "no" ; then
4570 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004571 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004572 fi
4573fi
4574
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004575# test if pod2man has --utf8 option
4576if pod2man --help | grep -q utf8; then
4577 POD2MAN="pod2man --utf8"
4578else
4579 POD2MAN="pod2man"
4580fi
4581
Blue Swirl952afb72010-09-19 08:36:34 +00004582# Use ASLR, no-SEH and DEP if available
4583if test "$mingw32" = "yes" ; then
4584 for flag in --dynamicbase --no-seh --nxcompat; do
4585 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4586 LDFLAGS="-Wl,$flag $LDFLAGS"
4587 fi
4588 done
4589fi
4590
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004591qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004592qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004593qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004594qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004595
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004596tools=""
4597if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004598 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004599 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4600 tools="qemu-nbd\$(EXESUF) $tools"
David Marchanda75eb032014-09-08 11:17:48 +02004601 tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004602 fi
4603fi
4604if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304605 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004606 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4607 virtfs=yes
4608 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4609 else
4610 if test "$virtfs" = yes; then
Stefan Weil3f3b5382016-04-08 18:11:13 +02004611 error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel"
Meador Inge983eef52012-02-24 14:00:42 +05304612 fi
Andreas Färber17500372012-05-01 01:12:03 +02004613 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004614 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304615 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004616fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004617
4618# Probe for guest agent support/options
4619
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004620if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004621 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Rothfafcaf12015-09-07 18:47:05 -05004622 tools="qemu-ga $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004623 guest_agent=yes
4624 elif [ "$guest_agent" != yes ]; then
4625 guest_agent=no
4626 else
4627 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004628 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004629fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004630
Michael Roth9d6bc272015-08-26 10:49:13 -05004631# Guest agent Window MSI package
4632
4633if test "$guest_agent" != yes; then
4634 if test "$guest_agent_msi" = yes; then
4635 error_exit "MSI guest agent package requires guest agent enabled"
4636 fi
4637 guest_agent_msi=no
4638elif test "$mingw32" != "yes"; then
4639 if test "$guest_agent_msi" = "yes"; then
4640 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4641 fi
4642 guest_agent_msi=no
4643elif ! has wixl; then
4644 if test "$guest_agent_msi" = "yes"; then
4645 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4646 fi
4647 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004648else
4649 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4650 # disabled explicitly
4651 if test "$guest_agent_msi" != "no"; then
4652 guest_agent_msi=yes
4653 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004654fi
4655
Michael Roth1a349042015-08-26 11:14:31 -05004656if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004657 if test "$guest_agent_with_vss" = "yes"; then
4658 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4659 fi
4660
4661 if test "$QEMU_GA_MANUFACTURER" = ""; then
4662 QEMU_GA_MANUFACTURER=QEMU
4663 fi
4664
4665 if test "$QEMU_GA_DISTRO" = ""; then
4666 QEMU_GA_DISTRO=Linux
4667 fi
4668
4669 if test "$QEMU_GA_VERSION" = ""; then
Stefan Weil89138852016-05-16 15:10:20 +02004670 QEMU_GA_VERSION=$(cat $source_path/VERSION)
Michael Roth9d6bc272015-08-26 10:49:13 -05004671 fi
4672
Stefan Weil89138852016-05-16 15:10:20 +02004673 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
Michael Roth9d6bc272015-08-26 10:49:13 -05004674
4675 case "$cpu" in
4676 x86_64)
4677 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4678 ;;
4679 i386)
4680 QEMU_GA_MSI_ARCH="-D Arch=32"
4681 ;;
4682 *)
4683 error_exit "CPU $cpu not supported for building installation package"
4684 ;;
4685 esac
4686fi
4687
Paolo Bonzinica35f782010-05-26 16:08:29 +02004688# Mac OS X ships with a broken assembler
4689roms=
4690if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4691 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4692 "$softmmu" = yes ; then
4693 roms="optionrom"
4694fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004695if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004696 roms="$roms spapr-rtas"
4697fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004698
Christian Borntraeger9933c302013-04-23 01:23:03 +00004699if test "$cpu" = "s390x" ; then
4700 roms="$roms s390-ccw"
4701fi
4702
Richard Henderson964c6fa2013-06-21 19:10:16 -07004703# Probe for the need for relocating the user-only binary.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004704if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07004705 textseg_addr=
4706 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004707 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4708 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004709 textseg_addr=0x60000000
4710 ;;
4711 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004712 # A 256M aligned address, high in the address space, with enough
4713 # room for the code_gen_buffer above it before the stack.
4714 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004715 ;;
4716 esac
4717 if [ -n "$textseg_addr" ]; then
4718 cat > $TMPC <<EOF
4719 int main(void) { return 0; }
4720EOF
4721 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4722 if ! compile_prog "" "$textseg_ldflags"; then
4723 # In case ld does not support -Ttext-segment, edit the default linker
4724 # script via sed to set the .text start addr. This is needed on FreeBSD
4725 # at least.
Peter Maydell92fe2ba2016-06-18 23:05:01 +01004726 if ! $ld --verbose >/dev/null 2>&1; then
4727 error_exit \
4728 "We need to link the QEMU user mode binaries at a" \
4729 "specific text address. Unfortunately your linker" \
4730 "doesn't support either the -Ttext-segment option or" \
4731 "printing the default linker script with --verbose." \
4732 "If you don't want the user mode binaries, pass the" \
4733 "--disable-user option to configure."
4734 fi
4735
Richard Henderson964c6fa2013-06-21 19:10:16 -07004736 $ld --verbose | sed \
4737 -e '1,/==================================================/d' \
4738 -e '/==================================================/,$d' \
4739 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4740 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4741 textseg_ldflags="-Wl,-T../config-host.ld"
4742 fi
4743 fi
4744fi
4745
Cole Robinson02d34f62016-05-06 14:03:09 -04004746echo_version() {
4747 if test "$1" = "yes" ; then
4748 echo "($2)"
4749 fi
4750}
4751
Jan Kiszka50e12062014-10-02 10:03:55 +02004752# prepend pixman and ftd flags after all config tests are done
4753QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4754libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004755
bellard43ce4df2003-06-09 19:53:12 +00004756echo "Install prefix $prefix"
Stefan Weil89138852016-05-16 15:10:20 +02004757echo "BIOS directory $(eval echo $qemu_datadir)"
4758echo "binary directory $(eval echo $bindir)"
4759echo "library directory $(eval echo $libdir)"
4760echo "module directory $(eval echo $qemu_moddir)"
4761echo "libexec directory $(eval echo $libexecdir)"
4762echo "include directory $(eval echo $includedir)"
4763echo "config directory $(eval echo $sysconfdir)"
bellard11d9f692004-04-02 20:55:59 +00004764if test "$mingw32" = "no" ; then
Stefan Weil89138852016-05-16 15:10:20 +02004765echo "local state directory $(eval echo $local_statedir)"
4766echo "Manual directory $(eval echo $mandir)"
bellard43ce4df2003-06-09 19:53:12 +00004767echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004768else
4769echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004770echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004771fi
bellard5a671352003-10-01 00:13:48 +00004772echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004773echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004774echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004775echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004776echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004777echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004778echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004779echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004780echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004781echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004782echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004783echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004784if test "$slirp" = "yes" ; then
4785 echo "smbd $smbd"
4786fi
Fam Zheng17969262014-02-10 14:48:56 +08004787echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004788echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004789echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004790echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004791echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004792echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004793echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004794echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004795echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004796echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004797if test "$darwin" = "yes" ; then
4798 echo "Cocoa support $cocoa"
4799fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004800echo "pixman $pixman"
Stefan Weil89138852016-05-16 15:10:20 +02004801echo "SDL support $sdl $(echo_version $sdl $sdlversion)"
4802echo "GTK support $gtk $(echo_version $gtk $gtk_version)"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004803echo "GTK GL support $gtk_gl"
Stefan Weil89138852016-05-16 15:10:20 +02004804echo "VTE support $vte $(echo_version $vte $vteversion)"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004805echo "GNUTLS support $gnutls"
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09004806echo "GNUTLS rnd $gnutls_rnd"
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01004807echo "libgcrypt $gcrypt"
Daniel P. Berrange37788f22015-10-14 13:14:04 +01004808echo "libgcrypt kdf $gcrypt_kdf"
Stefan Weil89138852016-05-16 15:10:20 +02004809echo "nettle $nettle $(echo_version $nettle $nettle_version)"
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01004810echo "nettle kdf $nettle_kdf"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004811echo "libtasn1 $tasn1"
balrog4d3b6f62008-02-10 16:33:14 +00004812echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004813echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004814echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004815echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004816echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004817echo "Block whitelist (rw) $block_drv_rw_whitelist"
4818echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304819echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004820echo "VNC support $vnc"
4821if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004822 echo "VNC SASL support $vnc_sasl"
4823 echo "VNC JPEG support $vnc_jpeg"
4824 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004825fi
blueswir131422552007-04-16 18:27:06 +00004826if test -n "$sparc_cpu"; then
4827 echo "Target Sparc Arch $sparc_cpu"
4828fi
aliguorie37630c2009-04-22 15:19:10 +00004829echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004830if test "$xen" = "yes" ; then
4831 echo "xen ctrl version $xen_ctrl_version"
Ian Campbell64a7ad62016-01-15 13:23:44 +00004832 echo "pv dom build $xen_pv_domain_build"
Paul Durrant3996e852015-01-20 11:06:19 +00004833fi
aurel322e4d9fb2008-04-08 06:01:02 +00004834echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004835echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004836echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004837echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004838echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004839echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004840echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004841echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004842echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004843echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004844echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004845echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004846echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004847echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004848echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004849echo "madvise $madvise"
4850echo "posix_madvise $posix_madvise"
Stefan Weilee682d22009-10-01 20:10:37 +02004851echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004852echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004853echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004854echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004855echo "Trace backends $trace_backends"
Marc-André Lureau713572a2015-12-10 01:47:46 +01004856if have_backend "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004857echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004858fi
Stefan Weil89138852016-05-16 15:10:20 +02004859echo "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004860echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004861echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004862echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004863echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004864echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004865echo "OpenGL support $opengl"
Gerd Hoffmann014cb152015-12-03 12:56:34 +01004866echo "OpenGL dmabufs $opengl_dmabuf"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004867echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004868echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004869echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004870echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004871echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004872echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004873echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004874echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004875echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304876echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004877echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004878echo "gcov $gcov_tool"
4879echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004880echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004881echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004882echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004883echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004884echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004885echo "lzo support $lzo"
4886echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004887echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004888echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004889echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004890echo "jemalloc support $jemalloc"
Liang Li99f2dbd2016-03-08 13:53:16 +08004891echo "avx2 optimization $avx2_opt"
bellard67b915a2004-03-31 23:37:16 +00004892
Stefan Weil1ba16962011-07-29 22:40:45 +02004893if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004894echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004895fi
bellard97a847b2003-08-10 21:36:04 +00004896
Juan Quintela98ec69a2009-07-16 18:34:18 +02004897config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004898
Stefan Weildbd99ae2013-01-01 18:33:44 +01004899echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4900
Juan Quintela98ec69a2009-07-16 18:34:18 +02004901echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004902echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004903
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004904echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004905echo "prefix=$prefix" >> $config_host_mak
4906echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004907echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004908echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004909echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004910echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004911echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004912echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004913echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4914echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004915echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004916if test "$mingw32" = "no" ; then
4917 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4918fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004919echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004920echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4921echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004922echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004923echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004924
Juan Quintela98ec69a2009-07-16 18:34:18 +02004925echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004926
aurel32f8393942009-04-13 18:45:38 +00004927if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004928 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004929fi
aliguori1625af82009-04-05 17:41:02 +00004930if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004931 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004932fi
bellard7d132992003-03-06 23:23:54 +00004933if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004934 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004935fi
bellard67b915a2004-03-31 23:37:16 +00004936if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004937 echo "CONFIG_WIN32=y" >> $config_host_mak
Stefan Weil89138852016-05-16 15:10:20 +02004938 rc_version=$(cat $source_path/VERSION)
Blue Swirl9fe6de92010-09-26 16:07:57 +00004939 version_major=${rc_version%%.*}
4940 rc_version=${rc_version#*.}
4941 version_minor=${rc_version%%.*}
4942 rc_version=${rc_version#*.}
4943 version_subminor=${rc_version%%.*}
4944 version_micro=0
4945 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4946 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004947 if test "$guest_agent_with_vss" = "yes" ; then
4948 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004949 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004950 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4951 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004952 if test "$guest_agent_ntddscsi" = "yes" ; then
4953 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4954 fi
Michael Roth1a349042015-08-26 11:14:31 -05004955 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004956 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4957 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4958 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4959 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4960 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4961 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4962 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4963 fi
pbrook210fa552007-02-27 21:04:49 +00004964else
Juan Quintela35f4df22009-07-27 16:13:07 +02004965 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004966fi
blueswir1128ab2f2008-08-15 18:33:42 +00004967
Mark McLoughlindffcb712009-10-22 17:49:11 +01004968if test "$linux" = "yes" ; then
4969 echo "CONFIG_LINUX=y" >> $config_host_mak
4970fi
4971
bellard83fb7ad2004-07-05 21:25:26 +00004972if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004973 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004974fi
malcb29fe3e2008-11-18 01:42:22 +00004975
4976if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004977 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004978fi
4979
bellardec530c82006-04-25 22:36:06 +00004980if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004981 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004982 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004983 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004984 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004985 fi
bellardec530c82006-04-25 22:36:06 +00004986fi
Andreas Färber179cf402010-09-20 00:50:43 +02004987if test "$haiku" = "yes" ; then
4988 echo "CONFIG_HAIKU=y" >> $config_host_mak
4989fi
bellard97a847b2003-08-10 21:36:04 +00004990if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004991 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004992fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004993if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004994 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004995fi
bellardc20709a2004-04-21 23:27:19 +00004996if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004997 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004998 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004999fi
ths8a16d272008-07-19 09:56:24 +00005000if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005001 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00005002fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01005003if test "$netmap" = "yes" ; then
5004 echo "CONFIG_NETMAP=y" >> $config_host_mak
5005fi
Gonglei015a33b2014-07-01 20:58:08 +08005006if test "$l2tpv3" = "yes" ; then
5007 echo "CONFIG_L2TPV3=y" >> $config_host_mak
5008fi
Corey Bryant47e98652012-01-26 09:42:26 -05005009if test "$cap_ng" = "yes" ; then
5010 echo "CONFIG_LIBCAP=y" >> $config_host_mak
5011fi
Juan Quintela2358a492009-07-27 16:13:25 +02005012echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005013for drv in $audio_drv_list; do
Stefan Weil89138852016-05-16 15:10:20 +02005014 def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
Juan Quintela98ec69a2009-07-16 18:34:18 +02005015 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00005016done
Juan Quintela67f86e82009-08-03 14:46:59 +02005017if test "$audio_pt_int" = "yes" ; then
5018 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5019fi
malcd5631632009-10-10 01:13:41 +04005020if test "$audio_win_int" = "yes" ; then
5021 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5022fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08005023echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5024echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01005025if test "$vnc" = "yes" ; then
5026 echo "CONFIG_VNC=y" >> $config_host_mak
5027fi
aliguori2f9606b2009-03-06 20:27:28 +00005028if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005029 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00005030fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005031if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005032 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02005033fi
Jes Sorensen821601e2011-03-16 13:33:36 +01005034if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02005035 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02005036fi
aliguori76655d62009-03-06 20:27:37 +00005037if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005038 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00005039fi
Stefan Weilee682d22009-10-01 20:10:37 +02005040if test "$uuid" = "yes" ; then
5041 echo "CONFIG_UUID=y" >> $config_host_mak
5042fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01005043if test "$xfs" = "yes" ; then
5044 echo "CONFIG_XFS=y" >> $config_host_mak
5045fi
Stefan Weil89138852016-05-16 15:10:20 +02005046qemu_version=$(head $source_path/VERSION)
Juan Quintela98ec69a2009-07-16 18:34:18 +02005047echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02005048echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005049echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005050echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02005051if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005052 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00005053fi
Fam Zheng17969262014-02-10 14:48:56 +08005054if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08005055 # $shacmd can generate a hash started with digit, which the compiler doesn't
5056 # like as an symbol. So prefix it with an underscore
Stefan Weil89138852016-05-16 15:10:20 +02005057 echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005058 echo "CONFIG_MODULES=y" >> $config_host_mak
5059fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02005060if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005061 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005062 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02005063 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005064fi
5065if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005066 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00005067fi
5068if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005069 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00005070fi
Riku Voipioebc996f2009-04-21 15:01:51 +03005071if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005072 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03005073fi
Riku Voipio099d6b02009-05-05 12:10:04 +03005074if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005075 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03005076fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01005077if test "$accept4" = "yes" ; then
5078 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5079fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305080if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005081 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05305082fi
Riku Voipioc2882b92009-08-12 15:08:24 +03005083if test "$eventfd" = "yes" ; then
5084 echo "CONFIG_EVENTFD=y" >> $config_host_mak
5085fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02005086if test "$memfd" = "yes" ; then
5087 echo "CONFIG_MEMFD=y" >> $config_host_mak
5088fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005089if test "$fallocate" = "yes" ; then
5090 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5091fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01005092if test "$fallocate_punch_hole" = "yes" ; then
5093 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5094fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03005095if test "$fallocate_zero_range" = "yes" ; then
5096 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5097fi
Kevin Wolfed911432014-09-29 17:12:59 +02005098if test "$posix_fallocate" = "yes" ; then
5099 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5100fi
Peter Maydellc727f472011-01-06 11:05:10 +00005101if test "$sync_file_range" = "yes" ; then
5102 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5103fi
Peter Maydelldace20d2011-01-10 13:11:24 +00005104if test "$fiemap" = "yes" ; then
5105 echo "CONFIG_FIEMAP=y" >> $config_host_mak
5106fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03005107if test "$dup3" = "yes" ; then
5108 echo "CONFIG_DUP3=y" >> $config_host_mak
5109fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01005110if test "$ppoll" = "yes" ; then
5111 echo "CONFIG_PPOLL=y" >> $config_host_mak
5112fi
Alex Blighcd758dd2013-08-21 16:02:44 +01005113if test "$prctl_pr_set_timerslack" = "yes" ; then
5114 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5115fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00005116if test "$epoll" = "yes" ; then
5117 echo "CONFIG_EPOLL=y" >> $config_host_mak
5118fi
5119if test "$epoll_create1" = "yes" ; then
5120 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5121fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00005122if test "$sendfile" = "yes" ; then
5123 echo "CONFIG_SENDFILE=y" >> $config_host_mak
5124fi
Riku Voipio51834342014-06-22 11:25:42 +01005125if test "$timerfd" = "yes" ; then
5126 echo "CONFIG_TIMERFD=y" >> $config_host_mak
5127fi
Riku Voipio9af5c902014-08-12 15:58:57 +03005128if test "$setns" = "yes" ; then
5129 echo "CONFIG_SETNS=y" >> $config_host_mak
5130fi
aurel323b3f24a2009-04-15 16:12:13 +00005131if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005132 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00005133fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00005134if test "$inotify1" = "yes" ; then
5135 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5136fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02005137if test "$byteswap_h" = "yes" ; then
5138 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5139fi
5140if test "$bswap_h" = "yes" ; then
5141 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5142fi
Alexander Graf769ce762009-05-11 17:41:42 +02005143if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005144 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02005145 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005146 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02005147fi
aurel322e4d9fb2008-04-08 06:01:02 +00005148if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005149 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00005150fi
balrogfb599c92008-09-28 23:49:55 +00005151if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005152 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02005153 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00005154fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01005155if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03005156 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5157fi
Anthony Liguorie18df142011-07-19 14:50:29 -05005158echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005159if test "$gtk" = "yes" ; then
5160 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04005161 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005162 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005163 echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02005164 if test "$gtk_gl" = "yes" ; then
5165 echo "CONFIG_GTK_GL=y" >> $config_host_mak
5166 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005167fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01005168if test "$gnutls" = "yes" ; then
5169 echo "CONFIG_GNUTLS=y" >> $config_host_mak
5170fi
Daniel P. Berrangeb917da42015-10-31 14:39:52 +09005171if test "$gnutls_rnd" = "yes" ; then
5172 echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5173fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005174if test "$gcrypt" = "yes" ; then
5175 echo "CONFIG_GCRYPT=y" >> $config_host_mak
Daniel P. Berrange37788f22015-10-14 13:14:04 +01005176 if test "$gcrypt_kdf" = "yes" ; then
5177 echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5178 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01005179fi
Daniel P. Berrange91bfcdb2015-10-16 16:36:53 +01005180if test "$nettle" = "yes" ; then
5181 echo "CONFIG_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005182 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangefff2f982016-03-29 15:47:51 +01005183 if test "$nettle_kdf" = "yes" ; then
5184 echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5185 fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005186fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005187if test "$tasn1" = "yes" ; then
5188 echo "CONFIG_TASN1=y" >> $config_host_mak
5189fi
Daniel P. Berrange559607e2015-02-27 16:19:33 +00005190if test "$have_ifaddrs_h" = "yes" ; then
5191 echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5192fi
Jan Vesely277abf12016-04-29 13:15:23 -04005193
5194# Work around a system header bug with some kernel/XFS header
5195# versions where they both try to define 'struct fsxattr':
5196# xfs headers will not try to redefine structs from linux headers
5197# if this macro is set.
5198if test "$have_fsxattr" = "yes" ; then
5199 echo "HAVE_FSXATTR=y" >> $config_host_mak
5200fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005201if test "$vte" = "yes" ; then
5202 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005203 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5204fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005205if test "$virglrenderer" = "yes" ; then
5206 echo "CONFIG_VIRGL=y" >> $config_host_mak
5207 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5208 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5209fi
aliguorie37630c2009-04-22 15:19:10 +00005210if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005211 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005212 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
Ian Campbell64a7ad62016-01-15 13:23:44 +00005213 if test "$xen_pv_domain_build" = "yes" ; then
5214 echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5215 fi
aliguorie37630c2009-04-22 15:19:10 +00005216fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005217if test "$linux_aio" = "yes" ; then
5218 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5219fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005220if test "$attr" = "yes" ; then
5221 echo "CONFIG_ATTR=y" >> $config_host_mak
5222fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005223if test "$libattr" = "yes" ; then
5224 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5225fi
Meador Inge983eef52012-02-24 14:00:42 +05305226if test "$virtfs" = "yes" ; then
5227 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005228fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005229if test "$vhost_scsi" = "yes" ; then
5230 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5231fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005232if test "$vhost_net" = "yes" ; then
5233 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5234fi
ths77755342008-11-27 15:45:16 +00005235if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005236 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005237fi
aliguoribf9298b2008-12-05 20:05:26 +00005238if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005239 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005240fi
aliguoriceb42de2009-04-07 18:43:28 +00005241if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005242 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005243fi
aurel32f652e6a2008-12-16 10:43:48 +00005244if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005245 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005246fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005247if test "$signalfd" = "yes" ; then
5248 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5249fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005250if test "$tcg_interpreter" = "yes" ; then
5251 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5252fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005253if test "$fdatasync" = "yes" ; then
5254 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5255fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005256if test "$madvise" = "yes" ; then
5257 echo "CONFIG_MADVISE=y" >> $config_host_mak
5258fi
5259if test "$posix_madvise" = "yes" ; then
5260 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5261fi
bellard97a847b2003-08-10 21:36:04 +00005262
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005263if test "$spice" = "yes" ; then
5264 echo "CONFIG_SPICE=y" >> $config_host_mak
5265fi
5266
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005267if test "$smartcard" = "yes" ; then
5268 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005269fi
5270
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005271if test "$libusb" = "yes" ; then
5272 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5273fi
5274
Hans de Goede69354a82011-07-19 11:04:10 +02005275if test "$usb_redir" = "yes" ; then
5276 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5277fi
5278
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005279if test "$opengl" = "yes" ; then
5280 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005281 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005282 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Gerd Hoffmann014cb152015-12-03 12:56:34 +01005283 if test "$opengl_dmabuf" = "yes" ; then
5284 echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5285 fi
Michael Walle20ff0752011-03-07 23:32:39 +01005286fi
5287
Liang Li99f2dbd2016-03-08 13:53:16 +08005288if test "$avx2_opt" = "yes" ; then
5289 echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5290fi
5291
qiaonuohan607dacd2014-02-18 14:11:30 +08005292if test "$lzo" = "yes" ; then
5293 echo "CONFIG_LZO=y" >> $config_host_mak
5294fi
5295
5296if test "$snappy" = "yes" ; then
5297 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5298fi
5299
Peter Wu6b383c02015-01-06 18:48:14 +01005300if test "$bzip2" = "yes" ; then
5301 echo "CONFIG_BZIP2=y" >> $config_host_mak
5302 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5303fi
5304
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005305if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005306 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005307 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5308 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005309fi
5310
Peter Lieven6542aa92014-02-03 10:26:13 +01005311if test "$libnfs" = "yes" ; then
5312 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5313fi
5314
Eduardo Otubof7945732012-08-14 18:44:05 -03005315if test "$seccomp" = "yes"; then
5316 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5317fi
5318
bellard83fb7ad2004-07-05 21:25:26 +00005319# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005320if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005321 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005322fi
5323
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005324if test "$localtime_r" = "yes" ; then
5325 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5326fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005327if test "$qom_cast_debug" = "yes" ; then
5328 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5329fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005330if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005331 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005332 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5333 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005334fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005335
Peter Maydell7c2acc72013-04-08 12:11:27 +01005336echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005337if test "$coroutine_pool" = "yes" ; then
5338 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5339else
5340 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5341fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305342
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305343if test "$open_by_handle_at" = "yes" ; then
5344 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5345fi
5346
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305347if test "$linux_magic_h" = "yes" ; then
5348 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5349fi
5350
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005351if test "$pragma_diagnostic_available" = "yes" ; then
5352 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005353fi
5354
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005355if test "$valgrind_h" = "yes" ; then
5356 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5357fi
5358
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005359if test "$has_environ" = "yes" ; then
5360 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5361fi
5362
Richard Henderson76a347e2012-12-28 14:17:02 -08005363if test "$cpuid_h" = "yes" ; then
5364 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5365fi
5366
Richard Hendersonf5401662013-02-16 12:46:59 -08005367if test "$int128" = "yes" ; then
5368 echo "CONFIG_INT128=y" >> $config_host_mak
5369fi
5370
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005371if test "$getauxval" = "yes" ; then
5372 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5373fi
5374
Bharata B Raoeb100392012-09-24 14:42:45 +05305375if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005376 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005377 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5378 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305379fi
5380
Jeff Codyd85fa9e2016-04-05 10:40:09 -04005381if test "$glusterfs_xlator_opt" = "yes" ; then
5382 echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5383fi
5384
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305385if test "$glusterfs_discard" = "yes" ; then
5386 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5387fi
5388
Bharata B Rao7c815372013-12-21 14:51:25 +05305389if test "$glusterfs_zerofill" = "yes" ; then
5390 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5391fi
5392
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005393if test "$archipelago" = "yes" ; then
5394 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5395 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5396fi
5397
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005398if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005399 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005400 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5401 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005402fi
5403
Jeff Cody4f18b782013-10-30 10:44:39 -04005404if test "$vhdx" = "yes" ; then
5405 echo "CONFIG_VHDX=y" >> $config_host_mak
5406fi
5407
blueswir168063642008-11-22 21:03:55 +00005408# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005409if test "$libusb" = "yes"; then
5410 echo "HOST_USB=libusb legacy" >> $config_host_mak
5411else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005412 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005413fi
blueswir168063642008-11-22 21:03:55 +00005414
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005415# TPM passthrough support?
5416if test "$tpm" = "yes"; then
5417 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5418 if test "$tpm_passthrough" = "yes"; then
5419 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5420 fi
5421fi
5422
Lluís Vilanova5b808272014-05-27 15:02:14 +02005423echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5424if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005425 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305426fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005427if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005428 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5429 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005430 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005431fi
Paolo Bonzinied7f5f12016-01-07 16:55:30 +03005432if have_backend "log"; then
5433 echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
Lluís6d8a7642011-08-31 20:30:43 +02005434fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005435if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005436 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5437fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005438if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005439 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5440 if test "$trace_backend_stap" = "yes" ; then
5441 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5442 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005443fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005444if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005445 if test "$linux" = "yes" ; then
5446 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005447 else
Stewart Smith21684af2014-01-24 12:39:10 +11005448 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005449 fi
5450fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005451echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5452
Michael R. Hines2da776d2013-07-22 10:01:54 -04005453if test "$rdma" = "yes" ; then
5454 echo "CONFIG_RDMA=y" >> $config_host_mak
5455fi
5456
Laurent Vivier575b22b2016-06-02 22:14:15 +02005457if test "$have_rtnetlink" = "yes" ; then
5458 echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5459fi
5460
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005461# Hold two types of flag:
5462# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5463# a thread we have a handle to
5464# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5465# platform
5466if test "$pthread_setname_np" = "yes" ; then
5467 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5468 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5469fi
5470
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005471if test "$tcg_interpreter" = "yes"; then
5472 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5473elif test "$ARCH" = "sparc64" ; then
5474 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5475elif test "$ARCH" = "s390x" ; then
5476 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005477elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005478 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005479elif test "$ARCH" = "ppc64" ; then
5480 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005481else
5482 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5483fi
5484QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5485
Juan Quintela98ec69a2009-07-16 18:34:18 +02005486echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005487echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005488echo "MAKE=$make" >> $config_host_mak
5489echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005490echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5491echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Michael Tokareve999ee42016-01-27 14:36:43 +03005492echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5493echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
Blue Swirlc886edf2011-07-22 21:08:09 +00005494echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005495echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005496if $iasl -h > /dev/null 2>&1; then
5497 echo "IASL=$iasl" >> $config_host_mak
5498fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005499echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005500echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005501echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005502echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005503echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005504echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005505echo "AS=$as" >> $config_host_mak
5506echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005507echo "OBJCOPY=$objcopy" >> $config_host_mak
5508echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005509echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005510echo "WINDRES=$windres" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005511echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005512echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005513echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005514echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005515if test "$sparse" = "yes" ; then
5516 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005517 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005518 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005519 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5520 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5521fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005522if test "$cross_prefix" != ""; then
5523 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5524else
5525 echo "AUTOCONF_HOST := " >> $config_host_mak
5526fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005527echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005528echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
James Clarke6969ec62016-06-06 12:02:50 +01005529echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005530echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005531echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005532echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005533echo "DSOSUF=$DSOSUF" >> $config_host_mak
5534echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005535echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange90246032015-09-21 17:25:34 +01005536echo "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5537echo "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005538echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005539echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005540if test "$gcov" = "yes" ; then
5541 echo "CONFIG_GCOV=y" >> $config_host_mak
5542 echo "GCOV=$gcov_tool" >> $config_host_mak
5543fi
Juan Quintela804edf22009-07-27 16:12:49 +02005544
Peter Maydell6efd7512011-11-30 11:59:04 +00005545# use included Linux headers
5546if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005547 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005548 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005549 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005550 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005551 ;;
5552 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005553 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005554 ;;
5555 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005556 linux_arch=s390
5557 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005558 aarch64)
5559 linux_arch=arm64
5560 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005561 mips64)
5562 linux_arch=mips
5563 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005564 *)
5565 # For most CPUs the kernel architecture name and QEMU CPU name match.
5566 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005567 ;;
5568 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005569 # For non-KVM architectures we will not have asm headers
5570 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5571 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5572 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005573fi
5574
bellard1d14ffa2005-10-30 18:58:22 +00005575for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005576target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005577config_target_mak=$target_dir/config-target.mak
Stefan Weil89138852016-05-16 15:10:20 +02005578target_name=$(echo $target | cut -d '-' -f 1)
bellard97a847b2003-08-10 21:36:04 +00005579target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005580
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005581case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005582 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 +02005583 target_bigendian=yes
5584 ;;
5585esac
bellard97a847b2003-08-10 21:36:04 +00005586target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005587target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005588target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005589target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005590case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005591 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005592 target_softmmu="yes"
5593 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005594 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005595 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005596 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005597 fi
pbrook9e407a82007-05-26 16:38:53 +00005598 target_user_only="yes"
5599 target_linux_user="yes"
5600 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005601 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005602 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005603 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005604 fi
blueswir184778502008-10-26 20:33:16 +00005605 target_user_only="yes"
5606 target_bsd_user="yes"
5607 ;;
pbrook9e407a82007-05-26 16:38:53 +00005608 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005609 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005610 exit 1
5611 ;;
5612esac
ths831b7822007-01-18 20:06:33 +00005613
bellard97a847b2003-08-10 21:36:04 +00005614mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005615echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005616
pbrooke5fe0c52006-06-11 13:32:59 +00005617bflt="no"
Stefan Weil89138852016-05-16 15:10:20 +02005618interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
pbrook56aebc82008-10-11 17:55:29 +00005619gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005620
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005621TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005622TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005623TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005624
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005625case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005626 i386)
aurel322408a522008-04-20 20:19:44 +00005627 ;;
5628 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005629 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005630 ;;
5631 alpha)
aurel322408a522008-04-20 20:19:44 +00005632 ;;
5633 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005634 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005635 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005636 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005637 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005638 aarch64)
5639 TARGET_BASE_ARCH=arm
5640 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005641 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 +01005642 ;;
aurel322408a522008-04-20 20:19:44 +00005643 cris)
aurel322408a522008-04-20 20:19:44 +00005644 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005645 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005646 ;;
aurel322408a522008-04-20 20:19:44 +00005647 m68k)
aurel322408a522008-04-20 20:19:44 +00005648 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005649 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005650 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005651 microblaze|microblazeel)
5652 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005653 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005654 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005655 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005656 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005657 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005658 ;;
5659 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005660 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005661 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005662 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005663 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005664 ;;
5665 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005666 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005667 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005668 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005669 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005670 moxie)
5671 ;;
Jia Liue67db062012-07-20 15:50:39 +08005672 or32)
5673 TARGET_ARCH=openrisc
5674 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005675 ;;
aurel322408a522008-04-20 20:19:44 +00005676 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005677 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005678 ;;
5679 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005680 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005681 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005682 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005683 ;;
5684 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005685 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005686 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005687 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005688 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005689 ppc64le)
5690 TARGET_ARCH=ppc64
5691 TARGET_BASE_ARCH=ppc
5692 TARGET_ABI_DIR=ppc
Anton Blanchard1438eff2016-01-15 16:00:51 +01005693 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 -05005694 ;;
aurel322408a522008-04-20 20:19:44 +00005695 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005696 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005697 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005698 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005699 echo "TARGET_ABI32=y" >> $config_target_mak
Anton Blanchard1438eff2016-01-15 16:00:51 +01005700 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
aurel322408a522008-04-20 20:19:44 +00005701 ;;
5702 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005703 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005704 bflt="yes"
5705 ;;
5706 sparc)
aurel322408a522008-04-20 20:19:44 +00005707 ;;
5708 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005709 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005710 ;;
5711 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005712 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005713 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005714 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005715 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005716 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005717 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005718 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 +01005719 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005720 tilegx)
5721 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005722 tricore)
5723 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005724 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005725 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005726 xtensa|xtensaeb)
5727 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005728 ;;
aurel322408a522008-04-20 20:19:44 +00005729 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005730 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005731 ;;
5732esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005733# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5734if [ "$TARGET_BASE_ARCH" = "" ]; then
5735 TARGET_BASE_ARCH=$TARGET_ARCH
5736fi
5737
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005738symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5739
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005740upper() {
5741 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5742}
5743
Stefan Weil89138852016-05-16 15:10:20 +02005744target_arch_name="$(upper $TARGET_ARCH)"
Juan Quintela25be2102009-10-07 02:41:00 +02005745echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005746echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005747echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005748if [ "$TARGET_ABI_DIR" = "" ]; then
5749 TARGET_ABI_DIR=$TARGET_ARCH
5750fi
Juan Quintela25be2102009-10-07 02:41:00 +02005751echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005752if [ "$HOST_VARIANT_DIR" != "" ]; then
5753 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5754fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005755case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005756 i386|x86_64)
5757 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005758 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005759 if test "$xen_pci_passthrough" = yes; then
5760 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5761 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005762 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005763 ;;
5764 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005765esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005766case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005767 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005768 # Make sure the target and host cpus are compatible
5769 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005770 \( "$target_name" = "$cpu" -o \
5771 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5772 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5773 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5774 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005775 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005776 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005777 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5778 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5779 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005780 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005781 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005782 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
Marc-André Lureau421f4442015-10-26 15:32:00 +01005783 echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005784 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005785 fi
5786esac
bellardde83cd02003-06-15 20:25:43 +00005787if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005788 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005789fi
5790if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005791 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005792fi
bellard997344f2003-10-27 21:10:39 +00005793if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005794 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005795 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005796fi
ths831b7822007-01-18 20:06:33 +00005797if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005798 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005799fi
pbrook56aebc82008-10-11 17:55:29 +00005800list=""
5801if test ! -z "$gdb_xml_files" ; then
5802 for x in $gdb_xml_files; do
5803 list="$list $source_path/gdb-xml/$x"
5804 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005805 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005806fi
bellardde83cd02003-06-15 20:25:43 +00005807
pbrooke5fe0c52006-06-11 13:32:59 +00005808if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005809 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005810fi
blueswir184778502008-10-26 20:33:16 +00005811if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005812 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005813fi
bellard5b0753e2005-03-01 21:37:28 +00005814
Juan Quintela4afddb52009-08-03 14:46:45 +02005815# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005816
Juan Quintela4afddb52009-08-03 14:46:45 +02005817cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005818ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005819
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005820disas_config() {
5821 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5822 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5823}
5824
Juan Quintela64656022009-08-03 14:46:53 +02005825for i in $ARCH $TARGET_BASE_ARCH ; do
5826 case "$i" in
5827 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005828 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005829 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005830 aarch64)
5831 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005832 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005833 fi
5834 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005835 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005836 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005837 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005838 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005839 fi
Juan Quintela64656022009-08-03 14:46:53 +02005840 ;;
5841 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005842 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005843 ;;
5844 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005845 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005846 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005847 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005848 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005849 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005850 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005851 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005852 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005853 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005854 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005855 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005856 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005857 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005858 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005859 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005860 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005861 ;;
5862 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005863 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005864 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005865 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005866 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005867 ;;
Jia Liue67db062012-07-20 15:50:39 +08005868 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005869 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005870 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005871 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005872 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005873 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005874 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005875 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005876 ;;
5877 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005878 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005879 ;;
5880 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005881 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005882 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005883 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005884 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005885 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005886 esac
5887done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005888if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005889 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005890fi
Juan Quintela64656022009-08-03 14:46:53 +02005891
Juan Quintela6ee71262009-08-03 14:46:47 +02005892case "$ARCH" in
5893alpha)
5894 # Ensure there's only a single GP
5895 cflags="-msmall-data $cflags"
5896;;
5897esac
5898
Juan Quintelad02c1db2009-08-03 14:46:50 +02005899if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005900 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005901 if test "$target_linux_user" = "yes" ; then
5902 cflags="-p $cflags"
5903 ldflags="-p $ldflags"
5904 fi
5905 if test "$target_softmmu" = "yes" ; then
5906 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005907 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005908 fi
5909fi
5910
Juan Quintela9b8e1112009-08-03 14:46:46 +02005911if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005912 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005913fi
Juan Quintelafa282482009-07-22 22:37:39 +02005914
Juan Quintela25be2102009-10-07 02:41:00 +02005915echo "LDFLAGS+=$ldflags" >> $config_target_mak
5916echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005917
bellard97a847b2003-08-10 21:36:04 +00005918done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005919
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005920if [ "$pixman" = "internal" ]; then
5921 echo "config-host.h: subdir-pixman" >> $config_host_mak
5922fi
5923
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005924if [ "$dtc_internal" = "yes" ]; then
5925 echo "config-host.h: subdir-dtc" >> $config_host_mak
5926fi
5927
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005928if test "$numa" = "yes"; then
5929 echo "CONFIG_NUMA=y" >> $config_host_mak
5930fi
5931
John Snowfd0e6052015-03-25 18:57:39 -04005932if test "$ccache_cpp2" = "yes"; then
5933 echo "export CCACHE_CPP2=y" >> $config_host_mak
5934fi
5935
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005936# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005937DIRS="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 +04005938DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005939DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005940DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005941DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005942FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5943FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005944FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005945FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005946FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005947FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005948FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005949FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005950for bios_file in \
5951 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005952 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005953 $source_path/pc-bios/*.rom \
5954 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005955 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005956 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005957 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005958 $source_path/pc-bios/palcode-*
5959do
Stefan Weil89138852016-05-16 15:10:20 +02005960 FILES="$FILES pc-bios/$(basename $bios_file)"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005961done
Stefan Weil89138852016-05-16 15:10:20 +02005962for test_file in $(find $source_path/tests/acpi-test-data -type f)
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005963do
Stefan Weil89138852016-05-16 15:10:20 +02005964 FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005965done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005966mkdir -p $DIRS
5967for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005968 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005969 symlink "$source_path/$f" "$f"
5970 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005971done
Paul Brook1ad21342009-05-19 16:17:58 +01005972
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005973# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005974for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005975 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005976 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005977 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005978 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005979 echo "CC=$cc" >> $config_mak
5980 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005981 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005982 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005983 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005984 echo "LD=$ld" >> $config_mak
5985done
5986
Max Reitz76c75602014-05-24 23:24:56 +02005987# set up qemu-iotests in this build directory
5988iotests_common_env="tests/qemu-iotests/common.env"
5989iotests_check="tests/qemu-iotests/check"
5990
5991echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5992echo >> "$iotests_common_env"
5993echo "export PYTHON='$python'" >> "$iotests_common_env"
5994
5995if [ ! -e "$iotests_check" ]; then
5996 symlink "$source_path/$iotests_check" "$iotests_check"
5997fi
5998
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005999# Save the configure command line for later reuse.
6000cat <<EOD >config.status
6001#!/bin/sh
6002# Generated by configure.
6003# Run this file to recreate the current configuration.
6004# Compiler output produced by configure, useful for debugging
6005# configure, is in config.log if it exists.
6006EOD
6007printf "exec" >>config.status
6008printf " '%s'" "$0" "$@" >>config.status
Dr. David Alan Gilbertcf7cc922016-01-12 11:58:48 +00006009echo ' "$@"' >>config.status
Michael S. Tsirkindc655402014-03-09 17:37:49 +02006010chmod +x config.status
6011
Peter Maydell8cd05ab2014-05-23 17:07:24 +01006012rm -r "$TMPDIR1"