blob: 8b673fdc345880166e8bb542aad883cc3e14000a [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
Peter Maydell8cd05ab2014-05-23 17:07:24 +010011# Temporary directory used for files created while
12# configure runs. Since it is in the build directory
13# we can safely blow away any previous version of it
14# (and we need not jump through hoops to try to delete
15# it when configure exits.)
16TMPDIR1="config-temp"
17rm -rf "${TMPDIR1}"
18mkdir -p "${TMPDIR1}"
19if [ $? -ne 0 ]; then
20 echo "ERROR: failed to create temporary directory"
21 exit 1
bellard7d132992003-03-06 23:23:54 +000022fi
23
Peter Maydell8cd05ab2014-05-23 17:07:24 +010024TMPB="qemu-conf"
25TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050026TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000027TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Don Slutz66518bf2014-01-02 21:12:46 -050028TMPL="${TMPDIR1}/${TMPB}.lo"
29TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010030TMPE="${TMPDIR1}/${TMPB}.exe"
bellard7d132992003-03-06 23:23:54 +000031
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020032rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000033
Peter Maydellb48e3612011-11-23 17:26:44 +000034# Print a helpful header at the top of config.log
35echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000036printf "# Configured with:" >> config.log
37printf " '%s'" "$0" "$@" >> config.log
38echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000039echo "#" >> config.log
40
Peter Maydell76ad07a2013-04-08 12:11:26 +010041error_exit() {
42 echo
43 echo "ERROR: $1"
44 while test -n "$2"; do
45 echo " $2"
46 shift
47 done
48 echo
49 exit 1
50}
51
Peter Maydell9c83ffd2014-02-25 18:27:49 +000052do_compiler() {
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
55 local compiler="$1"
56 shift
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010059 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
64 return 0
65 fi
66 # Don't bother rerunning the compile if we were already using -Werror
67 case "$*" in
68 *-Werror*)
69 return 0
70 ;;
71 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000072 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010074 error_exit "configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010078}
79
Peter Maydell9c83ffd2014-02-25 18:27:49 +000080do_cc() {
81 do_compiler "$cc" "$@"
82}
83
84do_cxx() {
85 do_compiler "$cxx" "$@"
86}
87
88update_cxxflags() {
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
92 QEMU_CXXFLAGS=
93 for arg in $QEMU_CFLAGS; do
94 case $arg in
95 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
96 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
97 ;;
98 *)
99 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
100 ;;
101 esac
102 done
103}
104
Juan Quintela52166aa2009-08-03 14:46:03 +0200105compile_object() {
Peter Maydell8dc38a72012-07-18 15:10:28 +0100106 do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200107}
108
109compile_prog() {
110 local_cflags="$1"
111 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100112 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200113}
114
Don Slutz66518bf2014-01-02 21:12:46 -0500115do_libtool() {
116 local mode=$1
117 shift
118 # Run the compiler, capturing its output to the log.
119 echo $libtool $mode --tag=CC $cc "$@" >> config.log
120 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
121 # Test passed. If this is an --enable-werror build, rerun
122 # the test with -Werror and bail out if it fails. This
123 # makes warning-generating-errors in configure test code
124 # obvious to developers.
125 if test "$werror" != "yes"; then
126 return 0
127 fi
128 # Don't bother rerunning the compile if we were already using -Werror
129 case "$*" in
130 *-Werror*)
131 return 0
132 ;;
133 esac
134 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
135 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
136 error_exit "configure test passed without -Werror but failed with -Werror." \
137 "This is probably a bug in the configure script. The failing command" \
138 "will be at the bottom of config.log." \
139 "You can run configure with --disable-werror to bypass this check."
140}
141
142libtool_prog() {
143 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
144 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
145}
146
Paolo Bonzini11568d62010-12-23 11:43:58 +0100147# symbolically link $1 to $2. Portable version of "ln -sf".
148symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100149 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800150 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100151 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100152}
153
Loïc Minier0dba6192010-01-28 21:26:51 +0000154# check whether a command is available to this shell (may be either an
155# executable or a builtin)
156has() {
157 type "$1" >/dev/null 2>&1
158}
159
160# search for an executable in PATH
161path_of() {
162 local_command="$1"
163 local_ifs="$IFS"
164 local_dir=""
165
166 # pathname has a dir component?
167 if [ "${local_command#*/}" != "$local_command" ]; then
168 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
169 echo "$local_command"
170 return 0
171 fi
172 fi
173 if [ -z "$local_command" ]; then
174 return 1
175 fi
176
177 IFS=:
178 for local_dir in $PATH; do
179 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
180 echo "$local_dir/$local_command"
181 IFS="${local_ifs:-$(printf ' \t\n')}"
182 return 0
183 fi
184 done
185 # not found
186 IFS="${local_ifs:-$(printf ' \t\n')}"
187 return 1
188}
189
Lluís Vilanova5b808272014-05-27 15:02:14 +0200190have_backend () {
191 echo "$trace_backends" | grep "$1" >/dev/null
192}
193
bellard7d132992003-03-06 23:23:54 +0000194# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100195source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200196cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300197iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000198interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000199static="no"
bellard7d132992003-03-06 23:23:54 +0000200cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000201audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800202block_drv_rw_whitelist=""
203block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000204host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200205libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200206libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200207audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400208audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200209cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500210libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100211debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100212stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000213
Stefan Weilafb63eb2012-09-26 22:04:38 +0200214# Don't accept a target_list environment variable.
215unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100216
217# Default value for a variable defining feature "foo".
218# * foo="no" feature will only be used if --enable-foo arg is given
219# * foo="" feature will be searched for, and if found, will be used
220# unless --disable-foo is given
221# * foo="yes" this value will only be set by --enable-foo flag.
222# feature will searched for,
223# if not found, configure exits with error
224#
225# Always add --enable-foo and --disable-foo command line args.
226# Distributions want to ensure that several features are compiled in, and it
227# is impossible without a --enable-foo that exits if a feature is not found.
228
229bluez=""
230brlapi=""
231curl=""
232curses=""
233docs=""
234fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100235netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200236pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100237sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000238sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530239virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100240vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100241sparse="no"
242uuid=""
243vde=""
244vnc_tls=""
245vnc_sasl=""
246vnc_jpeg=""
247vnc_png=""
Tim Hardeck7536ee42013-01-21 11:04:44 +0100248vnc_ws=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100249xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000250xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000251xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100252linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500253cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100254attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200255libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100256xfs=""
257
Bradd41a75a2011-07-26 23:11:26 -0400258vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000259vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400260kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400261rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100262gprof="no"
263debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100264debug="no"
265strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200266tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100267bigendian="no"
268mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000269gcov="no"
270gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100271EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800272DSOSUF=".so"
273LDFLAGS_SHARED="-shared"
274modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100275prefix="/usr/local"
276mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300277datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300278qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100279bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300280libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400281libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200282includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100283sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300284local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100285confsuffix="/qemu"
286slirp="yes"
287fmod_lib=""
288fmod_inc=""
289oss_lib=""
290bsd="no"
291linux="no"
292solaris="no"
293profiler="no"
294cocoa="no"
295softmmu="yes"
296linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100297bsd_user="no"
Peter Maydell30163d82012-10-09 03:16:49 +0000298guest_base="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100299aix="no"
300blobs="yes"
301pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200302pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100303zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200304qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200305trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100306trace_file="trace"
307spice=""
308rbd=""
Robert Relyea111a38b2010-11-28 16:36:38 +0200309smartcard_nss=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100310libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200311usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100312opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300313zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200314lzo=""
315snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100316bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400317guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400318guest_agent_with_vss="no"
319vss_win32_sdk=""
320win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100321want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100322libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100323libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100324coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200325coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300326seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530327glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530328glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530329glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100330archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600331gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200332gtkabi=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100333vte=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400334tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100335libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400336vhdx=""
Stefan Weilb25c9df2014-04-29 08:21:16 +0200337quorum=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800338numa=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100339
aliguoriac0df512008-12-29 17:14:15 +0000340# parse CC options first
341for opt do
342 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
343 case "$opt" in
344 --cross-prefix=*) cross_prefix="$optarg"
345 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100346 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000347 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400348 --cxx=*) CXX="$optarg"
349 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100350 --source-path=*) source_path="$optarg"
351 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200352 --cpu=*) cpu="$optarg"
353 ;;
Juan Quintelaa558ee12009-08-03 14:46:21 +0200354 --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100355 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200356 ;;
357 --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100358 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200359 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100360 --enable-debug-info) debug_info="yes"
361 ;;
362 --disable-debug-info) debug_info="no"
363 ;;
aliguoriac0df512008-12-29 17:14:15 +0000364 esac
365done
aliguoriac0df512008-12-29 17:14:15 +0000366# OS specific
367# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100368# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000369
Peter Maydelle49d0212012-12-07 15:39:13 +0000370# Preferred compiler:
371# ${CC} (if set)
372# ${cross_prefix}gcc (if cross-prefix specified)
373# system compiler
374if test -z "${CC}${cross_prefix}"; then
375 cc="$host_cc"
376else
377 cc="${CC-${cross_prefix}gcc}"
378fi
379
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400380if test -z "${CXX}${cross_prefix}"; then
381 cxx="c++"
382else
383 cxx="${CXX-${cross_prefix}g++}"
384fi
385
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500386ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000387as="${AS-${cross_prefix}as}"
388cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500389objcopy="${OBJCOPY-${cross_prefix}objcopy}"
390ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400391libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200392nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500393strip="${STRIP-${cross_prefix}strip}"
394windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300395pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
396query_pkg_config() {
397 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
398}
399pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500400sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000401sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000402
Peter Maydell45d285a2013-10-21 21:03:06 +0100403# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
404ARFLAGS="${ARFLAGS-rv}"
405
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200406# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000407QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400408QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100409QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200410QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200411QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100412if test "$debug_info" = "yes"; then
413 CFLAGS="-g $CFLAGS"
414 LDFLAGS="-g $LDFLAGS"
415fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200416
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100417# make source path absolute
418source_path=`cd "$source_path"; pwd`
419
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300420# running configure in the source tree?
421# we know that's the case if configure is there.
422if test -f "./configure"; then
423 pwd_is_source_path="y"
424else
425 pwd_is_source_path="n"
426fi
427
aliguoriac0df512008-12-29 17:14:15 +0000428check_define() {
429cat > $TMPC <<EOF
430#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000431#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000432#endif
433int main(void) { return 0; }
434EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200435 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000436}
437
Peter Maydellbbea4052012-08-14 15:35:34 +0100438if check_define __linux__ ; then
439 targetos="Linux"
440elif check_define _WIN32 ; then
441 targetos='MINGW32'
442elif check_define __OpenBSD__ ; then
443 targetos='OpenBSD'
444elif check_define __sun__ ; then
445 targetos='SunOS'
446elif check_define __HAIKU__ ; then
447 targetos='Haiku'
448else
449 targetos=`uname -s`
450fi
451
452# Some host OSes need non-standard checks for which CPU to use.
453# Note that these checks are broken for cross-compilation: if you're
454# cross-compiling to one of these OSes then you'll need to specify
455# the correct CPU with the --cpu option.
456case $targetos in
457Darwin)
458 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
459 # run 64-bit userspace code.
460 # If the user didn't specify a CPU explicitly and the kernel says this is
461 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
462 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
463 cpu="x86_64"
464 fi
465 ;;
466SunOS)
467 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
468 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
469 cpu="x86_64"
470 fi
471esac
472
Juan Quintela2ff6b912009-08-03 14:45:55 +0200473if test ! -z "$cpu" ; then
474 # command line argument
475 :
476elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000477 cpu="i386"
478elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700479 if check_define __ILP32__ ; then
480 cpu="x32"
481 else
482 cpu="x86_64"
483 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000484elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000485 if check_define __arch64__ ; then
486 cpu="sparc64"
487 else
488 cpu="sparc"
489 fi
malcfdf7ed92009-01-14 18:39:52 +0000490elif check_define _ARCH_PPC ; then
491 if check_define _ARCH_PPC64 ; then
492 cpu="ppc64"
493 else
494 cpu="ppc"
495 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200496elif check_define __mips__ ; then
497 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200498elif check_define __ia64__ ; then
499 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200500elif check_define __s390__ ; then
501 if check_define __s390x__ ; then
502 cpu="s390x"
503 else
504 cpu="s390"
505 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100506elif check_define __arm__ ; then
507 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100508elif check_define __aarch64__ ; then
509 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400510elif check_define __hppa__ ; then
511 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000512else
malcfdf7ed92009-01-14 18:39:52 +0000513 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000514fi
515
Peter Maydell359bc952011-12-24 13:07:25 +0000516ARCH=
517# Normalise host CPU name and set ARCH.
518# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000519case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700520 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200521 cpu="$cpu"
522 ;;
bellard7d132992003-03-06 23:23:54 +0000523 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000524 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000525 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000526 x86_64|amd64)
527 cpu="x86_64"
528 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100529 armv*b|armv*l|arm)
530 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000531 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100532 aarch64)
533 cpu="aarch64"
534 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200535 mips*)
536 cpu="mips"
537 ;;
blueswir131422552007-04-16 18:27:06 +0000538 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000539 cpu="sparc"
540 ;;
bellard7d132992003-03-06 23:23:54 +0000541 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000542 # This will result in either an error or falling back to TCI later
543 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000544 ;;
545esac
Peter Maydell359bc952011-12-24 13:07:25 +0000546if test -z "$ARCH"; then
547 ARCH="$cpu"
548fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200549
bellard7d132992003-03-06 23:23:54 +0000550# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200551
Stacey Sonadfc3e92014-06-08 09:57:22 -0700552# host *BSD for user mode
553HOST_VARIANT_DIR=""
554
bellard7d132992003-03-06 23:23:54 +0000555case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000556CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200557 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200558 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
malcd5631632009-10-10 01:13:41 +0400559 audio_possible_drivers="winwave sdl"
560 audio_drv_list="winwave"
bellardc326e0a2005-04-23 18:30:28 +0000561;;
bellard67b915a2004-03-31 23:37:16 +0000562MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200563 mingw32="yes"
malcd5631632009-10-10 01:13:41 +0400564 audio_possible_drivers="winwave dsound sdl fmod"
565 audio_drv_list="winwave"
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"
570 audio_possible_drivers="oss sdl esd 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"
576 audio_possible_drivers="oss sdl esd 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"
586 audio_possible_drivers="oss sdl esd 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"
593 audio_possible_drivers="oss sdl esd"
594 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"
601 audio_possible_drivers="sdl esd"
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"
614 audio_possible_drivers="coreaudio sdl fmod"
615 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"
629 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"
669 audio_possible_drivers="oss alsa sdl esd pa"
670 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"
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700675 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then
malcc2de5c92008-06-28 19:13:06 +0000676 audio_possible_drivers="$audio_possible_drivers fmod"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200677 fi
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000678 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000679;;
bellard7d132992003-03-06 23:23:54 +0000680esac
681
bellard7d3505c2004-05-12 19:32:15 +0000682if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000683 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200684 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000685 fi
bellard7d3505c2004-05-12 19:32:15 +0000686fi
687
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100688: ${make=${MAKE-make}}
689: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100690: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400691: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100692
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100693# Default objcc to clang if available, otherwise use CC
694if has clang; then
695 objcc=clang
696else
697 objcc="$cc"
698fi
699
Juan Quintela3457a3f2009-08-03 14:46:07 +0200700if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200701 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800702 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200703 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100704 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
705 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100706 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
707cat > $TMPC << EOF
708int main(void) { return 0; }
709EOF
710 if compile_prog "" "-liberty" ; then
711 LIBS="-liberty $LIBS"
712 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200713 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200714 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300715 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300716 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200717 bindir="\${prefix}"
718 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200719 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200720 confsuffix=""
Stefan Hajnoczi368542b2012-03-27 08:26:18 +0100721 libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200722fi
723
Anthony Liguori487fefd2009-06-11 13:28:25 -0500724werror=""
bellard85aa5182007-11-11 20:17:03 +0000725
bellard7d132992003-03-06 23:23:54 +0000726for opt do
pbrooka46e4032006-04-29 23:05:22 +0000727 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000728 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000729 --help|-h) show_help=yes
730 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400731 --version|-V) exec cat $source_path/VERSION
732 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000733 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000734 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000735 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000736 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100737 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000738 ;;
aliguoriac0df512008-12-29 17:14:15 +0000739 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000740 ;;
aliguoriac0df512008-12-29 17:14:15 +0000741 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000742 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000743 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000744 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400745 --cxx=*)
746 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200747 --iasl=*) iasl="$optarg"
748 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100749 --objcc=*) objcc="$optarg"
750 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000751 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000752 ;;
pbrook6a882642006-04-17 13:57:12 +0000753 --install=*) install="$optarg"
754 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000755 --python=*) python="$optarg"
756 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000757 --gcov=*) gcov_tool="$optarg"
758 ;;
Brade2d88302011-09-02 16:53:28 -0400759 --smbd=*) smbd="$optarg"
760 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200761 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000762 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200763 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000764 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100765 --enable-debug-info)
766 ;;
767 --disable-debug-info)
768 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800769 --enable-modules)
770 modules="yes"
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 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000844 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000845 ;;
malcc2de5c92008-06-28 19:13:06 +0000846 --fmod-inc=*) fmod_inc="$optarg"
847 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000848 --oss-lib=*) oss_lib="$optarg"
849 ;;
malc0c58ac12008-06-25 21:04:05 +0000850 --audio-drv-list=*) audio_drv_list="$optarg"
851 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800852 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
853 ;;
854 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100855 ;;
aurel32f8393942009-04-13 18:45:38 +0000856 --enable-debug-tcg) debug_tcg="yes"
857 ;;
858 --disable-debug-tcg) debug_tcg="no"
859 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100860 --enable-debug)
861 # Enable debugging options that aren't excessively noisy
862 debug_tcg="yes"
863 debug="yes"
864 strip_opt="no"
865 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000866 --enable-sparse) sparse="yes"
867 ;;
868 --disable-sparse) sparse="no"
869 ;;
aliguori1625af82009-04-05 17:41:02 +0000870 --disable-strip) strip_opt="no"
871 ;;
ths8d5d2d42007-08-25 01:37:51 +0000872 --disable-vnc-tls) vnc_tls="no"
873 ;;
Juan Quintela1be10ad2009-08-12 18:20:28 +0200874 --enable-vnc-tls) vnc_tls="yes"
875 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000876 --disable-vnc-sasl) vnc_sasl="no"
877 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200878 --enable-vnc-sasl) vnc_sasl="yes"
879 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200880 --disable-vnc-jpeg) vnc_jpeg="no"
881 ;;
882 --enable-vnc-jpeg) vnc_jpeg="yes"
883 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200884 --disable-vnc-png) vnc_png="no"
885 ;;
886 --enable-vnc-png) vnc_png="yes"
887 ;;
Tim Hardeck7536ee42013-01-21 11:04:44 +0100888 --disable-vnc-ws) vnc_ws="no"
889 ;;
890 --enable-vnc-ws) vnc_ws="yes"
891 ;;
bellard443f1372004-06-04 11:13:20 +0000892 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000893 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200894 --disable-uuid) uuid="no"
895 ;;
896 --enable-uuid) uuid="yes"
897 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000898 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000899 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200900 --enable-vde) vde="yes"
901 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100902 --disable-netmap) netmap="no"
903 ;;
904 --enable-netmap) netmap="yes"
905 ;;
aliguorie37630c2009-04-22 15:19:10 +0000906 --disable-xen) xen="no"
907 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200908 --enable-xen) xen="yes"
909 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000910 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
911 ;;
912 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
913 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000914 --disable-brlapi) brlapi="no"
915 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200916 --enable-brlapi) brlapi="yes"
917 ;;
balrogfb599c92008-09-28 23:49:55 +0000918 --disable-bluez) bluez="no"
919 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200920 --enable-bluez) bluez="yes"
921 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000922 --disable-kvm) kvm="no"
923 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200924 --enable-kvm) kvm="yes"
925 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200926 --disable-tcg-interpreter) tcg_interpreter="no"
927 ;;
928 --enable-tcg-interpreter) tcg_interpreter="yes"
929 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500930 --disable-cap-ng) cap_ng="no"
931 ;;
932 --enable-cap-ng) cap_ng="yes"
933 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100934 --disable-spice) spice="no"
935 ;;
936 --enable-spice) spice="yes"
937 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100938 --disable-libiscsi) libiscsi="no"
939 ;;
940 --enable-libiscsi) libiscsi="yes"
941 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100942 --disable-libnfs) libnfs="no"
943 ;;
944 --enable-libnfs) libnfs="yes"
945 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000946 --enable-profiler) profiler="yes"
947 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400948 --disable-cocoa) cocoa="no"
949 ;;
malcc2de5c92008-06-28 19:13:06 +0000950 --enable-cocoa)
951 cocoa="yes" ;
952 sdl="no" ;
953 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000954 ;;
pbrookcad25d62006-03-19 16:31:11 +0000955 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000956 ;;
pbrookcad25d62006-03-19 16:31:11 +0000957 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000958 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000959 --disable-user)
960 linux_user="no" ;
961 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000962 ;;
963 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000964 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000965 ;;
ths831b7822007-01-18 20:06:33 +0000966 --enable-linux-user) linux_user="yes"
967 ;;
blueswir184778502008-10-26 20:33:16 +0000968 --disable-bsd-user) bsd_user="no"
969 ;;
970 --enable-bsd-user) bsd_user="yes"
971 ;;
Paul Brook379f6692009-07-17 12:48:08 +0100972 --enable-guest-base) guest_base="yes"
973 ;;
974 --disable-guest-base) guest_base="no"
975 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200976 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300977 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200978 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300979 ;;
bellard85aa5182007-11-11 20:17:03 +0000980 --enable-werror) werror="yes"
981 ;;
982 --disable-werror) werror="no"
983 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100984 --enable-stack-protector) stack_protector="yes"
985 ;;
986 --disable-stack-protector) stack_protector="no"
987 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000988 --disable-curses) curses="no"
989 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200990 --enable-curses) curses="yes"
991 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200992 --disable-curl) curl="no"
993 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200994 --enable-curl) curl="yes"
995 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200996 --disable-fdt) fdt="no"
997 ;;
998 --enable-fdt) fdt="yes"
999 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001000 --disable-linux-aio) linux_aio="no"
1001 ;;
1002 --enable-linux-aio) linux_aio="yes"
1003 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001004 --disable-attr) attr="no"
1005 ;;
1006 --enable-attr) attr="yes"
1007 ;;
ths77755342008-11-27 15:45:16 +00001008 --disable-blobs) blobs="no"
1009 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001010 --with-pkgversion=*) pkgversion=" ($optarg)"
1011 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001012 --with-coroutine=*) coroutine="$optarg"
1013 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001014 --disable-coroutine-pool) coroutine_pool="no"
1015 ;;
1016 --enable-coroutine-pool) coroutine_pool="yes"
1017 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001018 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001019 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001020 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001021 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001022 --disable-vhost-net) vhost_net="no"
1023 ;;
1024 --enable-vhost-net) vhost_net="yes"
1025 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001026 --disable-vhost-scsi) vhost_scsi="no"
1027 ;;
1028 --enable-vhost-scsi) vhost_scsi="yes"
1029 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001030 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001031 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001032 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001033 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001034 --disable-rbd) rbd="no"
1035 ;;
1036 --enable-rbd) rbd="yes"
1037 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001038 --disable-xfsctl) xfs="no"
1039 ;;
1040 --enable-xfsctl) xfs="yes"
1041 ;;
Robert Relyea111a38b2010-11-28 16:36:38 +02001042 --disable-smartcard-nss) smartcard_nss="no"
1043 ;;
1044 --enable-smartcard-nss) smartcard_nss="yes"
1045 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001046 --disable-libusb) libusb="no"
1047 ;;
1048 --enable-libusb) libusb="yes"
1049 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001050 --disable-usb-redir) usb_redir="no"
1051 ;;
1052 --enable-usb-redir) usb_redir="yes"
1053 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001054 --disable-zlib-test) zlib="no"
1055 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001056 --disable-lzo) lzo="no"
1057 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001058 --enable-lzo) lzo="yes"
1059 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001060 --disable-snappy) snappy="no"
1061 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001062 --enable-snappy) snappy="yes"
1063 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001064 --disable-bzip2) bzip2="no"
1065 ;;
1066 --enable-bzip2) bzip2="yes"
1067 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001068 --enable-guest-agent) guest_agent="yes"
1069 ;;
1070 --disable-guest-agent) guest_agent="no"
1071 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001072 --with-vss-sdk) vss_win32_sdk=""
1073 ;;
1074 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1075 ;;
1076 --without-vss-sdk) vss_win32_sdk="no"
1077 ;;
1078 --with-win-sdk) win_sdk=""
1079 ;;
1080 --with-win-sdk=*) win_sdk="$optarg"
1081 ;;
1082 --without-win-sdk) win_sdk="no"
1083 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001084 --enable-tools) want_tools="yes"
1085 ;;
1086 --disable-tools) want_tools="no"
1087 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001088 --enable-seccomp) seccomp="yes"
1089 ;;
1090 --disable-seccomp) seccomp="no"
1091 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301092 --disable-glusterfs) glusterfs="no"
1093 ;;
1094 --enable-glusterfs) glusterfs="yes"
1095 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001096 --disable-archipelago) archipelago="no"
1097 ;;
1098 --enable-archipelago) archipelago="yes"
1099 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001100 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1101 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001102 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001103 --disable-gtk) gtk="no"
1104 ;;
1105 --enable-gtk) gtk="yes"
1106 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001107 --enable-rdma) rdma="yes"
1108 ;;
1109 --disable-rdma) rdma="no"
1110 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001111 --with-gtkabi=*) gtkabi="$optarg"
1112 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001113 --disable-vte) vte="no"
1114 ;;
1115 --enable-vte) vte="yes"
1116 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001117 --disable-tpm) tpm="no"
1118 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001119 --enable-tpm) tpm="yes"
1120 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001121 --disable-libssh2) libssh2="no"
1122 ;;
1123 --enable-libssh2) libssh2="yes"
1124 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001125 --enable-vhdx) vhdx="yes"
1126 ;;
1127 --disable-vhdx) vhdx="no"
1128 ;;
Benoît Canet95c6bff2014-02-21 22:21:15 +01001129 --disable-quorum) quorum="no"
1130 ;;
1131 --enable-quorum) quorum="yes"
1132 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001133 --disable-numa) numa="no"
1134 ;;
1135 --enable-numa) numa="yes"
1136 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001137 *)
1138 echo "ERROR: unknown option $opt"
1139 echo "Try '$0 --help' for more information"
1140 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001141 ;;
bellard7d132992003-03-06 23:23:54 +00001142 esac
1143done
1144
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001145if ! has $python; then
1146 error_exit "Python not found. Use --python=/path/to/python"
1147fi
1148
1149# Note that if the Python conditional here evaluates True we will exit
1150# with status 1 which is a shell 'false' value.
1151if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1152 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1153 "Note that Python 3 or later is not yet supported." \
1154 "Use --python=/path/to/python to specify a supported Python."
1155fi
1156
1157# The -B switch was added in Python 2.6.
1158# If it is supplied, compiled files are not written.
1159# Use it for Python versions which support it.
1160if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1161 python="$python -B"
1162fi
1163
bellard40293e52008-01-31 11:32:10 +00001164case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001165 ppc)
1166 CPU_CFLAGS="-m32"
1167 LDFLAGS="-m32 $LDFLAGS"
1168 ;;
1169 ppc64)
1170 CPU_CFLAGS="-m64"
1171 LDFLAGS="-m64 $LDFLAGS"
1172 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001173 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001174 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001175 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001176 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001177 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001178 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001179 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001180 ;;
ths76d83bd2007-11-18 21:22:10 +00001181 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001182 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001183 LDFLAGS="-m31 $LDFLAGS"
1184 ;;
1185 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001186 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001187 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001188 ;;
bellard40293e52008-01-31 11:32:10 +00001189 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001190 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001191 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001192 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001193 ;;
1194 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001195 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001196 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001197 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001198 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001199 x32)
1200 CPU_CFLAGS="-mx32"
1201 LDFLAGS="-mx32 $LDFLAGS"
1202 cc_i386='$(CC) -m32'
1203 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001204 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001205esac
1206
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001207QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1208EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1209
Peter Maydell60e0df22011-05-03 14:50:13 +01001210default_target_list=""
1211
Peter Maydell6e92f822013-05-20 16:16:15 +01001212mak_wilds=""
1213
1214if [ "$softmmu" = "yes" ]; then
1215 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001216fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001217if [ "$linux_user" = "yes" ]; then
1218 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001219fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001220if [ "$bsd_user" = "yes" ]; then
1221 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001222fi
1223
Peter Maydell6e92f822013-05-20 16:16:15 +01001224for config in $mak_wilds; do
1225 default_target_list="${default_target_list} $(basename "$config" .mak)"
1226done
1227
pbrookaf5db582006-04-08 14:26:41 +00001228if test x"$show_help" = x"yes" ; then
1229cat << EOF
1230
1231Usage: configure [options]
1232Options: [defaults in brackets after descriptions]
1233
Stefan Weil08fb77e2013-12-18 22:09:39 +01001234Standard options:
1235 --help print this message
1236 --prefix=PREFIX install in PREFIX [$prefix]
1237 --interp-prefix=PREFIX where to find shared libraries, etc.
1238 use %M for cpu name [$interp_prefix]
1239 --target-list=LIST set target list (default: build everything)
1240$(echo Available targets: $default_target_list | \
1241 fold -s -w 53 | sed -e 's/^/ /')
1242
1243Advanced options (experts only):
1244 --source-path=PATH path of source code [$source_path]
1245 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1246 --cc=CC use C compiler CC [$cc]
1247 --iasl=IASL use ACPI compiler IASL [$iasl]
1248 --host-cc=CC use C compiler CC [$host_cc] for code run at
1249 build time
1250 --cxx=CXX use C++ compiler CXX [$cxx]
1251 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1252 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1253 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1254 --make=MAKE use specified make [$make]
1255 --install=INSTALL use specified install [$install]
1256 --python=PYTHON use specified python [$python]
1257 --smbd=SMBD use specified smbd [$smbd]
1258 --static enable static build [$static]
1259 --mandir=PATH install man pages in PATH
1260 --datadir=PATH install firmware in PATH$confsuffix
1261 --docdir=PATH install documentation in PATH$confsuffix
1262 --bindir=PATH install binaries in PATH
1263 --libdir=PATH install libraries in PATH
1264 --sysconfdir=PATH install config in PATH$confsuffix
1265 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001266 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Fam Zheng17969262014-02-10 14:48:56 +08001267 --enable-modules enable modules support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001268 --enable-debug-tcg enable TCG debugging
1269 --disable-debug-tcg disable TCG debugging (default)
Peter Maydelld61ce902014-03-31 19:51:55 +01001270 --enable-debug-info enable debugging information (default)
1271 --disable-debug-info disable debugging information
Stefan Weil08fb77e2013-12-18 22:09:39 +01001272 --enable-debug enable common debug build options
1273 --enable-sparse enable sparse checker
1274 --disable-sparse disable sparse checker (default)
1275 --disable-strip disable stripping binaries
1276 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001277 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001278 --disable-sdl disable SDL
1279 --enable-sdl enable SDL
Dave Airlie47c03742013-12-10 14:05:51 +10001280 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
Stefan Weil08fb77e2013-12-18 22:09:39 +01001281 --disable-gtk disable gtk UI
1282 --enable-gtk enable gtk UI
Cole Robinsonf92d61f2014-03-17 16:06:23 -04001283 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
Stefan Weil08fb77e2013-12-18 22:09:39 +01001284 --disable-virtfs disable VirtFS
1285 --enable-virtfs enable VirtFS
1286 --disable-vnc disable VNC
1287 --enable-vnc enable VNC
1288 --disable-cocoa disable Cocoa (Mac OS X only)
1289 --enable-cocoa enable Cocoa (default on Mac OS X)
1290 --audio-drv-list=LIST set audio drivers list:
1291 Available drivers: $audio_possible_drivers
1292 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1293 --block-drv-rw-whitelist=L
1294 set block driver read-write whitelist
1295 (affects only QEMU, not qemu-img)
1296 --block-drv-ro-whitelist=L
1297 set block driver read-only whitelist
1298 (affects only QEMU, not qemu-img)
1299 --disable-xen disable xen backend driver support
1300 --enable-xen enable xen backend driver support
1301 --disable-xen-pci-passthrough
1302 --enable-xen-pci-passthrough
1303 --disable-brlapi disable BrlAPI
1304 --enable-brlapi enable BrlAPI
1305 --disable-vnc-tls disable TLS encryption for VNC server
1306 --enable-vnc-tls enable TLS encryption for VNC server
1307 --disable-vnc-sasl disable SASL encryption for VNC server
1308 --enable-vnc-sasl enable SASL encryption for VNC server
1309 --disable-vnc-jpeg disable JPEG lossy compression for VNC server
1310 --enable-vnc-jpeg enable JPEG lossy compression for VNC server
1311 --disable-vnc-png disable PNG compression for VNC server (default)
1312 --enable-vnc-png enable PNG compression for VNC server
1313 --disable-vnc-ws disable Websockets support for VNC server
1314 --enable-vnc-ws enable Websockets support for VNC server
1315 --disable-curses disable curses output
1316 --enable-curses enable curses output
1317 --disable-curl disable curl connectivity
1318 --enable-curl enable curl connectivity
1319 --disable-fdt disable fdt device tree
1320 --enable-fdt enable fdt device tree
1321 --disable-bluez disable bluez stack connectivity
1322 --enable-bluez enable bluez stack connectivity
1323 --disable-slirp disable SLIRP userspace network connectivity
1324 --disable-kvm disable KVM acceleration support
1325 --enable-kvm enable KVM acceleration support
1326 --disable-rdma disable RDMA-based migration support
1327 --enable-rdma enable RDMA-based migration support
1328 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1329 --enable-system enable all system emulation targets
1330 --disable-system disable all system emulation targets
1331 --enable-user enable supported user emulation targets
1332 --disable-user disable all user emulation targets
1333 --enable-linux-user enable all linux usermode emulation targets
1334 --disable-linux-user disable all linux usermode emulation targets
1335 --enable-bsd-user enable all BSD usermode emulation targets
1336 --disable-bsd-user disable all BSD usermode emulation targets
1337 --enable-guest-base enable GUEST_BASE support for usermode
1338 emulation targets
1339 --disable-guest-base disable GUEST_BASE support
1340 --enable-pie build Position Independent Executables
1341 --disable-pie do not build Position Independent Executables
1342 --fmod-lib path to FMOD library
1343 --fmod-inc path to FMOD includes
1344 --oss-lib path to OSS library
Stefan Weil08fb77e2013-12-18 22:09:39 +01001345 --cpu=CPU Build for host CPU [$cpu]
1346 --disable-uuid disable uuid support
1347 --enable-uuid enable uuid support
1348 --disable-vde disable support for vde network
1349 --enable-vde enable support for vde network
1350 --disable-netmap disable support for netmap network
1351 --enable-netmap enable support for netmap network
1352 --disable-linux-aio disable Linux AIO support
1353 --enable-linux-aio enable Linux AIO support
1354 --disable-cap-ng disable libcap-ng support
1355 --enable-cap-ng enable libcap-ng support
Gonglei2d5361f2014-09-20 15:33:18 +08001356 --disable-attr disable attr and xattr support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001357 --enable-attr enable attr and xattr support
1358 --disable-blobs disable installing provided firmware blobs
1359 --enable-docs enable documentation build
1360 --disable-docs disable documentation build
1361 --disable-vhost-net disable vhost-net acceleration support
1362 --enable-vhost-net enable vhost-net acceleration support
Lluís Vilanova5b808272014-05-27 15:02:14 +02001363 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001364 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1365 --with-trace-file=NAME Full PATH,NAME of file to store traces
1366 Default:trace-<pid>
1367 --disable-spice disable spice
1368 --enable-spice enable spice
1369 --enable-rbd enable building the rados block device (rbd)
1370 --disable-libiscsi disable iscsi support
1371 --enable-libiscsi enable iscsi support
Peter Lieven6542aa92014-02-03 10:26:13 +01001372 --disable-libnfs disable nfs support
1373 --enable-libnfs enable nfs support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001374 --disable-smartcard-nss disable smartcard nss support
1375 --enable-smartcard-nss enable smartcard nss support
1376 --disable-libusb disable libusb (for usb passthrough)
1377 --enable-libusb enable libusb (for usb passthrough)
1378 --disable-usb-redir disable usb network redirection support
1379 --enable-usb-redir enable usb network redirection support
qiaonuohan607dacd2014-02-18 14:11:30 +08001380 --enable-lzo enable the support of lzo compression library
1381 --enable-snappy enable the support of snappy compression library
Peter Wu6b383c02015-01-06 18:48:14 +01001382 --enable-bzip2 enable the support of bzip2 compression library (for
1383 reading bzip2-compressed dmg images)
Stefan Weil08fb77e2013-12-18 22:09:39 +01001384 --disable-guest-agent disable building of the QEMU Guest Agent
1385 --enable-guest-agent enable building of the QEMU Guest Agent
1386 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1387 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1388 --disable-seccomp disable seccomp support
Gonglei2d5361f2014-09-20 15:33:18 +08001389 --enable-seccomp enable seccomp support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001390 --with-coroutine=BACKEND coroutine backend. Supported options:
1391 gthread, ucontext, sigaltstack, windows
1392 --disable-coroutine-pool disable coroutine freelist (worse performance)
1393 --enable-coroutine-pool enable coroutine freelist (better performance)
1394 --enable-glusterfs enable GlusterFS backend
1395 --disable-glusterfs disable GlusterFS backend
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001396 --enable-archipelago enable Archipelago backend
1397 --disable-archipelago disable Archipelago backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001398 --enable-gcov enable test coverage analysis with gcov
1399 --gcov=GCOV use specified gcov [$gcov_tool]
Cole Robinsone91c7932014-06-16 15:32:47 -04001400 --disable-tpm disable TPM support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001401 --enable-tpm enable TPM support
1402 --disable-libssh2 disable ssh block device support
1403 --enable-libssh2 enable ssh block device support
Gonglei2d5361f2014-09-20 15:33:18 +08001404 --disable-vhdx disable support for the Microsoft VHDX image format
Stefan Weil08fb77e2013-12-18 22:09:39 +01001405 --enable-vhdx enable support for the Microsoft VHDX image format
Benoît Canet95c6bff2014-02-21 22:21:15 +01001406 --disable-quorum disable quorum block filter support
1407 --enable-quorum enable quorum block filter support
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001408 --disable-numa disable libnuma support
1409 --enable-numa enable libnuma support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001410
1411NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001412EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001413exit 0
pbrookaf5db582006-04-08 14:26:41 +00001414fi
1415
Peter Maydell359bc952011-12-24 13:07:25 +00001416# Now we have handled --enable-tcg-interpreter and know we're not just
1417# printing the help message, bail out if the host CPU isn't supported.
1418if test "$ARCH" = "unknown"; then
1419 if test "$tcg_interpreter" = "yes" ; then
1420 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1421 ARCH=tci
1422 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001423 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001424 fi
1425fi
1426
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001427# Consult white-list to determine whether to enable werror
1428# by default. Only enable by default for git builds
1429z_version=`cut -f3 -d. $source_path/VERSION`
1430
1431if test -z "$werror" ; then
1432 if test -d "$source_path/.git" -a \
1433 "$linux" = "yes" ; then
1434 werror="yes"
1435 else
1436 werror="no"
1437 fi
1438fi
1439
Paolo Bonzini8d050952010-12-23 11:43:52 +01001440# check that the C compiler works.
1441cat > $TMPC <<EOF
Stefan Weil75cafad2011-12-17 09:27:29 +01001442int main(void) { return 0; }
Paolo Bonzini8d050952010-12-23 11:43:52 +01001443EOF
1444
1445if compile_object ; then
1446 : C compiler works ok
1447else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001448 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001449fi
1450
Peter Maydell98b21dc2014-02-20 15:10:16 +00001451# Check that the C++ compiler exists and works with the C compiler
1452if has $cxx; then
1453 cat > $TMPC <<EOF
1454int c_function(void);
1455int main(void) { return c_function(); }
1456EOF
1457
1458 compile_object
1459
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001460 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001461extern "C" {
1462 int c_function(void);
1463}
1464int c_function(void) { return 42; }
1465EOF
1466
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001467 update_cxxflags
1468
1469 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001470 # C++ compiler $cxx works ok with C compiler $cc
1471 :
1472 else
1473 echo "C++ compiler $cxx does not work with C compiler $cc"
1474 echo "Disabling C++ specific optional code"
1475 cxx=
1476 fi
1477else
1478 echo "No C++ compiler available; disabling C++ specific optional code"
1479 cxx=
1480fi
1481
Paolo Bonzini8d050952010-12-23 11:43:52 +01001482gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1483gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1484gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001485gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001486gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001487gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001488# Note that we do not add -Werror to gcc_flags here, because that would
1489# enable it for all configure tests. If a configure test failed due
1490# to -Werror this would just silently disable some features,
1491# so it's too error prone.
Paolo Bonzini8d050952010-12-23 11:43:52 +01001492cat > $TMPC << EOF
1493int main(void) { return 0; }
1494EOF
1495for flag in $gcc_flags; do
Peter Maydella1d29d62012-10-27 22:19:07 +01001496 # Use the positive sense of the flag when testing for -Wno-wombat
1497 # support (gcc will happily accept the -Wno- form of unknown
1498 # warning options).
1499 optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')"
1500 if compile_prog "-Werror $optflag" "" ; then
Paolo Bonzini8d050952010-12-23 11:43:52 +01001501 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1502 fi
1503done
1504
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001505if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001506 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001507 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001508 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001509 # We need to check both a compile and a link, since some compiler
1510 # setups fail only on a .c->.o compile and some only at link time
1511 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1512 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001513 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1514 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001515 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001516 break
1517 fi
1518 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001519 if test "$stack_protector" = yes; then
1520 if test $sp_on = 0; then
1521 error_exit "Stack protector not supported"
1522 fi
1523 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001524fi
1525
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001526# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1527# large functions that use global variables. The bug is in all releases of
1528# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1529# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1530cat > $TMPC << EOF
1531#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1532int main(void) { return 0; }
1533#else
1534#error No bug in this compiler.
1535#endif
1536EOF
1537if compile_prog "-Werror -fno-gcse" "" ; then
1538 TRANSLATE_OPT_CFLAGS=-fno-gcse
1539fi
1540
Avi Kivity40d64442011-11-15 20:12:17 +02001541if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001542 if test "$modules" = "yes" ; then
1543 error_exit "static and modules are mutually incompatible"
1544 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001545 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001546 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001547 else
1548 pie="no"
1549 fi
1550fi
1551
1552if test "$pie" = ""; then
1553 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001554 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001555 ;;
1556 *)
1557 pie="no"
1558 ;;
1559 esac
1560fi
1561
1562if test "$pie" != "no" ; then
1563 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001564
1565#ifdef __linux__
1566# define THREAD __thread
1567#else
1568# define THREAD
1569#endif
1570
1571static THREAD int tls_var;
1572
1573int main(void) { return tls_var; }
1574
Avi Kivity40d64442011-11-15 20:12:17 +02001575EOF
1576 if compile_prog "-fPIE -DPIE" "-pie"; then
1577 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1578 LDFLAGS="-pie $LDFLAGS"
1579 pie="yes"
1580 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1581 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1582 fi
1583 else
1584 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001585 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001586 else
1587 echo "Disabling PIE due to missing toolchain support"
1588 pie="no"
1589 fi
1590 fi
Brad46eef332013-12-10 19:49:08 -05001591
1592 if compile_prog "-fno-pie" "-nopie"; then
1593 CFLAGS_NOPIE="-fno-pie"
1594 LDFLAGS_NOPIE="-nopie"
1595 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001596fi
1597
Don Slutz66518bf2014-01-02 21:12:46 -05001598# check for broken gcc and libtool in RHEL5
1599if test -n "$libtool" -a "$pie" != "no" ; then
1600 cat > $TMPC <<EOF
1601
1602void *f(unsigned char *buf, int len);
1603void *g(unsigned char *buf, int len);
1604
1605void *
1606f(unsigned char *buf, int len)
1607{
1608 return (void*)0L;
1609}
1610
1611void *
1612g(unsigned char *buf, int len)
1613{
1614 return f(buf, len);
1615}
1616
1617EOF
1618 if ! libtool_prog; then
1619 echo "Disabling libtool due to broken toolchain support"
1620 libtool=
1621 fi
1622fi
1623
Paolo Bonzini09dada42013-04-17 16:26:47 +02001624##########################################
1625# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1626# use i686 as default anyway, but for those that don't, an explicit
1627# specification is necessary
1628
1629if test "$cpu" = "i386"; then
1630 cat > $TMPC << EOF
1631static int sfaa(int *ptr)
1632{
1633 return __sync_fetch_and_and(ptr, 0);
1634}
1635
1636int main(void)
1637{
1638 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001639 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001640 sfaa(&val);
1641 return val;
1642}
1643EOF
1644 if ! compile_prog "" "" ; then
1645 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1646 fi
1647fi
1648
1649#########################################
bellardec530c82006-04-25 22:36:06 +00001650# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001651
bellardec530c82006-04-25 22:36:06 +00001652if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001653 if has $install; then
1654 :
1655 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001656 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1657 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1658 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001659 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001660 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001661 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1662 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1663 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001664 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001665 if has ar; then
1666 :
1667 else
bellardec530c82006-04-25 22:36:06 +00001668 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001669 error_exit "No path includes ar" \
1670 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001671 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001672 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001673 fi
ths5fafdf22007-09-16 21:08:06 +00001674fi
bellardec530c82006-04-25 22:36:06 +00001675
Stefan Weilafb63eb2012-09-26 22:04:38 +02001676if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001677 target_list="$default_target_list"
1678else
1679 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001680fi
Peter Maydell25b48332013-05-20 16:16:16 +01001681
1682# Check that we recognised the target name; this allows a more
1683# friendly error message than if we let it fall through.
1684for target in $target_list; do
1685 case " $default_target_list " in
1686 *" $target "*)
1687 ;;
1688 *)
1689 error_exit "Unknown target name '$target'"
1690 ;;
1691 esac
1692done
1693
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001694# see if system emulation was really requested
1695case " $target_list " in
1696 *"-softmmu "*) softmmu=yes
1697 ;;
1698 *) softmmu=no
1699 ;;
1700esac
bellard5327cf42005-01-10 23:18:50 +00001701
Juan Quintela249247c2009-08-12 18:20:25 +02001702feature_not_found() {
1703 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001704 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001705
Peter Maydell76ad07a2013-04-08 12:11:26 +01001706 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001707 "configure was not able to find it." \
1708 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001709}
1710
bellard7d132992003-03-06 23:23:54 +00001711# ---
1712# big/little endian test
1713cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001714short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1715short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1716extern int foo(short *, short *);
1717int main(int argc, char *argv[]) {
1718 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001719}
1720EOF
1721
Mike Frysinger61cc9192013-06-30 23:30:18 -04001722if compile_object ; then
1723 if grep -q BiGeNdIaN $TMPO ; then
1724 bigendian="yes"
1725 elif grep -q LiTtLeEnDiAn $TMPO ; then
1726 bigendian="no"
1727 else
1728 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001729 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001730else
1731 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001732fi
1733
Juan Quintelab0a47e72009-08-12 18:29:49 +02001734##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001735# L2TPV3 probe
1736
1737cat > $TMPC <<EOF
1738#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001739#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001740int main(void) { return sizeof(struct mmsghdr); }
1741EOF
1742if compile_prog "" "" ; then
1743 l2tpv3=yes
1744else
1745 l2tpv3=no
1746fi
1747
1748##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001749# pkg-config probe
1750
1751if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001752 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001753fi
1754
1755##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001756# NPTL probe
1757
Peter Maydell24cb36a2013-07-16 18:45:00 +01001758if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001759 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001760#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001761#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001762int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001763#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1764#error bork
1765#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001766 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001767}
1768EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001769 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001770 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001771 fi
pbrookbd0c5662008-05-29 14:34:11 +00001772fi
1773
bellard11d9f692004-04-02 20:55:59 +00001774##########################################
balrogac629222008-10-11 09:56:04 +00001775# zlib check
1776
Alon Levy1ece9902011-07-26 12:30:40 +03001777if test "$zlib" != "no" ; then
1778 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001779#include <zlib.h>
1780int main(void) { zlibVersion(); return 0; }
1781EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001782 if compile_prog "" "-lz" ; then
1783 :
1784 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001785 error_exit "zlib check failed" \
1786 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001787 fi
balrogac629222008-10-11 09:56:04 +00001788fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001789LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001790
1791##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001792# lzo check
1793
1794if test "$lzo" != "no" ; then
1795 cat > $TMPC << EOF
1796#include <lzo/lzo1x.h>
1797int main(void) { lzo_version(); return 0; }
1798EOF
1799 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001800 libs_softmmu="$libs_softmmu -llzo2"
1801 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001802 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001803 if test "$lzo" = "yes"; then
1804 feature_not_found "liblzo2" "Install liblzo2 devel"
1805 fi
1806 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001807 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001808fi
1809
1810##########################################
1811# snappy check
1812
1813if test "$snappy" != "no" ; then
1814 cat > $TMPC << EOF
1815#include <snappy-c.h>
1816int main(void) { snappy_max_compressed_length(4096); return 0; }
1817EOF
1818 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001819 libs_softmmu="$libs_softmmu -lsnappy"
1820 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001821 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001822 if test "$snappy" = "yes"; then
1823 feature_not_found "libsnappy" "Install libsnappy devel"
1824 fi
1825 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001826 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001827fi
1828
1829##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001830# bzip2 check
1831
1832if test "$bzip2" != "no" ; then
1833 cat > $TMPC << EOF
1834#include <bzlib.h>
1835int main(void) { BZ2_bzlibVersion(); return 0; }
1836EOF
1837 if compile_prog "" "-lbz2" ; then
1838 bzip2="yes"
1839 else
1840 if test "$bzip2" = "yes"; then
1841 feature_not_found "libbzip2" "Install libbzip2 devel"
1842 fi
1843 bzip2="no"
1844 fi
1845fi
1846
1847##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001848# libseccomp check
1849
1850if test "$seccomp" != "no" ; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001851 if $pkg_config --atleast-version=2.2.0 libseccomp ||
1852 (test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1853 $pkg_config --atleast-version=2.1.1 libseccomp); then
Michael Tokarevb4451992013-01-19 18:58:09 +04001854 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001855 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001856 seccomp="yes"
1857 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001858 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001859 if test "$cpu" = "i386" || test "$cpu" = "x86_64"; then
1860 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1861 else
Eduardo Otubo8e27fc22015-03-17 12:03:30 +01001862 feature_not_found "libseccomp" "Install libseccomp devel >= 2.2.0"
Eduardo Otubo896848f2015-03-26 16:56:25 +01001863 fi
Eduardo Otubof7945732012-08-14 18:44:05 -03001864 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001865 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001866 fi
1867fi
1868##########################################
aliguorie37630c2009-04-22 15:19:10 +00001869# xen probe
1870
Juan Quintelafc321b42009-08-12 18:29:55 +02001871if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001872 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001873
Stefan Weil50ced5b2011-12-17 09:27:39 +01001874 # First we test whether Xen headers and libraries are available.
1875 # If no, we are done and there is no Xen support.
1876 # If yes, more tests are run to detect the Xen version.
1877
1878 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001879 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001880#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001881int main(void) {
1882 return 0;
1883}
1884EOF
1885 if ! compile_prog "" "$xen_libs" ; then
1886 # Xen not found
1887 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001888 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001889 fi
1890 xen=no
1891
1892 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001893 elif
1894 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001895#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001896#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001897#include <stdint.h>
1898#include <xen/hvm/hvm_info_table.h>
1899#if !defined(HVM_MAX_VCPUS)
1900# error HVM_MAX_VCPUS not defined
1901#endif
1902int main(void) {
1903 xc_interface *xc;
1904 xs_daemon_open();
1905 xc = xc_interface_open(0, 0, 0);
1906 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1907 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001908 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001909 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001910 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1911 return 0;
1912}
1913EOF
1914 compile_prog "" "$xen_libs"
1915 then
1916 xen_ctrl_version=450
1917 xen=yes
1918
1919 elif
1920 cat > $TMPC <<EOF &&
1921#include <xenctrl.h>
1922#include <xenstore.h>
1923#include <stdint.h>
1924#include <xen/hvm/hvm_info_table.h>
1925#if !defined(HVM_MAX_VCPUS)
1926# error HVM_MAX_VCPUS not defined
1927#endif
1928int main(void) {
1929 xc_interface *xc;
1930 xs_daemon_open();
1931 xc = xc_interface_open(0, 0, 0);
1932 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1933 xc_gnttab_open(NULL, 0);
1934 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1935 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001936 return 0;
1937}
1938EOF
1939 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001940 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00001941 xen_ctrl_version=420
1942 xen=yes
1943
Peter Maydell69deef02012-08-02 18:30:26 +01001944 elif
1945 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00001946#include <xenctrl.h>
1947#include <xs.h>
1948#include <stdint.h>
1949#include <xen/hvm/hvm_info_table.h>
1950#if !defined(HVM_MAX_VCPUS)
1951# error HVM_MAX_VCPUS not defined
1952#endif
1953int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00001954 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01001955 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001956 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1957 xc_gnttab_open(NULL, 0);
1958 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001959 return 0;
1960}
aliguorie37630c2009-04-22 15:19:10 +00001961EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01001962 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001963 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001964 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02001965 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001966
1967 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01001968 elif
1969 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001970#include <xenctrl.h>
1971#include <xs.h>
1972#include <stdint.h>
1973#include <xen/hvm/hvm_info_table.h>
1974#if !defined(HVM_MAX_VCPUS)
1975# error HVM_MAX_VCPUS not defined
1976#endif
1977int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01001978 struct xen_add_to_physmap xatp = {
1979 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1980 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001981 xs_daemon_open();
1982 xc_interface_open();
1983 xc_gnttab_open();
1984 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001985 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001986 return 0;
1987}
1988EOF
1989 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001990 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001991 xen_ctrl_version=400
1992 xen=yes
1993
Anthony PERARDb87de242011-05-24 14:34:20 +01001994 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01001995 elif
1996 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01001997#include <xenctrl.h>
1998#include <xs.h>
1999int main(void) {
2000 struct xen_add_to_physmap xatp = {
2001 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2002 };
2003 xs_daemon_open();
2004 xc_interface_open();
2005 xc_gnttab_open();
2006 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2007 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2008 return 0;
2009}
2010EOF
2011 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002012 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002013 xen_ctrl_version=340
2014 xen=yes
2015
2016 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002017 elif
2018 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002019#include <xenctrl.h>
2020#include <xs.h>
2021int main(void) {
2022 xs_daemon_open();
2023 xc_interface_open();
2024 xc_gnttab_open();
2025 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2026 return 0;
2027}
2028EOF
2029 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002030 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002031 xen_ctrl_version=330
2032 xen=yes
2033
Stefan Weil50ced5b2011-12-17 09:27:39 +01002034 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002035 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002036 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002037 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002038 fi
2039 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002040 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002041
2042 if test "$xen" = yes; then
2043 libs_softmmu="$xen_libs $libs_softmmu"
2044 fi
aliguorie37630c2009-04-22 15:19:10 +00002045fi
2046
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002047if test "$xen_pci_passthrough" != "no"; then
2048 if test "$xen" = "yes" && test "$linux" = "yes" &&
2049 test "$xen_ctrl_version" -ge 340; then
2050 xen_pci_passthrough=yes
2051 else
2052 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002053 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002054 error_exit "User requested feature Xen PCI Passthrough" \
2055 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002056 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002057 error_exit "User requested feature Xen PCI Passthrough" \
2058 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002059 fi
2060 xen_pci_passthrough=no
2061 fi
2062fi
2063
aliguorie37630c2009-04-22 15:19:10 +00002064##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002065# libtool probe
2066
Brad3f534582011-08-13 20:30:14 -04002067if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002068 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002069fi
2070
Peter Maydell8e515b12013-05-04 21:57:51 +01002071# MacOSX ships with a libtool which isn't the GNU one; weed this
2072# out by checking whether libtool supports the --version switch
2073if test -n "$libtool"; then
2074 if ! "$libtool" --version >/dev/null 2>&1; then
2075 libtool=
2076 fi
2077fi
2078
Alon Levy44dc0ca2011-05-15 11:51:28 +03002079##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002080# Sparse probe
2081if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002082 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002083 sparse=yes
2084 else
2085 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002086 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002087 fi
2088 sparse=no
2089 fi
2090fi
2091
2092##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002093# X11 probe
2094x11_cflags=
2095x11_libs=-lX11
2096if $pkg_config --exists "x11"; then
2097 x11_cflags=`$pkg_config --cflags x11`
2098 x11_libs=`$pkg_config --libs x11`
2099fi
2100
2101##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002102# GTK probe
2103
Stefan Weil9e04c682014-05-17 16:29:18 +02002104if test "$gtkabi" = ""; then
2105 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2106 # Use 3.0 as a fallback if that is available.
2107 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2108 gtkabi=2.0
2109 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2110 gtkabi=3.0
2111 else
2112 gtkabi=2.0
2113 fi
2114fi
2115
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002116if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002117 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002118 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002119 if test "$gtkabi" = "3.0" ; then
2120 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002121 else
2122 gtkversion="2.18.0"
2123 fi
2124 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2125 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2126 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002127 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002128 gtk_cflags="$gtk_cflags $x11_cflags"
2129 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002130 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002131 libs_softmmu="$gtk_libs $libs_softmmu"
2132 gtk="yes"
2133 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002134 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002135 else
2136 gtk="no"
2137 fi
2138fi
2139
2140##########################################
2141# VTE probe
2142
2143if test "$vte" != "no"; then
2144 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002145 vtepackage="vte-2.90"
2146 vteversion="0.32.0"
2147 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002148 vtepackage="vte"
2149 vteversion="0.24.0"
2150 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002151 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2152 vte_cflags=`$pkg_config --cflags $vtepackage`
2153 vte_libs=`$pkg_config --libs $vtepackage`
2154 libs_softmmu="$vte_libs $libs_softmmu"
2155 vte="yes"
2156 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002157 if test "$gtkabi" = "3.0"; then
2158 feature_not_found "vte" "Install libvte-2.90 devel"
2159 else
2160 feature_not_found "vte" "Install libvte devel"
2161 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002162 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002163 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002164 fi
2165fi
2166
2167##########################################
bellard11d9f692004-04-02 20:55:59 +00002168# SDL probe
2169
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002170# Look for sdl configuration program (pkg-config or sdl-config). Try
2171# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002172
2173if test $sdlabi = "2.0"; then
2174 sdl_config=$sdl2_config
2175 sdlname=sdl2
2176 sdlconfigname=sdl2_config
2177else
2178 sdlname=sdl
2179 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002180fi
2181
Dave Airlie47c03742013-12-10 14:05:51 +10002182if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2183 sdl_config=$sdlconfigname
2184fi
2185
2186if $pkg_config $sdlname --exists; then
2187 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002188 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002189elif has ${sdl_config}; then
2190 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002191 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002192else
2193 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002194 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002195 fi
2196 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002197fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002198if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002199 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2200fi
bellard11d9f692004-04-02 20:55:59 +00002201
Paolo Bonzini9316f802010-01-13 09:52:55 +01002202sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002203if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002204 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002205#include <SDL.h>
2206#undef main /* We don't want SDL to override our main() */
2207int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2208EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002209 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002210 if test "$static" = "yes" ; then
2211 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2212 else
2213 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2214 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002215 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002216 if test "$_sdlversion" -lt 121 ; then
2217 sdl_too_old=yes
2218 else
2219 if test "$cocoa" = "no" ; then
2220 sdl=yes
2221 fi
2222 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002223
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002224 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002225 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002226 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002227 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2228 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002229 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002230 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002231 :
2232 else
2233 sdl=no
2234 fi
2235 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002236 else # sdl not found
2237 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002238 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002239 fi
2240 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002241 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002242fi
bellard11d9f692004-04-02 20:55:59 +00002243
aliguori5368a422009-03-03 17:37:21 +00002244if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002245 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002246#include <SDL.h>
2247#if defined(SDL_VIDEO_DRIVER_X11)
2248#include <X11/XKBlib.h>
2249#else
2250#error No x11 support
2251#endif
2252int main(void) { return 0; }
2253EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002254 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2255 sdl_cflags="$sdl_cflags $x11_cflags"
2256 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002257 fi
Juan Quintela07056672009-08-03 14:46:27 +02002258 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002259fi
2260
ths8f28f3f2007-01-05 21:25:54 +00002261##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002262# RDMA needs OpenFabrics libraries
2263if test "$rdma" != "no" ; then
2264 cat > $TMPC <<EOF
2265#include <rdma/rdma_cma.h>
2266int main(void) { return 0; }
2267EOF
2268 rdma_libs="-lrdmacm -libverbs"
2269 if compile_prog "" "$rdma_libs" ; then
2270 rdma="yes"
2271 libs_softmmu="$libs_softmmu $rdma_libs"
2272 else
2273 if test "$rdma" = "yes" ; then
2274 error_exit \
2275 " OpenFabrics librdmacm/libibverbs not present." \
2276 " Your options:" \
2277 " (1) Fast: Install infiniband packages from your distro." \
2278 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2279 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2280 fi
2281 rdma="no"
2282 fi
2283fi
2284
2285##########################################
Tim Hardeck7536ee42013-01-21 11:04:44 +01002286# VNC TLS/WS detection
2287if test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
Juan Quintela1be10ad2009-08-12 18:20:28 +02002288 cat > $TMPC <<EOF
aliguoriae6b5e52008-08-06 16:55:50 +00002289#include <gnutls/gnutls.h>
2290int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2291EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002292 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2293 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
Juan Quintela1be10ad2009-08-12 18:20:28 +02002294 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
Tim Hardeck7536ee42013-01-21 11:04:44 +01002295 if test "$vnc_tls" != "no" ; then
2296 vnc_tls=yes
2297 fi
2298 if test "$vnc_ws" != "no" ; then
2299 vnc_ws=yes
2300 fi
Juan Quintela1be10ad2009-08-12 18:20:28 +02002301 libs_softmmu="$vnc_tls_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002302 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
Juan Quintela1be10ad2009-08-12 18:20:28 +02002303 else
2304 if test "$vnc_tls" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002305 feature_not_found "vnc-tls" "Install gnutls devel"
aliguoriae6b5e52008-08-06 16:55:50 +00002306 fi
Tim Hardeck7536ee42013-01-21 11:04:44 +01002307 if test "$vnc_ws" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002308 feature_not_found "vnc-ws" "Install gnutls devel"
Tim Hardeck7536ee42013-01-21 11:04:44 +01002309 fi
Juan Quintela1be10ad2009-08-12 18:20:28 +02002310 vnc_tls=no
Tim Hardeck7536ee42013-01-21 11:04:44 +01002311 vnc_ws=no
Juan Quintela1be10ad2009-08-12 18:20:28 +02002312 fi
ths8d5d2d42007-08-25 01:37:51 +00002313fi
2314
2315##########################################
Benoît Canet95c6bff2014-02-21 22:21:15 +01002316# Quorum probe (check for gnutls)
2317if test "$quorum" != "no" ; then
2318cat > $TMPC <<EOF
2319#include <gnutls/gnutls.h>
2320#include <gnutls/crypto.h>
2321int main(void) {char data[4096], digest[32];
2322gnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
2323return 0;
2324}
2325EOF
2326quorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2327quorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2328if compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then
2329 qcow_tls=yes
2330 libs_softmmu="$quorum_tls_libs $libs_softmmu"
2331 libs_tools="$quorum_tls_libs $libs_softmmu"
2332 QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags"
Stefan Weilb25c9df2014-04-29 08:21:16 +02002333 quorum="yes"
Benoît Canet95c6bff2014-02-21 22:21:15 +01002334else
Stefan Weilb25c9df2014-04-29 08:21:16 +02002335 if test "$quorum" = "yes"; then
2336 feature_not_found "gnutls" "gnutls > 2.10.0 required to compile Quorum"
2337 fi
2338 quorum="no"
Benoît Canet95c6bff2014-02-21 22:21:15 +01002339fi
2340fi
2341
2342##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002343# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002344if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002345 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002346#include <sasl/sasl.h>
2347#include <stdio.h>
2348int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2349EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002350 # Assuming Cyrus-SASL installed in /usr prefix
2351 vnc_sasl_cflags=""
2352 vnc_sasl_libs="-lsasl2"
2353 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2354 vnc_sasl=yes
2355 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002356 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002357 else
2358 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002359 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002360 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002361 vnc_sasl=no
2362 fi
aliguori2f9606b2009-03-06 20:27:28 +00002363fi
2364
2365##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002366# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002367if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002368cat > $TMPC <<EOF
2369#include <stdio.h>
2370#include <jpeglib.h>
2371int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2372EOF
2373 vnc_jpeg_cflags=""
2374 vnc_jpeg_libs="-ljpeg"
2375 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2376 vnc_jpeg=yes
2377 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002378 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002379 else
2380 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002381 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002382 fi
2383 vnc_jpeg=no
2384 fi
2385fi
2386
2387##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002388# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002389if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002390cat > $TMPC <<EOF
2391//#include <stdio.h>
2392#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002393#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002394int main(void) {
2395 png_structp png_ptr;
2396 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002397 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002398}
2399EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002400 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002401 vnc_png_cflags=`$pkg_config libpng --cflags`
2402 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002403 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002404 vnc_png_cflags=""
2405 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002406 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002407 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2408 vnc_png=yes
2409 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002410 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002411 else
2412 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002413 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002414 fi
2415 vnc_png=no
2416 fi
2417fi
2418
2419##########################################
aliguori76655d62009-03-06 20:27:37 +00002420# fnmatch() probe, used for ACL routines
2421fnmatch="no"
2422cat > $TMPC << EOF
2423#include <fnmatch.h>
2424int main(void)
2425{
2426 fnmatch("foo", "foo", 0);
2427 return 0;
2428}
2429EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002430if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002431 fnmatch="yes"
2432fi
2433
2434##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002435# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002436# Note that on some systems (notably MacOSX) no extra library
2437# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002438if test "$uuid" != "no" ; then
2439 uuid_libs="-luuid"
2440 cat > $TMPC << EOF
2441#include <uuid/uuid.h>
2442int main(void)
2443{
2444 uuid_t my_uuid;
2445 uuid_generate(my_uuid);
2446 return 0;
2447}
2448EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002449 if compile_prog "" "" ; then
2450 uuid="yes"
2451 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002452 uuid="yes"
2453 libs_softmmu="$uuid_libs $libs_softmmu"
2454 libs_tools="$uuid_libs $libs_tools"
2455 else
2456 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002457 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002458 fi
2459 uuid=no
2460 fi
2461fi
2462
Jeff Cody4f18b782013-10-30 10:44:39 -04002463if test "$vhdx" = "yes" ; then
2464 if test "$uuid" = "no" ; then
2465 error_exit "uuid required for VHDX support"
2466 fi
2467elif test "$vhdx" != "no" ; then
2468 if test "$uuid" = "yes" ; then
2469 vhdx=yes
2470 else
2471 vhdx=no
2472 fi
2473fi
2474
Stefan Weilee682d22009-10-01 20:10:37 +02002475##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002476# xfsctl() probe, used for raw-posix
2477if test "$xfs" != "no" ; then
2478 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002479#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002480#include <xfs/xfs.h>
2481int main(void)
2482{
2483 xfsctl(NULL, 0, 0, NULL);
2484 return 0;
2485}
2486EOF
2487 if compile_prog "" "" ; then
2488 xfs="yes"
2489 else
2490 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002491 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002492 fi
2493 xfs=no
2494 fi
2495fi
2496
2497##########################################
ths8a16d272008-07-19 09:56:24 +00002498# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002499if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002500 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002501 cat > $TMPC << EOF
2502#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002503int main(void)
2504{
2505 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002506 char s[] = "";
2507 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002508 return 0;
2509}
ths8a16d272008-07-19 09:56:24 +00002510EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002511 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002512 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002513 libs_softmmu="$vde_libs $libs_softmmu"
2514 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002515 else
2516 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002517 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002518 fi
2519 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002520 fi
ths8a16d272008-07-19 09:56:24 +00002521fi
2522
2523##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002524# netmap support probe
2525# Apart from looking for netmap headers, we make sure that the host API version
2526# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2527# a minor/major version number. Minor new features will be marked with values up
2528# to 15, and if something happens that requires a change to the backend we will
2529# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002530if test "$netmap" != "no" ; then
2531 cat > $TMPC << EOF
2532#include <inttypes.h>
2533#include <net/if.h>
2534#include <net/netmap.h>
2535#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002536#if (NETMAP_API < 11) || (NETMAP_API > 15)
2537#error
2538#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002539int main(void) { return 0; }
2540EOF
2541 if compile_prog "" "" ; then
2542 netmap=yes
2543 else
2544 if test "$netmap" = "yes" ; then
2545 feature_not_found "netmap"
2546 fi
2547 netmap=no
2548 fi
2549fi
2550
2551##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002552# libcap-ng library probe
2553if test "$cap_ng" != "no" ; then
2554 cap_libs="-lcap-ng"
2555 cat > $TMPC << EOF
2556#include <cap-ng.h>
2557int main(void)
2558{
2559 capng_capability_to_name(CAPNG_EFFECTIVE);
2560 return 0;
2561}
2562EOF
2563 if compile_prog "" "$cap_libs" ; then
2564 cap_ng=yes
2565 libs_tools="$cap_libs $libs_tools"
2566 else
2567 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002568 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002569 fi
2570 cap_ng=no
2571 fi
2572fi
2573
2574##########################################
malcc2de5c92008-06-28 19:13:06 +00002575# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002576
malcc2de5c92008-06-28 19:13:06 +00002577audio_drv_probe()
2578{
2579 drv=$1
2580 hdr=$2
2581 lib=$3
2582 exp=$4
2583 cfl=$5
2584 cat > $TMPC << EOF
2585#include <$hdr>
2586int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002587EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002588 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002589 :
2590 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002591 error_exit "$drv check failed" \
2592 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002593 fi
2594}
2595
malc2fa7d3b2008-07-29 12:58:44 +00002596audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002597for drv in $audio_drv_list; do
2598 case $drv in
2599 alsa)
2600 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002601 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002602 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002603 ;;
2604
2605 fmod)
2606 if test -z $fmod_lib || test -z $fmod_inc; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002607 error_exit "You must specify path to FMOD library and headers" \
2608 "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
malcc2de5c92008-06-28 19:13:06 +00002609 fi
2610 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002611 libs_softmmu="$fmod_lib $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002612 ;;
2613
2614 esd)
2615 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002616 libs_softmmu="-lesd $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002617 audio_pt_int="yes"
malcc2de5c92008-06-28 19:13:06 +00002618 ;;
malcb8e59f12008-07-02 21:03:08 +00002619
2620 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002621 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2622 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2623 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002624 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002625 ;;
2626
Juan Quintela997e6902009-08-03 14:46:29 +02002627 coreaudio)
2628 libs_softmmu="-framework CoreAudio $libs_softmmu"
2629 ;;
2630
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002631 dsound)
2632 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002633 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002634 ;;
2635
2636 oss)
2637 libs_softmmu="$oss_lib $libs_softmmu"
2638 ;;
2639
2640 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002641 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2642 ;;
2643
malcd5631632009-10-10 01:13:41 +04002644 winwave)
2645 libs_softmmu="-lwinmm $libs_softmmu"
2646 audio_win_int="yes"
2647 ;;
2648
malce4c63a62008-07-19 16:15:16 +00002649 *)
malc1c9b2a52008-07-19 16:57:30 +00002650 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002651 error_exit "Unknown driver '$drv' selected" \
2652 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002653 }
2654 ;;
malcc2de5c92008-06-28 19:13:06 +00002655 esac
2656done
ths8f28f3f2007-01-05 21:25:54 +00002657
balrog4d3b6f62008-02-10 16:33:14 +00002658##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002659# BrlAPI probe
2660
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002661if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002662 brlapi_libs="-lbrlapi"
2663 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002664#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002665#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002666int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2667EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002668 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002669 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002670 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002671 else
2672 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002673 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002674 fi
2675 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002676 fi
2677fi
aurel322e4d9fb2008-04-08 06:01:02 +00002678
2679##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002680# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002681if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002682 if test "$mingw32" = "yes" ; then
2683 curses_list="-lpdcurses"
2684 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002685 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002686 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002687 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002688 cat > $TMPC << EOF
2689#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002690int main(void) {
2691 const char *s = curses_version();
2692 resize_term(0, 0);
2693 return s != 0;
2694}
balrog4d3b6f62008-02-10 16:33:14 +00002695EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002696 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002697 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002698 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002699 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002700 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002701 libs_softmmu="$curses_lib $libs_softmmu"
2702 break
2703 fi
2704 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002705 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002706 if test "$curses_found" = "yes" ; then
2707 curses=yes
2708 else
2709 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002710 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002711 fi
2712 curses=no
2713 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002714fi
balrog4d3b6f62008-02-10 16:33:14 +00002715
blueswir1414f0da2008-08-15 18:20:52 +00002716##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002717# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002718if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002719 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002720 curlconfig="$pkg_config libcurl"
2721 else
2722 curlconfig=curl-config
2723 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002724 cat > $TMPC << EOF
2725#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002726int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002727EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002728 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2729 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002730 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002731 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002732 else
2733 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002734 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002735 fi
2736 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002737 fi
2738fi # test "$curl"
2739
2740##########################################
balrogfb599c92008-09-28 23:49:55 +00002741# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002742if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002743 cat > $TMPC << EOF
2744#include <bluetooth/bluetooth.h>
2745int main(void) { return bt_error(0); }
2746EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002747 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2748 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002749 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002750 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002751 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002752 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002753 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002754 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002755 fi
balroge820e3f2008-09-30 02:27:44 +00002756 bluez="no"
2757 fi
balrogfb599c92008-09-28 23:49:55 +00002758fi
2759
2760##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002761# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002762
2763if test "$mingw32" = yes; then
2764 # g_poll is required in order to integrate with the glib main loop.
2765 glib_req_ver=2.20
2766else
2767 glib_req_ver=2.12
2768fi
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002769glib_modules=gthread-2.0
2770if test "$modules" = yes; then
2771 glib_modules="$glib_modules gmodule-2.0"
2772fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002773
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002774for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002775 if $pkg_config --atleast-version=$glib_req_ver $i; then
2776 glib_cflags=`$pkg_config --cflags $i`
2777 glib_libs=`$pkg_config --libs $i`
2778 CFLAGS="$glib_cflags $CFLAGS"
2779 LIBS="$glib_libs $LIBS"
2780 libs_qga="$glib_libs $libs_qga"
2781 else
2782 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2783 fi
2784done
2785
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002786# g_test_trap_subprocess added in 2.38. Used by some tests.
2787glib_subprocess=yes
2788if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2789 glib_subprocess=no
2790fi
2791
Fam Zhenge26110c2014-02-10 14:48:57 +08002792##########################################
2793# SHA command probe for modules
2794if test "$modules" = yes; then
2795 shacmd_probe="sha1sum sha1 shasum"
2796 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002797 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002798 shacmd="$c"
2799 break
2800 fi
2801 done
2802 if test "$shacmd" = ""; then
2803 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2804 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002805fi
2806
2807##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002808# pixman support probe
2809
2810if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002811 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2812 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002813 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002814 pixman="system"
2815 else
2816 pixman="internal"
2817 fi
2818fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002819if test "$pixman" = "none"; then
2820 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002821 error_exit "pixman disabled but system emulation or tools build" \
2822 "enabled. You can turn off pixman only if you also" \
2823 "disable all system emulation targets and the tools" \
2824 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002825 fi
2826 pixman_cflags=
2827 pixman_libs=
2828elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002829 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002830 pixman_cflags=`$pkg_config --cflags pixman-1`
2831 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002832else
2833 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08002834 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01002835 " (1) Preferred: Install the pixman devel package (any recent" \
2836 " distro should have packages as Xorg needs pixman too)." \
2837 " (2) Fetch the pixman submodule, using:" \
2838 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002839 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01002840 mkdir -p pixman/pixman
2841 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2842 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002843fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002844
2845##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302846# libcap probe
2847
2848if test "$cap" != "no" ; then
2849 cat > $TMPC <<EOF
2850#include <stdio.h>
2851#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01002852int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302853EOF
2854 if compile_prog "" "-lcap" ; then
2855 cap=yes
2856 else
2857 cap=no
2858 fi
2859fi
2860
2861##########################################
aliguorie5d355d2009-04-24 18:03:15 +00002862# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04002863PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00002864
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02002865pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00002866cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00002867#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01002868static void *f(void *p) { return NULL; }
2869int main(void) {
2870 pthread_t thread;
2871 pthread_create(&thread, 0, f, 0);
2872 return 0;
2873}
blueswir1414f0da2008-08-15 18:20:52 +00002874EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02002875if compile_prog "" "" ; then
2876 pthread=yes
2877else
2878 for pthread_lib in $PTHREADLIBS_LIST; do
2879 if compile_prog "" "$pthread_lib" ; then
2880 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04002881 found=no
2882 for lib_entry in $LIBS; do
2883 if test "$lib_entry" = "$pthread_lib"; then
2884 found=yes
2885 break
2886 fi
2887 done
2888 if test "$found" = "no"; then
2889 LIBS="$pthread_lib $LIBS"
2890 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02002891 break
2892 fi
2893 done
2894fi
blueswir1414f0da2008-08-15 18:20:52 +00002895
Anthony Liguori4617e592009-08-25 17:21:56 -05002896if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002897 error_exit "pthread check failed" \
2898 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00002899fi
2900
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00002901# check for pthread_setname_np
2902pthread_setname_np=no
2903cat > $TMPC << EOF
2904#include <pthread.h>
2905
2906static void *f(void *p) { return NULL; }
2907int main(void)
2908{
2909 pthread_t thread;
2910 pthread_create(&thread, 0, f, 0);
2911 pthread_setname_np(thread, "QEMU");
2912 return 0;
2913}
2914EOF
2915if compile_prog "" "$pthread_lib" ; then
2916 pthread_setname_np=yes
2917fi
2918
aliguoribf9298b2008-12-05 20:05:26 +00002919##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002920# rbd probe
2921if test "$rbd" != "no" ; then
2922 cat > $TMPC <<EOF
2923#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07002924#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002925int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07002926 rados_t cluster;
2927 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002928 return 0;
2929}
2930EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07002931 rbd_libs="-lrbd -lrados"
2932 if compile_prog "" "$rbd_libs" ; then
2933 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002934 else
2935 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002936 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002937 fi
2938 rbd=no
2939 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002940fi
2941
2942##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002943# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01002944min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002945if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002946 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002947 libssh2_cflags=`$pkg_config libssh2 --cflags`
2948 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002949 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002950 else
2951 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01002952 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002953 fi
2954 libssh2=no
2955 fi
2956fi
2957
2958##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01002959# libssh2_sftp_fsync probe
2960
2961if test "$libssh2" = "yes"; then
2962 cat > $TMPC <<EOF
2963#include <stdio.h>
2964#include <libssh2.h>
2965#include <libssh2_sftp.h>
2966int main(void) {
2967 LIBSSH2_SESSION *session;
2968 LIBSSH2_SFTP *sftp;
2969 LIBSSH2_SFTP_HANDLE *sftp_handle;
2970 session = libssh2_session_init ();
2971 sftp = libssh2_sftp_init (session);
2972 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2973 libssh2_sftp_fsync (sftp_handle);
2974 return 0;
2975}
2976EOF
2977 # libssh2_cflags/libssh2_libs defined in previous test.
2978 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
2979 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2980 fi
2981fi
2982
2983##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02002984# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02002985
2986if test "$linux_aio" != "no" ; then
2987 cat > $TMPC <<EOF
2988#include <libaio.h>
2989#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002990#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02002991int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
2992EOF
2993 if compile_prog "" "-laio" ; then
2994 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02002995 else
2996 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002997 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02002998 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03002999 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003000 fi
3001fi
3002
3003##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003004# TPM passthrough is only on x86 Linux
3005
3006if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3007 tpm_passthrough=$tpm
3008else
3009 tpm_passthrough=no
3010fi
3011
3012##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003013# attr probe
3014
3015if test "$attr" != "no" ; then
3016 cat > $TMPC <<EOF
3017#include <stdio.h>
3018#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003019#ifdef CONFIG_LIBATTR
3020#include <attr/xattr.h>
3021#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003022#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003023#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003024int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3025EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003026 if compile_prog "" "" ; then
3027 attr=yes
3028 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003029 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003030 attr=yes
3031 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003032 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003033 else
3034 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003035 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003036 fi
3037 attr=no
3038 fi
3039fi
3040
3041##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003042# iovec probe
3043cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003044#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003045#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003046#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003047int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003048EOF
3049iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003050if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003051 iovec=yes
3052fi
3053
aurel32f652e6a2008-12-16 10:43:48 +00003054##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003055# preadv probe
3056cat > $TMPC <<EOF
3057#include <sys/types.h>
3058#include <sys/uio.h>
3059#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003060int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003061EOF
3062preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003063if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003064 preadv=yes
3065fi
3066
3067##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003068# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003069# fdt support is mandatory for at least some target architectures,
3070# so insist on it if we're building those system emulators.
3071fdt_required=no
3072for target in $target_list; do
3073 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003074 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003075 fdt_required=yes
3076 ;;
3077 esac
3078done
3079
3080if test "$fdt_required" = "yes"; then
3081 if test "$fdt" = "no"; then
3082 error_exit "fdt disabled but some requested targets require it." \
3083 "You can turn off fdt only if you also disable all the system emulation" \
3084 "targets which need it (by specifying a cut down --target-list)."
3085 fi
3086 fdt=yes
3087fi
3088
Juan Quintela2df87df2009-08-12 18:29:54 +02003089if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003090 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003091 # explicitly check for libfdt_env.h as it is missing in some stable installs
Juan Quintelab41af4b2009-07-27 16:13:20 +02003092 cat > $TMPC << EOF
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003093#include <libfdt_env.h>
aurel32f652e6a2008-12-16 10:43:48 +00003094int main(void) { return 0; }
3095EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003096 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003097 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003098 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003099 elif test -d ${source_path}/dtc/libfdt ; then
3100 # have submodule DTC - use it
3101 fdt=yes
3102 dtc_internal="yes"
3103 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003104 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003105 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3106 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003107 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003108 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3109 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3110 elif test "$fdt" = "yes" ; then
3111 # have neither and want - prompt for system/submodule install
Stewart Smith3f281822014-01-24 12:39:06 +11003112 error_exit "DTC (libfdt) not present. Your options:" \
3113 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003114 " (2) Fetch the DTC submodule, using:" \
3115 " git submodule update --init dtc"
3116 else
3117 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003118 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003119 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003120 fi
3121fi
3122
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003123libs_softmmu="$libs_softmmu $fdt_libs"
3124
Michael Walle20ff0752011-03-07 23:32:39 +01003125##########################################
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003126# opengl probe (for sdl2, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003127
3128# GLX probe, used by milkymist-tmu2
3129# this is temporary, code will be switched to egl mid-term.
3130cat > $TMPC << EOF
3131#include <X11/Xlib.h>
3132#include <GL/gl.h>
3133#include <GL/glx.h>
3134int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3135EOF
3136if compile_prog "" "-lGL -lX11" ; then
3137 have_glx=yes
3138else
3139 have_glx=no
3140fi
3141
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003142if test "$opengl" != "no" ; then
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003143 opengl_pkgs="gl"
3144 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003145 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3146 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003147 opengl=yes
Michael Walle20ff0752011-03-07 23:32:39 +01003148 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003149 if test "$opengl" = "yes" ; then
3150 feature_not_found "opengl" "Install GL devel (e.g. MESA)"
Michael Walle20ff0752011-03-07 23:32:39 +01003151 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003152 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003153 opengl_libs=""
3154 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003155 fi
3156fi
3157
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003158
3159##########################################
3160# archipelago probe
3161if test "$archipelago" != "no" ; then
3162 cat > $TMPC <<EOF
3163#include <stdio.h>
3164#include <xseg/xseg.h>
3165#include <xseg/protocol.h>
3166int main(void) {
3167 xseg_initialize();
3168 return 0;
3169}
3170EOF
3171 archipelago_libs=-lxseg
3172 if compile_prog "" "$archipelago_libs"; then
3173 archipelago="yes"
3174 libs_tools="$archipelago_libs $libs_tools"
3175 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003176
3177 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3178 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3179 echo "license and therefore prevent redistribution."
3180 echo
3181 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003182 else
3183 if test "$archipelago" = "yes" ; then
3184 feature_not_found "Archipelago backend support" "Install libxseg devel"
3185 fi
3186 archipelago="no"
3187 fi
3188fi
3189
3190
Bharata B Raoeb100392012-09-24 14:42:45 +05303191##########################################
3192# glusterfs probe
3193if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003194 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303195 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003196 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3197 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003198 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303199 glusterfs_discard="yes"
3200 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303201 if $pkg_config --atleast-version=6 glusterfs-api; then
3202 glusterfs_zerofill="yes"
3203 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303204 else
3205 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003206 feature_not_found "GlusterFS backend support" \
3207 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303208 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303209 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303210 fi
3211fi
3212
aurel3239386ac2009-04-15 19:48:17 +00003213# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003214# emulator. This is done because older glibc versions don't
3215# have syscall stubs for these implemented. In that case we
3216# don't provide them even if kernel supports them.
3217#
3218inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003219cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003220#include <sys/inotify.h>
3221
3222int
3223main(void)
3224{
3225 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003226 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003227}
3228EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003229if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003230 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003231fi
3232
Riku Voipioc05c7a72010-03-26 15:25:11 +00003233inotify1=no
3234cat > $TMPC << EOF
3235#include <sys/inotify.h>
3236
3237int
3238main(void)
3239{
3240 /* try to start inotify */
3241 return inotify_init1(0);
3242}
3243EOF
3244if compile_prog "" "" ; then
3245 inotify1=yes
3246fi
3247
Riku Voipioebc996f2009-04-21 15:01:51 +03003248# check if utimensat and futimens are supported
3249utimens=no
3250cat > $TMPC << EOF
3251#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003252#include <stddef.h>
3253#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003254#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003255
3256int main(void)
3257{
3258 utimensat(AT_FDCWD, "foo", NULL, 0);
3259 futimens(0, NULL);
3260 return 0;
3261}
3262EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003263if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003264 utimens=yes
3265fi
3266
Riku Voipio099d6b02009-05-05 12:10:04 +03003267# check if pipe2 is there
3268pipe2=no
3269cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003270#include <unistd.h>
3271#include <fcntl.h>
3272
3273int main(void)
3274{
3275 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003276 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003277}
3278EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003279if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003280 pipe2=yes
3281fi
3282
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003283# check if accept4 is there
3284accept4=no
3285cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003286#include <sys/socket.h>
3287#include <stddef.h>
3288
3289int main(void)
3290{
3291 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3292 return 0;
3293}
3294EOF
3295if compile_prog "" "" ; then
3296 accept4=yes
3297fi
3298
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303299# check if tee/splice is there. vmsplice was added same time.
3300splice=no
3301cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303302#include <unistd.h>
3303#include <fcntl.h>
3304#include <limits.h>
3305
3306int main(void)
3307{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003308 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303309 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3310 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3311 return 0;
3312}
3313EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003314if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303315 splice=yes
3316fi
3317
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003318##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003319# libnuma probe
3320
3321if test "$numa" != "no" ; then
3322 cat > $TMPC << EOF
3323#include <numa.h>
3324int main(void) { return numa_available(); }
3325EOF
3326
3327 if compile_prog "" "-lnuma" ; then
3328 numa=yes
3329 libs_softmmu="-lnuma $libs_softmmu"
3330 else
3331 if test "$numa" = "yes" ; then
3332 feature_not_found "numa" "install numactl devel"
3333 fi
3334 numa=no
3335 fi
3336fi
3337
3338##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003339# signalfd probe
3340signalfd="no"
3341cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003342#include <unistd.h>
3343#include <sys/syscall.h>
3344#include <signal.h>
3345int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3346EOF
3347
3348if compile_prog "" "" ; then
3349 signalfd=yes
3350fi
3351
Riku Voipioc2882b92009-08-12 15:08:24 +03003352# check if eventfd is supported
3353eventfd=no
3354cat > $TMPC << EOF
3355#include <sys/eventfd.h>
3356
3357int main(void)
3358{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003359 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003360}
3361EOF
3362if compile_prog "" "" ; then
3363 eventfd=yes
3364fi
3365
Ulrich Hechtd0927932009-09-17 20:22:14 +03003366# check for fallocate
3367fallocate=no
3368cat > $TMPC << EOF
3369#include <fcntl.h>
3370
3371int main(void)
3372{
3373 fallocate(0, 0, 0, 0);
3374 return 0;
3375}
3376EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003377if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003378 fallocate=yes
3379fi
3380
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003381# check for fallocate hole punching
3382fallocate_punch_hole=no
3383cat > $TMPC << EOF
3384#include <fcntl.h>
3385#include <linux/falloc.h>
3386
3387int main(void)
3388{
3389 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3390 return 0;
3391}
3392EOF
3393if compile_prog "" "" ; then
3394 fallocate_punch_hole=yes
3395fi
3396
Denis V. Lunevb953f072015-01-30 11:42:14 +03003397# check that fallocate supports range zeroing inside the file
3398fallocate_zero_range=no
3399cat > $TMPC << EOF
3400#include <fcntl.h>
3401#include <linux/falloc.h>
3402
3403int main(void)
3404{
3405 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3406 return 0;
3407}
3408EOF
3409if compile_prog "" "" ; then
3410 fallocate_zero_range=yes
3411fi
3412
Kevin Wolfed911432014-09-29 17:12:59 +02003413# check for posix_fallocate
3414posix_fallocate=no
3415cat > $TMPC << EOF
3416#include <fcntl.h>
3417
3418int main(void)
3419{
3420 posix_fallocate(0, 0, 0);
3421 return 0;
3422}
3423EOF
3424if compile_prog "" "" ; then
3425 posix_fallocate=yes
3426fi
3427
Peter Maydellc727f472011-01-06 11:05:10 +00003428# check for sync_file_range
3429sync_file_range=no
3430cat > $TMPC << EOF
3431#include <fcntl.h>
3432
3433int main(void)
3434{
3435 sync_file_range(0, 0, 0, 0);
3436 return 0;
3437}
3438EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003439if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003440 sync_file_range=yes
3441fi
3442
Peter Maydelldace20d2011-01-10 13:11:24 +00003443# check for linux/fiemap.h and FS_IOC_FIEMAP
3444fiemap=no
3445cat > $TMPC << EOF
3446#include <sys/ioctl.h>
3447#include <linux/fs.h>
3448#include <linux/fiemap.h>
3449
3450int main(void)
3451{
3452 ioctl(0, FS_IOC_FIEMAP, 0);
3453 return 0;
3454}
3455EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003456if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003457 fiemap=yes
3458fi
3459
Ulrich Hechtd0927932009-09-17 20:22:14 +03003460# check for dup3
3461dup3=no
3462cat > $TMPC << EOF
3463#include <unistd.h>
3464
3465int main(void)
3466{
3467 dup3(0, 0, 0);
3468 return 0;
3469}
3470EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003471if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003472 dup3=yes
3473fi
3474
Alex Bligh4e0c6522013-08-21 16:02:43 +01003475# check for ppoll support
3476ppoll=no
3477cat > $TMPC << EOF
3478#include <poll.h>
3479
3480int main(void)
3481{
3482 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3483 ppoll(&pfd, 1, 0, 0);
3484 return 0;
3485}
3486EOF
3487if compile_prog "" "" ; then
3488 ppoll=yes
3489fi
3490
Alex Blighcd758dd2013-08-21 16:02:44 +01003491# check for prctl(PR_SET_TIMERSLACK , ... ) support
3492prctl_pr_set_timerslack=no
3493cat > $TMPC << EOF
3494#include <sys/prctl.h>
3495
3496int main(void)
3497{
3498 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3499 return 0;
3500}
3501EOF
3502if compile_prog "" "" ; then
3503 prctl_pr_set_timerslack=yes
3504fi
3505
Peter Maydell3b6edd12011-02-15 18:35:05 +00003506# check for epoll support
3507epoll=no
3508cat > $TMPC << EOF
3509#include <sys/epoll.h>
3510
3511int main(void)
3512{
3513 epoll_create(0);
3514 return 0;
3515}
3516EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003517if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003518 epoll=yes
3519fi
3520
3521# epoll_create1 and epoll_pwait are later additions
3522# so we must check separately for their presence
3523epoll_create1=no
3524cat > $TMPC << EOF
3525#include <sys/epoll.h>
3526
3527int main(void)
3528{
Peter Maydell19e83f62011-04-26 16:56:40 +01003529 /* Note that we use epoll_create1 as a value, not as
3530 * a function being called. This is necessary so that on
3531 * old SPARC glibc versions where the function was present in
3532 * the library but not declared in the header file we will
3533 * fail the configure check. (Otherwise we will get a compiler
3534 * warning but not an error, and will proceed to fail the
3535 * qemu compile where we compile with -Werror.)
3536 */
Blue Swirlc075a722012-08-09 20:21:25 +00003537 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003538}
3539EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003540if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003541 epoll_create1=yes
3542fi
3543
3544epoll_pwait=no
3545cat > $TMPC << EOF
3546#include <sys/epoll.h>
3547
3548int main(void)
3549{
3550 epoll_pwait(0, 0, 0, 0, 0);
3551 return 0;
3552}
3553EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003554if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003555 epoll_pwait=yes
3556fi
3557
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003558# check for sendfile support
3559sendfile=no
3560cat > $TMPC << EOF
3561#include <sys/sendfile.h>
3562
3563int main(void)
3564{
3565 return sendfile(0, 0, 0, 0);
3566}
3567EOF
3568if compile_prog "" "" ; then
3569 sendfile=yes
3570fi
3571
Riku Voipio51834342014-06-22 11:25:42 +01003572# check for timerfd support (glibc 2.8 and newer)
3573timerfd=no
3574cat > $TMPC << EOF
3575#include <sys/timerfd.h>
3576
3577int main(void)
3578{
3579 return(timerfd_create(CLOCK_REALTIME, 0));
3580}
3581EOF
3582if compile_prog "" "" ; then
3583 timerfd=yes
3584fi
3585
Riku Voipio9af5c902014-08-12 15:58:57 +03003586# check for setns and unshare support
3587setns=no
3588cat > $TMPC << EOF
3589#include <sched.h>
3590
3591int main(void)
3592{
3593 int ret;
3594 ret = setns(0, 0);
3595 ret = unshare(0);
3596 return ret;
3597}
3598EOF
3599if compile_prog "" "" ; then
3600 setns=yes
3601fi
3602
pbrookcc8ae6d2006-04-23 17:57:59 +00003603# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003604if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003605 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003606 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003607 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003608 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003609 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003610 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003611 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003612 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003613fi
3614
Stefan Weilf514f412009-10-11 12:44:07 +02003615# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003616byteswap_h=no
3617cat > $TMPC << EOF
3618#include <byteswap.h>
3619int main(void) { return bswap_32(0); }
3620EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003621if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003622 byteswap_h=yes
3623fi
3624
Stefan Weil75f13592013-01-05 12:17:38 +01003625# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003626bswap_h=no
3627cat > $TMPC << EOF
3628#include <sys/endian.h>
3629#include <sys/types.h>
3630#include <machine/bswap.h>
3631int main(void) { return bswap32(0); }
3632EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003633if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003634 bswap_h=yes
3635fi
3636
aliguorida93a1f2008-12-12 20:02:52 +00003637##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003638# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003639if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003640 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003641 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003642 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3643 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003644 else
3645 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003646 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003647 fi
3648 libiscsi="no"
3649 fi
3650fi
3651
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003652##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003653# Do we need libm
3654cat > $TMPC << EOF
3655#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003656int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003657EOF
3658if compile_prog "" "" ; then
3659 :
3660elif compile_prog "" "-lm" ; then
3661 LIBS="-lm $LIBS"
3662 libs_qga="-lm $libs_qga"
3663else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003664 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003665fi
3666
3667##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003668# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003669# uClibc provides 2 versions of clock_gettime(), one with realtime
3670# support and one without. This means that the clock_gettime() don't
3671# need -lrt. We still need it for timer_create() so we check for this
3672# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003673cat > $TMPC <<EOF
3674#include <signal.h>
3675#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003676int main(void) {
3677 timer_create(CLOCK_REALTIME, NULL, NULL);
3678 return clock_gettime(CLOCK_REALTIME, NULL);
3679}
aliguorida93a1f2008-12-12 20:02:52 +00003680EOF
3681
Juan Quintela52166aa2009-08-03 14:46:03 +02003682if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003683 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003684# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003685elif compile_prog "" "$pthread_lib -lrt" ; then
3686 LIBS="$LIBS -lrt"
3687 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003688fi
3689
Blue Swirl31ff5042009-09-12 12:33:07 +00003690if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003691 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003692 libs_softmmu="-lutil $libs_softmmu"
3693fi
3694
Blue Swirlde5071c2009-09-12 09:58:46 +00003695##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003696# spice probe
3697if test "$spice" != "no" ; then
3698 cat > $TMPC << EOF
3699#include <spice.h>
3700int main(void) { spice_server_new(); return 0; }
3701EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003702 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3703 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003704 if $pkg_config --atleast-version=0.12.0 spice-server && \
3705 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003706 compile_prog "$spice_cflags" "$spice_libs" ; then
3707 spice="yes"
3708 libs_softmmu="$libs_softmmu $spice_libs"
3709 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003710 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3711 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003712 else
3713 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003714 feature_not_found "spice" \
3715 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003716 fi
3717 spice="no"
3718 fi
3719fi
3720
Robert Relyea111a38b2010-11-28 16:36:38 +02003721# check for libcacard for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003722smartcard_cflags=""
3723# TODO - what's the minimal nss version we support?
3724if test "$smartcard_nss" != "no"; then
3725 cat > $TMPC << EOF
Sergei Trofimovich5f01e062012-01-31 22:03:58 +03003726#include <pk11pub.h>
3727int main(void) { PK11_FreeSlot(0); return 0; }
3728EOF
Michael Tokarev9d171bd2014-05-08 16:48:27 +04003729 # FIXME: do not include $glib_* in here
3730 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3731 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3732 test_cflags="$nss_cflags"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003733 # The header files in nss < 3.13.3 have a bug which causes them to
3734 # emit a warning. If we're going to compile QEMU with -Werror, then
3735 # test that the headers don't have this bug. Otherwise we would pass
3736 # the configure test but fail to compile QEMU later.
3737 if test "$werror" = "yes"; then
3738 test_cflags="-Werror $test_cflags"
Robert Relyea111a38b2010-11-28 16:36:38 +02003739 fi
Paolo Bonzinib6fc6752012-12-20 20:40:35 +01003740 if test -n "$libtool" &&
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003741 $pkg_config --atleast-version=3.12.8 nss && \
Michael Tokarev9d171bd2014-05-08 16:48:27 +04003742 compile_prog "$test_cflags" "$nss_libs"; then
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003743 smartcard_nss="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003744 else
3745 if test "$smartcard_nss" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003746 feature_not_found "nss" "Install nss devel >= 3.12.8"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003747 fi
3748 smartcard_nss="no"
3749 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003750fi
3751
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003752# check for libusb
3753if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003754 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003755 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003756 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3757 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003758 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3759 libs_softmmu="$libs_softmmu $libusb_libs"
3760 else
3761 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003762 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003763 fi
3764 libusb="no"
3765 fi
3766fi
3767
Hans de Goede69354a82011-07-19 11:04:10 +02003768# check for usbredirparser for usb network redirection support
3769if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003770 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003771 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003772 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3773 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003774 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003775 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003776 else
3777 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003778 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003779 fi
3780 usb_redir="no"
3781 fi
3782fi
3783
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003784##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003785# check if we have VSS SDK headers for win
3786
3787if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3788 case "$vss_win32_sdk" in
3789 "") vss_win32_include="-I$source_path" ;;
3790 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3791 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3792 vss_win32_include="-I$source_path/.sdk/vss"
3793 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3794 ;;
3795 *) vss_win32_include="-I$vss_win32_sdk"
3796 esac
3797 cat > $TMPC << EOF
3798#define __MIDL_user_allocate_free_DEFINED__
3799#include <inc/win2003/vss.h>
3800int main(void) { return VSS_CTX_BACKUP; }
3801EOF
3802 if compile_prog "$vss_win32_include" "" ; then
3803 guest_agent_with_vss="yes"
3804 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3805 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3806 else
3807 if test "$vss_win32_sdk" != "" ; then
3808 echo "ERROR: Please download and install Microsoft VSS SDK:"
3809 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3810 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3811 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3812 echo "ERROR: The headers are extracted in the directory \`inc'."
3813 feature_not_found "VSS support"
3814 fi
3815 guest_agent_with_vss="no"
3816 fi
3817fi
3818
3819##########################################
3820# lookup Windows platform SDK (if not specified)
3821# The SDK is needed only to build .tlb (type library) file of guest agent
3822# VSS provider from the source. It is usually unnecessary because the
3823# pre-compiled .tlb file is included.
3824
3825if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3826 if test -z "$win_sdk"; then
3827 programfiles="$PROGRAMFILES"
3828 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3829 if test -n "$programfiles"; then
3830 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3831 else
3832 feature_not_found "Windows SDK"
3833 fi
3834 elif test "$win_sdk" = "no"; then
3835 win_sdk=""
3836 fi
3837fi
3838
3839##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003840
Blue Swirl747bbdf2009-10-18 16:26:06 +00003841##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003842# check if we have fdatasync
3843
3844fdatasync=no
3845cat > $TMPC << EOF
3846#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003847int main(void) {
3848#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3849return fdatasync(0);
3850#else
Stefan Weile172fe12012-04-06 21:33:20 +02003851#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003852#endif
3853}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003854EOF
3855if compile_prog "" "" ; then
3856 fdatasync=yes
3857fi
3858
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003859##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00003860# check if we have madvise
3861
3862madvise=no
3863cat > $TMPC << EOF
3864#include <sys/types.h>
3865#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003866#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003867int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3868EOF
3869if compile_prog "" "" ; then
3870 madvise=yes
3871fi
3872
3873##########################################
3874# check if we have posix_madvise
3875
3876posix_madvise=no
3877cat > $TMPC << EOF
3878#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003879#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003880int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3881EOF
3882if compile_prog "" "" ; then
3883 posix_madvise=yes
3884fi
3885
3886##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10003887# check if we have usable SIGEV_THREAD_ID
3888
3889sigev_thread_id=no
3890cat > $TMPC << EOF
3891#include <signal.h>
3892int main(void) {
3893 struct sigevent ev;
3894 ev.sigev_notify = SIGEV_THREAD_ID;
3895 ev._sigev_un._tid = 0;
3896 asm volatile("" : : "g"(&ev));
3897 return 0;
3898}
3899EOF
3900if compile_prog "" "" ; then
3901 sigev_thread_id=yes
3902fi
3903
3904##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003905# check if trace backend exists
3906
Lluís Vilanova5b808272014-05-27 15:02:14 +02003907$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003908if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02003909 error_exit "invalid trace backends" \
3910 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003911fi
3912
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01003913##########################################
3914# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02003915if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01003916 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05003917#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01003918int main(void) { return 0; }
3919EOF
3920 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05003921 if $pkg_config lttng-ust --exists; then
3922 lttng_ust_libs=`$pkg_config --libs lttng-ust`
3923 else
3924 lttng_ust_libs="-llttng-ust"
3925 fi
3926 if $pkg_config liburcu-bp --exists; then
3927 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
3928 else
3929 urcu_bp_libs="-lurcu-bp"
3930 fi
3931
3932 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
3933 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01003934 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05003935 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01003936 fi
3937fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00003938
3939##########################################
3940# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02003941if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00003942 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01003943 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00003944 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00003945 trace_backend_stap="no"
3946 if has 'stap' ; then
3947 trace_backend_stap="yes"
3948 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00003949fi
3950
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01003951##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01003952# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05303953
Peter Maydell7c2acc72013-04-08 12:11:27 +01003954# We prefer ucontext, but it's not always possible. The fallback
3955# is sigcontext. gthread is not selectable except explicitly, because
3956# it is not functional enough to run QEMU proper. (It is occasionally
3957# useful for debugging purposes.) On Windows the only valid backend
3958# is the Windows-specific one.
3959
3960ucontext_works=no
3961if test "$darwin" != "yes"; then
3962 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05303963#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00003964#ifdef __stub_makecontext
3965#error Ignoring glibc stub makecontext which will always fail
3966#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01003967int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05303968EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01003969 if compile_prog "" "" ; then
3970 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05303971 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01003972fi
3973
3974if test "$coroutine" = ""; then
3975 if test "$mingw32" = "yes"; then
3976 coroutine=win32
3977 elif test "$ucontext_works" = "yes"; then
3978 coroutine=ucontext
3979 else
3980 coroutine=sigaltstack
3981 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01003982else
Peter Maydell7c2acc72013-04-08 12:11:27 +01003983 case $coroutine in
3984 windows)
3985 if test "$mingw32" != "yes"; then
3986 error_exit "'windows' coroutine backend only valid for Windows"
3987 fi
3988 # Unfortunately the user visible backend name doesn't match the
3989 # coroutine-*.c filename for this case, so we have to adjust it here.
3990 coroutine=win32
3991 ;;
3992 ucontext)
3993 if test "$ucontext_works" != "yes"; then
3994 feature_not_found "ucontext"
3995 fi
3996 ;;
3997 gthread|sigaltstack)
3998 if test "$mingw32" = "yes"; then
3999 error_exit "only the 'windows' coroutine backend is valid for Windows"
4000 fi
4001 ;;
4002 *)
4003 error_exit "unknown coroutine backend $coroutine"
4004 ;;
4005 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304006fi
4007
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004008if test "$coroutine_pool" = ""; then
4009 if test "$coroutine" = "gthread"; then
4010 coroutine_pool=no
4011 else
4012 coroutine_pool=yes
4013 fi
4014fi
4015if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4016 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4017fi
4018
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304019##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304020# check if we have open_by_handle_at
4021
Stefan Weil4e1797f2012-06-18 22:11:06 +02004022open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304023cat > $TMPC << EOF
4024#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004025#if !defined(AT_EMPTY_PATH)
4026# error missing definition
4027#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004028int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004029#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304030EOF
4031if compile_prog "" "" ; then
4032 open_by_handle_at=yes
4033fi
4034
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304035########################################
4036# check if we have linux/magic.h
4037
4038linux_magic_h=no
4039cat > $TMPC << EOF
4040#include <linux/magic.h>
4041int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004042 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304043}
4044EOF
4045if compile_prog "" "" ; then
4046 linux_magic_h=yes
4047fi
4048
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004049########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004050# check whether we can disable warning option with a pragma (this is needed
4051# to silence warnings in the headers of some versions of external libraries).
4052# This test has to be compiled with -Werror as otherwise an unknown pragma is
4053# only a warning.
4054#
4055# If we can't selectively disable warning in the code, disable -Werror so that
4056# the build doesn't fail anyway.
4057
Peter Maydell06d71fa2012-07-30 16:13:07 +01004058pragma_disable_unused_but_set=no
4059cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004060#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004061#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004062#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004063#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004064
Peter Maydell06d71fa2012-07-30 16:13:07 +01004065int main(void) {
4066 return 0;
4067}
4068EOF
4069if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004070 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004071else
4072 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004073fi
4074
4075########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004076# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004077
4078valgrind_h=no
4079cat > $TMPC << EOF
4080#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004081int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004082 return 0;
4083}
4084EOF
4085if compile_prog "" "" ; then
4086 valgrind_h=yes
4087fi
4088
4089########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004090# check if environ is declared
4091
4092has_environ=no
4093cat > $TMPC << EOF
4094#include <unistd.h>
4095int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004096 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004097 return 0;
4098}
4099EOF
4100if compile_prog "" "" ; then
4101 has_environ=yes
4102fi
4103
Richard Henderson76a347e2012-12-28 14:17:02 -08004104########################################
4105# check if cpuid.h is usable.
4106
4107cpuid_h=no
4108cat > $TMPC << EOF
4109#include <cpuid.h>
4110int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004111 unsigned a, b, c, d;
4112 int max = __get_cpuid_max(0, 0);
4113
4114 if (max >= 1) {
4115 __cpuid(1, a, b, c, d);
4116 }
4117
4118 if (max >= 7) {
4119 __cpuid_count(7, 0, a, b, c, d);
4120 }
4121
4122 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004123}
4124EOF
4125if compile_prog "" "" ; then
4126 cpuid_h=yes
4127fi
4128
Richard Hendersonf5401662013-02-16 12:46:59 -08004129########################################
4130# check if __[u]int128_t is usable.
4131
4132int128=no
4133cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004134#if defined(__clang_major__) && defined(__clang_minor__)
4135# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4136# error __int128_t does not work in CLANG before 3.2
4137# endif
4138#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004139__int128_t a;
4140__uint128_t b;
4141int main (void) {
4142 a = a + b;
4143 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004144 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004145 return 0;
4146}
4147EOF
4148if compile_prog "" "" ; then
4149 int128=yes
4150fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004151
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004152########################################
4153# check if getauxval is available.
4154
4155getauxval=no
4156cat > $TMPC << EOF
4157#include <sys/auxv.h>
4158int main(void) {
4159 return getauxval(AT_HWCAP) == 0;
4160}
4161EOF
4162if compile_prog "" "" ; then
4163 getauxval=yes
4164fi
4165
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304166##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004167# End of CC checks
4168# After here, no more $cc or $ld runs
4169
Blue Swirl1d728c32012-05-01 18:45:39 +00004170if test "$gcov" = "yes" ; then
4171 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4172 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4173elif test "$debug" = "no" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004174 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004175fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004176
Peter Lieven6542aa92014-02-03 10:26:13 +01004177##########################################
4178# Do we have libnfs
4179if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004180 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004181 libnfs="yes"
4182 libnfs_libs=$($pkg_config --libs libnfs)
4183 LIBS="$LIBS $libnfs_libs"
4184 else
4185 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004186 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004187 fi
4188 libnfs="no"
4189 fi
4190fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004191
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004192# Disable zero malloc errors for official releases unless explicitly told to
4193# enable/disable
4194if test -z "$zero_malloc" ; then
4195 if test "$z_version" = "50" ; then
4196 zero_malloc="no"
4197 else
4198 zero_malloc="yes"
4199 fi
4200fi
4201
Peter Maydell6ca026c2012-07-18 15:10:18 +01004202# Now we've finished running tests it's OK to add -Werror to the compiler flags
4203if test "$werror" = "yes"; then
4204 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4205fi
4206
Juan Quintelae86ecd42009-08-03 14:45:59 +02004207if test "$solaris" = "no" ; then
4208 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004209 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004210 fi
4211fi
4212
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004213# test if pod2man has --utf8 option
4214if pod2man --help | grep -q utf8; then
4215 POD2MAN="pod2man --utf8"
4216else
4217 POD2MAN="pod2man"
4218fi
4219
Blue Swirl952afb72010-09-19 08:36:34 +00004220# Use ASLR, no-SEH and DEP if available
4221if test "$mingw32" = "yes" ; then
4222 for flag in --dynamicbase --no-seh --nxcompat; do
4223 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4224 LDFLAGS="-Wl,$flag $LDFLAGS"
4225 fi
4226 done
4227fi
4228
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004229qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004230qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004231qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004232qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004233
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004234tools=""
4235if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004236 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004237 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4238 tools="qemu-nbd\$(EXESUF) $tools"
4239 fi
4240fi
4241if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304242 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004243 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4244 virtfs=yes
4245 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4246 else
4247 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004248 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304249 fi
Andreas Färber17500372012-05-01 01:12:03 +02004250 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004251 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304252 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004253fi
4254if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004255 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Roth48ff7a62011-07-20 15:19:37 -05004256 tools="qemu-ga\$(EXESUF) $tools"
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004257 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4258 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4259 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004260 guest_agent=yes
4261 elif [ "$guest_agent" != yes ]; then
4262 guest_agent=no
4263 else
4264 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004265 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004266fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004267
4268# Mac OS X ships with a broken assembler
4269roms=
4270if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4271 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4272 "$softmmu" = yes ; then
4273 roms="optionrom"
4274fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004275if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004276 roms="$roms spapr-rtas"
4277fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004278
Christian Borntraeger9933c302013-04-23 01:23:03 +00004279if test "$cpu" = "s390x" ; then
4280 roms="$roms s390-ccw"
4281fi
4282
Richard Henderson964c6fa2013-06-21 19:10:16 -07004283# Probe for the need for relocating the user-only binary.
4284if test "$pie" = "no" ; then
4285 textseg_addr=
4286 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004287 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4288 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004289 textseg_addr=0x60000000
4290 ;;
4291 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004292 # A 256M aligned address, high in the address space, with enough
4293 # room for the code_gen_buffer above it before the stack.
4294 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004295 ;;
4296 esac
4297 if [ -n "$textseg_addr" ]; then
4298 cat > $TMPC <<EOF
4299 int main(void) { return 0; }
4300EOF
4301 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4302 if ! compile_prog "" "$textseg_ldflags"; then
4303 # In case ld does not support -Ttext-segment, edit the default linker
4304 # script via sed to set the .text start addr. This is needed on FreeBSD
4305 # at least.
4306 $ld --verbose | sed \
4307 -e '1,/==================================================/d' \
4308 -e '/==================================================/,$d' \
4309 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4310 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4311 textseg_ldflags="-Wl,-T../config-host.ld"
4312 fi
4313 fi
4314fi
4315
Jan Kiszka50e12062014-10-02 10:03:55 +02004316# prepend pixman and ftd flags after all config tests are done
4317QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4318libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004319
bellard43ce4df2003-06-09 19:53:12 +00004320echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004321echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004322echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004323echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004324echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004325echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004326echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004327echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004328if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004329echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004330echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004331echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004332else
4333echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004334echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004335fi
bellard5a671352003-10-01 00:13:48 +00004336echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004337echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004338echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004339echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004340echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004341echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004342echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004343echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004344echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004345echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004346echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004347echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004348if test "$slirp" = "yes" ; then
4349 echo "smbd $smbd"
4350fi
Fam Zheng17969262014-02-10 14:48:56 +08004351echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004352echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004353echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004354echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004355echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004356echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004357echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004358echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004359echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004360echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004361if test "$darwin" = "yes" ; then
4362 echo "Cocoa support $cocoa"
4363fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004364echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004365echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004366echo "GTK support $gtk"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004367echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004368echo "curses support $curses"
Alexander Graf769ce762009-05-11 17:41:42 +02004369echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004370echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004371echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004372echo "Block whitelist (rw) $block_drv_rw_whitelist"
4373echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304374echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004375echo "VNC support $vnc"
4376if test "$vnc" = "yes" ; then
4377 echo "VNC TLS support $vnc_tls"
4378 echo "VNC SASL support $vnc_sasl"
4379 echo "VNC JPEG support $vnc_jpeg"
4380 echo "VNC PNG support $vnc_png"
Tim Hardeck7536ee42013-01-21 11:04:44 +01004381 echo "VNC WS support $vnc_ws"
Jes Sorensen821601e2011-03-16 13:33:36 +01004382fi
blueswir131422552007-04-16 18:27:06 +00004383if test -n "$sparc_cpu"; then
4384 echo "Target Sparc Arch $sparc_cpu"
4385fi
aliguorie37630c2009-04-22 15:19:10 +00004386echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004387if test "$xen" = "yes" ; then
4388 echo "xen ctrl version $xen_ctrl_version"
4389fi
aurel322e4d9fb2008-04-08 06:01:02 +00004390echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004391echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004392echo "Documentation $docs"
Paul Brook379f6692009-07-17 12:48:08 +01004393echo "GUEST_BASE $guest_base"
Avi Kivity40d64442011-11-15 20:12:17 +02004394echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004395echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004396echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004397echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004398echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004399echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004400echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004401echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004402echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004403echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004404echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004405echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004406echo "madvise $madvise"
4407echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004408echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004409echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004410echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004411echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004412echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004413echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004414if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004415echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004416fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004417if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004418echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004419else
4420echo "spice support $spice"
4421fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004422echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004423echo "xfsctl support $xfs"
Robert Relyea111a38b2010-11-28 16:36:38 +02004424echo "nss used $smartcard_nss"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004425echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004426echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004427echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004428echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004429echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004430echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004431echo "QGA VSS support $guest_agent_with_vss"
Eduardo Otubof7945732012-08-14 18:44:05 -03004432echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004433echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004434echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304435echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004436echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004437echo "gcov $gcov_tool"
4438echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004439echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004440echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004441echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004442echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004443echo "vhdx $vhdx"
Benoît Canet95c6bff2014-02-21 22:21:15 +01004444echo "Quorum $quorum"
qiaonuohan607dacd2014-02-18 14:11:30 +08004445echo "lzo support $lzo"
4446echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004447echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004448echo "NUMA host support $numa"
bellard67b915a2004-03-31 23:37:16 +00004449
Stefan Weil1ba16962011-07-29 22:40:45 +02004450if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004451echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004452fi
bellard97a847b2003-08-10 21:36:04 +00004453
Juan Quintela98ec69a2009-07-16 18:34:18 +02004454config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004455
Stefan Weildbd99ae2013-01-01 18:33:44 +01004456echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4457
Juan Quintela98ec69a2009-07-16 18:34:18 +02004458echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004459echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004460
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004461echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004462echo "prefix=$prefix" >> $config_host_mak
4463echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004464echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004465echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004466echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004467echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004468echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004469echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004470echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4471echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004472echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004473if test "$mingw32" = "no" ; then
4474 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4475fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004476echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004477echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4478echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004479echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004480echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004481
Juan Quintela98ec69a2009-07-16 18:34:18 +02004482echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004483
aurel32f8393942009-04-13 18:45:38 +00004484if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004485 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004486fi
aliguori1625af82009-04-05 17:41:02 +00004487if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004488 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004489fi
bellard7d132992003-03-06 23:23:54 +00004490if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004491 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004492fi
bellard67b915a2004-03-31 23:37:16 +00004493if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004494 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004495 rc_version=`cat $source_path/VERSION`
4496 version_major=${rc_version%%.*}
4497 rc_version=${rc_version#*.}
4498 version_minor=${rc_version%%.*}
4499 rc_version=${rc_version#*.}
4500 version_subminor=${rc_version%%.*}
4501 version_micro=0
4502 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4503 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004504 if test "$guest_agent_with_vss" = "yes" ; then
4505 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4506 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4507 fi
pbrook210fa552007-02-27 21:04:49 +00004508else
Juan Quintela35f4df22009-07-27 16:13:07 +02004509 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004510fi
blueswir1128ab2f2008-08-15 18:33:42 +00004511
Mark McLoughlindffcb712009-10-22 17:49:11 +01004512if test "$linux" = "yes" ; then
4513 echo "CONFIG_LINUX=y" >> $config_host_mak
4514fi
4515
bellard83fb7ad2004-07-05 21:25:26 +00004516if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004517 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004518fi
malcb29fe3e2008-11-18 01:42:22 +00004519
4520if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004521 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004522fi
4523
bellardec530c82006-04-25 22:36:06 +00004524if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004525 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004526 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004527 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004528 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004529 fi
bellardec530c82006-04-25 22:36:06 +00004530fi
Andreas Färber179cf402010-09-20 00:50:43 +02004531if test "$haiku" = "yes" ; then
4532 echo "CONFIG_HAIKU=y" >> $config_host_mak
4533fi
bellard97a847b2003-08-10 21:36:04 +00004534if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004535 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004536fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004537if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004538 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004539fi
bellardc20709a2004-04-21 23:27:19 +00004540if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004541 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004542 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004543fi
ths8a16d272008-07-19 09:56:24 +00004544if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004545 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004546fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004547if test "$netmap" = "yes" ; then
4548 echo "CONFIG_NETMAP=y" >> $config_host_mak
4549fi
Gonglei015a33b2014-07-01 20:58:08 +08004550if test "$l2tpv3" = "yes" ; then
4551 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4552fi
Corey Bryant47e98652012-01-26 09:42:26 -05004553if test "$cap_ng" = "yes" ; then
4554 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4555fi
Juan Quintela2358a492009-07-27 16:13:25 +02004556echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004557for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004558 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004559 echo "$def=y" >> $config_host_mak
malc923e4522008-07-02 18:13:46 +00004560 if test "$drv" = "fmod"; then
Juan Quintela7aac6cb2009-07-27 16:12:47 +02004561 echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004562 fi
4563done
Juan Quintela67f86e82009-08-03 14:46:59 +02004564if test "$audio_pt_int" = "yes" ; then
4565 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4566fi
malcd5631632009-10-10 01:13:41 +04004567if test "$audio_win_int" = "yes" ; then
4568 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4569fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004570echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4571echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004572if test "$vnc" = "yes" ; then
4573 echo "CONFIG_VNC=y" >> $config_host_mak
4574fi
ths8d5d2d42007-08-25 01:37:51 +00004575if test "$vnc_tls" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004576 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
ths8d5d2d42007-08-25 01:37:51 +00004577fi
aliguori2f9606b2009-03-06 20:27:28 +00004578if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004579 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004580fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004581if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004582 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004583fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004584if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004585 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004586fi
Tim Hardeck7536ee42013-01-21 11:04:44 +01004587if test "$vnc_ws" = "yes" ; then
4588 echo "CONFIG_VNC_WS=y" >> $config_host_mak
4589 echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
4590fi
aliguori76655d62009-03-06 20:27:37 +00004591if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004592 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004593fi
Stefan Weilee682d22009-10-01 20:10:37 +02004594if test "$uuid" = "yes" ; then
4595 echo "CONFIG_UUID=y" >> $config_host_mak
4596fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004597if test "$xfs" = "yes" ; then
4598 echo "CONFIG_XFS=y" >> $config_host_mak
4599fi
pbrookb1a550a2006-04-16 13:28:56 +00004600qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004601echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004602echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004603echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004604echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004605if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004606 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004607fi
Fam Zheng17969262014-02-10 14:48:56 +08004608if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004609 # $shacmd can generate a hash started with digit, which the compiler doesn't
4610 # like as an symbol. So prefix it with an underscore
4611 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004612 echo "CONFIG_MODULES=y" >> $config_host_mak
4613fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004614if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004615 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004616 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004617 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004618fi
4619if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004620 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004621fi
4622if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004623 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004624fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004625if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004626 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004627fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004628if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004629 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004630fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004631if test "$accept4" = "yes" ; then
4632 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4633fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304634if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004635 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304636fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004637if test "$eventfd" = "yes" ; then
4638 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4639fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004640if test "$fallocate" = "yes" ; then
4641 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4642fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004643if test "$fallocate_punch_hole" = "yes" ; then
4644 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4645fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004646if test "$fallocate_zero_range" = "yes" ; then
4647 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4648fi
Kevin Wolfed911432014-09-29 17:12:59 +02004649if test "$posix_fallocate" = "yes" ; then
4650 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4651fi
Peter Maydellc727f472011-01-06 11:05:10 +00004652if test "$sync_file_range" = "yes" ; then
4653 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4654fi
Peter Maydelldace20d2011-01-10 13:11:24 +00004655if test "$fiemap" = "yes" ; then
4656 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4657fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004658if test "$dup3" = "yes" ; then
4659 echo "CONFIG_DUP3=y" >> $config_host_mak
4660fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01004661if test "$ppoll" = "yes" ; then
4662 echo "CONFIG_PPOLL=y" >> $config_host_mak
4663fi
Alex Blighcd758dd2013-08-21 16:02:44 +01004664if test "$prctl_pr_set_timerslack" = "yes" ; then
4665 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4666fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00004667if test "$epoll" = "yes" ; then
4668 echo "CONFIG_EPOLL=y" >> $config_host_mak
4669fi
4670if test "$epoll_create1" = "yes" ; then
4671 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4672fi
4673if test "$epoll_pwait" = "yes" ; then
4674 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4675fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004676if test "$sendfile" = "yes" ; then
4677 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4678fi
Riku Voipio51834342014-06-22 11:25:42 +01004679if test "$timerfd" = "yes" ; then
4680 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4681fi
Riku Voipio9af5c902014-08-12 15:58:57 +03004682if test "$setns" = "yes" ; then
4683 echo "CONFIG_SETNS=y" >> $config_host_mak
4684fi
aurel323b3f24a2009-04-15 16:12:13 +00004685if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004686 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00004687fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00004688if test "$inotify1" = "yes" ; then
4689 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4690fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004691if test "$byteswap_h" = "yes" ; then
4692 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4693fi
4694if test "$bswap_h" = "yes" ; then
4695 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4696fi
Alexander Graf769ce762009-05-11 17:41:42 +02004697if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004698 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02004699 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004700 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02004701fi
aurel322e4d9fb2008-04-08 06:01:02 +00004702if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004703 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00004704fi
balrogfb599c92008-09-28 23:49:55 +00004705if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004706 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02004707 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00004708fi
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03004709if test "glib_subprocess" = "yes" ; then
4710 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4711fi
Anthony Liguorie18df142011-07-19 14:50:29 -05004712echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004713if test "$gtk" = "yes" ; then
4714 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004715 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004716 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004717fi
4718if test "$vte" = "yes" ; then
4719 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004720 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4721fi
aliguorie37630c2009-04-22 15:19:10 +00004722if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02004723 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00004724 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00004725fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004726if test "$linux_aio" = "yes" ; then
4727 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4728fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004729if test "$attr" = "yes" ; then
4730 echo "CONFIG_ATTR=y" >> $config_host_mak
4731fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02004732if test "$libattr" = "yes" ; then
4733 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4734fi
Meador Inge983eef52012-02-24 14:00:42 +05304735if test "$virtfs" = "yes" ; then
4736 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004737fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004738if test "$vhost_scsi" = "yes" ; then
4739 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4740fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03004741if test "$vhost_net" = "yes" ; then
4742 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4743fi
ths77755342008-11-27 15:45:16 +00004744if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004745 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00004746fi
aliguoribf9298b2008-12-05 20:05:26 +00004747if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004748 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00004749fi
aliguoriceb42de2009-04-07 18:43:28 +00004750if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004751 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00004752fi
aurel32f652e6a2008-12-16 10:43:48 +00004753if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02004754 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00004755fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004756if test "$signalfd" = "yes" ; then
4757 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4758fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02004759if test "$tcg_interpreter" = "yes" ; then
4760 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4761fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004762if test "$fdatasync" = "yes" ; then
4763 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4764fi
Andreas Färbere78815a2010-09-25 11:26:05 +00004765if test "$madvise" = "yes" ; then
4766 echo "CONFIG_MADVISE=y" >> $config_host_mak
4767fi
4768if test "$posix_madvise" = "yes" ; then
4769 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4770fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10004771if test "$sigev_thread_id" = "yes" ; then
4772 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4773fi
bellard97a847b2003-08-10 21:36:04 +00004774
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004775if test "$spice" = "yes" ; then
4776 echo "CONFIG_SPICE=y" >> $config_host_mak
4777fi
4778
Robert Relyea111a38b2010-11-28 16:36:38 +02004779if test "$smartcard_nss" = "yes" ; then
4780 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
Michael Tokarev9d171bd2014-05-08 16:48:27 +04004781 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4782 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02004783fi
4784
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004785if test "$libusb" = "yes" ; then
4786 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4787fi
4788
Hans de Goede69354a82011-07-19 11:04:10 +02004789if test "$usb_redir" = "yes" ; then
4790 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4791fi
4792
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004793if test "$opengl" = "yes" ; then
4794 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06004795 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004796 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01004797fi
4798
qiaonuohan607dacd2014-02-18 14:11:30 +08004799if test "$lzo" = "yes" ; then
4800 echo "CONFIG_LZO=y" >> $config_host_mak
4801fi
4802
4803if test "$snappy" = "yes" ; then
4804 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4805fi
4806
Peter Wu6b383c02015-01-06 18:48:14 +01004807if test "$bzip2" = "yes" ; then
4808 echo "CONFIG_BZIP2=y" >> $config_host_mak
4809 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4810fi
4811
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004812if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004813 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004814 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4815 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004816fi
4817
Peter Lieven6542aa92014-02-03 10:26:13 +01004818if test "$libnfs" = "yes" ; then
4819 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4820fi
4821
Eduardo Otubof7945732012-08-14 18:44:05 -03004822if test "$seccomp" = "yes"; then
4823 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4824fi
4825
bellard83fb7ad2004-07-05 21:25:26 +00004826# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00004827if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004828 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00004829fi
4830
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004831if test "$zero_malloc" = "yes" ; then
4832 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4833fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02004834if test "$qom_cast_debug" = "yes" ; then
4835 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4836fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004837if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004838 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004839 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4840 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004841fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004842
Peter Maydell7c2acc72013-04-08 12:11:27 +01004843echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004844if test "$coroutine_pool" = "yes" ; then
4845 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4846else
4847 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4848fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304849
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304850if test "$open_by_handle_at" = "yes" ; then
4851 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4852fi
4853
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304854if test "$linux_magic_h" = "yes" ; then
4855 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4856fi
4857
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004858if test "$pragma_diagnostic_available" = "yes" ; then
4859 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01004860fi
4861
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004862if test "$valgrind_h" = "yes" ; then
4863 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
4864fi
4865
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004866if test "$has_environ" = "yes" ; then
4867 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
4868fi
4869
Richard Henderson76a347e2012-12-28 14:17:02 -08004870if test "$cpuid_h" = "yes" ; then
4871 echo "CONFIG_CPUID_H=y" >> $config_host_mak
4872fi
4873
Richard Hendersonf5401662013-02-16 12:46:59 -08004874if test "$int128" = "yes" ; then
4875 echo "CONFIG_INT128=y" >> $config_host_mak
4876fi
4877
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004878if test "$getauxval" = "yes" ; then
4879 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
4880fi
4881
Bharata B Raoeb100392012-09-24 14:42:45 +05304882if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004883 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004884 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
4885 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05304886fi
4887
Bharata B Rao0c14fb42013-07-16 21:47:42 +05304888if test "$glusterfs_discard" = "yes" ; then
4889 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
4890fi
4891
Bharata B Rao7c815372013-12-21 14:51:25 +05304892if test "$glusterfs_zerofill" = "yes" ; then
4893 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
4894fi
4895
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004896if test "$archipelago" = "yes" ; then
4897 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
4898 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
4899fi
4900
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004901if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004902 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004903 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
4904 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004905fi
4906
Benoît Canet95c6bff2014-02-21 22:21:15 +01004907if test "$quorum" = "yes" ; then
4908 echo "CONFIG_QUORUM=y" >> $config_host_mak
4909fi
4910
Jeff Cody4f18b782013-10-30 10:44:39 -04004911if test "$vhdx" = "yes" ; then
4912 echo "CONFIG_VHDX=y" >> $config_host_mak
4913fi
4914
blueswir168063642008-11-22 21:03:55 +00004915# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02004916if test "$libusb" = "yes"; then
4917 echo "HOST_USB=libusb legacy" >> $config_host_mak
4918else
Juan Quintela98ec69a2009-07-16 18:34:18 +02004919 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02004920fi
blueswir168063642008-11-22 21:03:55 +00004921
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004922# TPM passthrough support?
4923if test "$tpm" = "yes"; then
4924 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
4925 if test "$tpm_passthrough" = "yes"; then
4926 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
4927 fi
4928fi
4929
Lluís Vilanova5b808272014-05-27 15:02:14 +02004930echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
4931if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02004932 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05304933fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02004934if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02004935 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
4936 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02004937 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01004938fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02004939if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02004940 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
4941fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02004942if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02004943 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
4944fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02004945if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02004946 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
4947 if test "$trace_backend_stap" = "yes" ; then
4948 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
4949 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004950fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02004951if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09004952 if test "$linux" = "yes" ; then
4953 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09004954 else
Stewart Smith21684af2014-01-24 12:39:10 +11004955 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09004956 fi
4957fi
Prerna Saxena9410b562010-07-13 09:26:32 +01004958echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
4959
Michael R. Hines2da776d2013-07-22 10:01:54 -04004960if test "$rdma" = "yes" ; then
4961 echo "CONFIG_RDMA=y" >> $config_host_mak
4962fi
4963
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00004964# Hold two types of flag:
4965# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
4966# a thread we have a handle to
4967# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
4968# platform
4969if test "$pthread_setname_np" = "yes" ; then
4970 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
4971 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
4972fi
4973
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02004974if test "$tcg_interpreter" = "yes"; then
4975 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
4976elif test "$ARCH" = "sparc64" ; then
4977 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
4978elif test "$ARCH" = "s390x" ; then
4979 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07004980elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02004981 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07004982elif test "$ARCH" = "ppc64" ; then
4983 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02004984else
4985 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
4986fi
4987QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
4988
Juan Quintela98ec69a2009-07-16 18:34:18 +02004989echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004990echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004991echo "MAKE=$make" >> $config_host_mak
4992echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04004993echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
4994echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01004995if test -n "$libtool"; then
4996 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
4997 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
4998else
4999 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5000 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5001fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005002echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005003echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005004if $iasl -h > /dev/null 2>&1; then
5005 echo "IASL=$iasl" >> $config_host_mak
5006fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005007echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005008echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005009echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005010echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005011echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005012echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005013echo "AS=$as" >> $config_host_mak
5014echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005015echo "OBJCOPY=$objcopy" >> $config_host_mak
5016echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005017echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005018echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005019echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005020echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005021echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005022echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005023echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005024if test "$sparse" = "yes" ; then
5025 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005026 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005027 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005028 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5029 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5030fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005031if test "$cross_prefix" != ""; then
5032 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5033else
5034 echo "AUTOCONF_HOST := " >> $config_host_mak
5035fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005036echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005037echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005038echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005039echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005040echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005041echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005042echo "DSOSUF=$DSOSUF" >> $config_host_mak
5043echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005044echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005045echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005046echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005047if test "$gcov" = "yes" ; then
5048 echo "CONFIG_GCOV=y" >> $config_host_mak
5049 echo "GCOV=$gcov_tool" >> $config_host_mak
5050fi
Juan Quintela804edf22009-07-27 16:12:49 +02005051
Peter Maydell6efd7512011-11-30 11:59:04 +00005052# use included Linux headers
5053if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005054 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005055 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005056 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005057 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005058 ;;
5059 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005060 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005061 ;;
5062 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005063 linux_arch=s390
5064 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005065 aarch64)
5066 linux_arch=arm64
5067 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005068 mips64)
5069 linux_arch=mips
5070 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005071 *)
5072 # For most CPUs the kernel architecture name and QEMU CPU name match.
5073 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005074 ;;
5075 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005076 # For non-KVM architectures we will not have asm headers
5077 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5078 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5079 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005080fi
5081
bellard1d14ffa2005-10-30 18:58:22 +00005082for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005083target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005084config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005085target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005086target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005087
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005088case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005089 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 +02005090 target_bigendian=yes
5091 ;;
5092esac
bellard97a847b2003-08-10 21:36:04 +00005093target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005094target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005095target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005096target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005097case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005098 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005099 target_softmmu="yes"
5100 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005101 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005102 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005103 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005104 fi
pbrook9e407a82007-05-26 16:38:53 +00005105 target_user_only="yes"
5106 target_linux_user="yes"
5107 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005108 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005109 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005110 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005111 fi
blueswir184778502008-10-26 20:33:16 +00005112 target_user_only="yes"
5113 target_bsd_user="yes"
5114 ;;
pbrook9e407a82007-05-26 16:38:53 +00005115 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005116 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005117 exit 1
5118 ;;
5119esac
ths831b7822007-01-18 20:06:33 +00005120
bellard97a847b2003-08-10 21:36:04 +00005121mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005122echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005123
pbrooke5fe0c52006-06-11 13:32:59 +00005124bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005125interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005126gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005127
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005128TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005129TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005130TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005131
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005132case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005133 i386)
aurel322408a522008-04-20 20:19:44 +00005134 ;;
5135 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005136 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005137 ;;
5138 alpha)
aurel322408a522008-04-20 20:19:44 +00005139 ;;
5140 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005141 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005142 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005143 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005144 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005145 aarch64)
5146 TARGET_BASE_ARCH=arm
5147 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005148 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 +01005149 ;;
aurel322408a522008-04-20 20:19:44 +00005150 cris)
aurel322408a522008-04-20 20:19:44 +00005151 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005152 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005153 ;;
aurel322408a522008-04-20 20:19:44 +00005154 m68k)
aurel322408a522008-04-20 20:19:44 +00005155 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005156 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005157 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005158 microblaze|microblazeel)
5159 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005160 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005161 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005162 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005163 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005164 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005165 ;;
5166 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005167 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005168 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005169 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005170 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005171 ;;
5172 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005173 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005174 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005175 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005176 ;;
Bastian Koppelmann0aaeb112014-09-01 12:59:49 +01005177 tricore)
5178 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005179 moxie)
5180 ;;
Jia Liue67db062012-07-20 15:50:39 +08005181 or32)
5182 TARGET_ARCH=openrisc
5183 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005184 ;;
aurel322408a522008-04-20 20:19:44 +00005185 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005186 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005187 ;;
5188 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005189 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005190 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005191 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005192 ;;
5193 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005194 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005195 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005196 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005197 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005198 ppc64le)
5199 TARGET_ARCH=ppc64
5200 TARGET_BASE_ARCH=ppc
5201 TARGET_ABI_DIR=ppc
5202 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5203 ;;
aurel322408a522008-04-20 20:19:44 +00005204 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005205 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005206 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005207 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005208 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005209 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005210 ;;
5211 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005212 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005213 bflt="yes"
5214 ;;
5215 sparc)
aurel322408a522008-04-20 20:19:44 +00005216 ;;
5217 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005218 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005219 ;;
5220 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005221 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005222 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005223 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005224 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005225 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005226 s390x)
David Hildenbrand6117afa2014-08-29 15:52:15 +02005227 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01005228 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005229 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005230 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005231 xtensa|xtensaeb)
5232 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005233 ;;
aurel322408a522008-04-20 20:19:44 +00005234 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005235 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005236 ;;
5237esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005238# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5239if [ "$TARGET_BASE_ARCH" = "" ]; then
5240 TARGET_BASE_ARCH=$TARGET_ARCH
5241fi
5242
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005243symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5244
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005245upper() {
5246 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5247}
5248
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005249target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005250echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005251echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005252echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005253if [ "$TARGET_ABI_DIR" = "" ]; then
5254 TARGET_ABI_DIR=$TARGET_ARCH
5255fi
Juan Quintela25be2102009-10-07 02:41:00 +02005256echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005257if [ "$HOST_VARIANT_DIR" != "" ]; then
5258 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5259fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005260case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005261 i386|x86_64)
5262 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005263 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005264 if test "$xen_pci_passthrough" = yes; then
5265 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5266 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005267 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005268 ;;
5269 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005270esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005271case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005272 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005273 # Make sure the target and host cpus are compatible
5274 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005275 \( "$target_name" = "$cpu" -o \
5276 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5277 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5278 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5279 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005280 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005281 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005282 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5283 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5284 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005285 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005286 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005287 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5288 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005289 fi
5290esac
bellardde83cd02003-06-15 20:25:43 +00005291if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005292 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005293fi
5294if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005295 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005296fi
bellard997344f2003-10-27 21:10:39 +00005297if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005298 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005299 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005300fi
ths831b7822007-01-18 20:06:33 +00005301if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005302 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005303fi
pbrook56aebc82008-10-11 17:55:29 +00005304list=""
5305if test ! -z "$gdb_xml_files" ; then
5306 for x in $gdb_xml_files; do
5307 list="$list $source_path/gdb-xml/$x"
5308 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005309 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005310fi
bellardde83cd02003-06-15 20:25:43 +00005311
pbrooke5fe0c52006-06-11 13:32:59 +00005312if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005313 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005314fi
Paul Brook379f6692009-07-17 12:48:08 +01005315if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005316 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
Paul Brook379f6692009-07-17 12:48:08 +01005317fi
blueswir184778502008-10-26 20:33:16 +00005318if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005319 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005320fi
bellard5b0753e2005-03-01 21:37:28 +00005321
Juan Quintela4afddb52009-08-03 14:46:45 +02005322# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005323
Juan Quintela4afddb52009-08-03 14:46:45 +02005324cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005325ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005326
Juan Quintela64656022009-08-03 14:46:53 +02005327for i in $ARCH $TARGET_BASE_ARCH ; do
5328 case "$i" in
5329 alpha)
Juan Quintela25be2102009-10-07 02:41:00 +02005330 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005331 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005332 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005333 aarch64)
5334 if test -n "${cxx}"; then
5335 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5336 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5337 fi
5338 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005339 arm)
Juan Quintela25be2102009-10-07 02:41:00 +02005340 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005341 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
Claudio Fontana999b53e2014-02-05 17:27:28 +00005342 if test -n "${cxx}"; then
5343 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5344 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5345 fi
Juan Quintela64656022009-08-03 14:46:53 +02005346 ;;
5347 cris)
Juan Quintela25be2102009-10-07 02:41:00 +02005348 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005349 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005350 ;;
5351 hppa)
Juan Quintela25be2102009-10-07 02:41:00 +02005352 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005353 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005354 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005355 i386|x86_64|x32)
Juan Quintela25be2102009-10-07 02:41:00 +02005356 echo "CONFIG_I386_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005357 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005358 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005359 ia64*)
5360 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005361 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
Aurelien Jarno903ec552010-03-29 02:12:51 +02005362 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005363 lm32)
5364 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005365 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
Michael Walle79368f42012-03-31 19:54:20 +02005366 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005367 m68k)
Juan Quintela25be2102009-10-07 02:41:00 +02005368 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005369 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005370 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005371 microblaze*)
Juan Quintela25be2102009-10-07 02:41:00 +02005372 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005373 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005374 ;;
5375 mips*)
Juan Quintela25be2102009-10-07 02:41:00 +02005376 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005377 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005378 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005379 moxie*)
5380 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5381 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5382 ;;
Jia Liue67db062012-07-20 15:50:39 +08005383 or32)
5384 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005385 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
Jia Liue67db062012-07-20 15:50:39 +08005386 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005387 ppc*)
Juan Quintela25be2102009-10-07 02:41:00 +02005388 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005389 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005390 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005391 s390*)
Juan Quintela25be2102009-10-07 02:41:00 +02005392 echo "CONFIG_S390_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005393 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005394 ;;
5395 sh4)
Juan Quintela25be2102009-10-07 02:41:00 +02005396 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005397 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005398 ;;
5399 sparc*)
Juan Quintela25be2102009-10-07 02:41:00 +02005400 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005401 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005402 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005403 xtensa*)
5404 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005405 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
Max Filippovcfa550c2011-09-06 03:55:26 +04005406 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005407 esac
5408done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005409if test "$tcg_interpreter" = "yes" ; then
5410 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005411 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
Stefan Weil9195b2c2011-10-19 07:07:18 +02005412fi
Juan Quintela64656022009-08-03 14:46:53 +02005413
Juan Quintela6ee71262009-08-03 14:46:47 +02005414case "$ARCH" in
5415alpha)
5416 # Ensure there's only a single GP
5417 cflags="-msmall-data $cflags"
5418;;
5419esac
5420
Juan Quintelad02c1db2009-08-03 14:46:50 +02005421if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005422 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005423 if test "$target_linux_user" = "yes" ; then
5424 cflags="-p $cflags"
5425 ldflags="-p $ldflags"
5426 fi
5427 if test "$target_softmmu" = "yes" ; then
5428 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005429 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005430 fi
5431fi
5432
Juan Quintela9b8e1112009-08-03 14:46:46 +02005433if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005434 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005435fi
Juan Quintelafa282482009-07-22 22:37:39 +02005436
Juan Quintela25be2102009-10-07 02:41:00 +02005437echo "LDFLAGS+=$ldflags" >> $config_target_mak
5438echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005439
bellard97a847b2003-08-10 21:36:04 +00005440done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005441
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005442if [ "$pixman" = "internal" ]; then
5443 echo "config-host.h: subdir-pixman" >> $config_host_mak
5444fi
5445
Michael R. Hines2da776d2013-07-22 10:01:54 -04005446if test "$rdma" = "yes" ; then
5447echo "CONFIG_RDMA=y" >> $config_host_mak
5448fi
5449
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005450if [ "$dtc_internal" = "yes" ]; then
5451 echo "config-host.h: subdir-dtc" >> $config_host_mak
5452fi
5453
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005454if test "$numa" = "yes"; then
5455 echo "CONFIG_NUMA=y" >> $config_host_mak
5456fi
5457
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005458# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005459DIRS="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 +04005460DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005461DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005462DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005463DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005464FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5465FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005466FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005467FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005468FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005469FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005470FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005471FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005472for bios_file in \
5473 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005474 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005475 $source_path/pc-bios/*.rom \
5476 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005477 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005478 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005479 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005480 $source_path/pc-bios/palcode-*
5481do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005482 FILES="$FILES pc-bios/`basename $bios_file`"
5483done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005484for test_file in `find $source_path/tests/acpi-test-data -type f`
5485do
5486 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5487done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005488mkdir -p $DIRS
5489for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005490 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005491 symlink "$source_path/$f" "$f"
5492 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005493done
Paul Brook1ad21342009-05-19 16:17:58 +01005494
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005495# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005496for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005497 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005498 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005499 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005500 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005501 echo "CC=$cc" >> $config_mak
5502 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005503 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005504 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005505 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005506 echo "LD=$ld" >> $config_mak
5507done
5508
Max Reitz76c75602014-05-24 23:24:56 +02005509# set up qemu-iotests in this build directory
5510iotests_common_env="tests/qemu-iotests/common.env"
5511iotests_check="tests/qemu-iotests/check"
5512
5513echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5514echo >> "$iotests_common_env"
5515echo "export PYTHON='$python'" >> "$iotests_common_env"
5516
5517if [ ! -e "$iotests_check" ]; then
5518 symlink "$source_path/$iotests_check" "$iotests_check"
5519fi
5520
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005521# Save the configure command line for later reuse.
5522cat <<EOD >config.status
5523#!/bin/sh
5524# Generated by configure.
5525# Run this file to recreate the current configuration.
5526# Compiler output produced by configure, useful for debugging
5527# configure, is in config.log if it exists.
5528EOD
5529printf "exec" >>config.status
5530printf " '%s'" "$0" "$@" >>config.status
5531echo >>config.status
5532chmod +x config.status
5533
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005534rm -r "$TMPDIR1"