blob: f14454e691b361d41e6a86eb1d662b6309386690 [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() {
John Snowfd0e6052015-03-25 18:57:39 -0400106 local_cflags="$1"
107 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200108}
109
110compile_prog() {
111 local_cflags="$1"
112 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100113 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200114}
115
Don Slutz66518bf2014-01-02 21:12:46 -0500116do_libtool() {
117 local mode=$1
118 shift
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC $cc "$@" >> config.log
121 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
127 return 0
128 fi
129 # Don't bother rerunning the compile if we were already using -Werror
130 case "$*" in
131 *-Werror*)
132 return 0
133 ;;
134 esac
135 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
137 error_exit "configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
141}
142
143libtool_prog() {
144 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
145 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
146}
147
Paolo Bonzini11568d62010-12-23 11:43:58 +0100148# symbolically link $1 to $2. Portable version of "ln -sf".
149symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100150 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800151 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100152 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100153}
154
Loïc Minier0dba6192010-01-28 21:26:51 +0000155# check whether a command is available to this shell (may be either an
156# executable or a builtin)
157has() {
158 type "$1" >/dev/null 2>&1
159}
160
161# search for an executable in PATH
162path_of() {
163 local_command="$1"
164 local_ifs="$IFS"
165 local_dir=""
166
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
171 return 0
172 fi
173 fi
174 if [ -z "$local_command" ]; then
175 return 1
176 fi
177
178 IFS=:
179 for local_dir in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS="${local_ifs:-$(printf ' \t\n')}"
183 return 0
184 fi
185 done
186 # not found
187 IFS="${local_ifs:-$(printf ' \t\n')}"
188 return 1
189}
190
Lluís Vilanova5b808272014-05-27 15:02:14 +0200191have_backend () {
192 echo "$trace_backends" | grep "$1" >/dev/null
193}
194
bellard7d132992003-03-06 23:23:54 +0000195# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100196source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200197cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300198iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000199interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000200static="no"
bellard7d132992003-03-06 23:23:54 +0000201cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000202audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800203block_drv_rw_whitelist=""
204block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000205host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200206libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200207libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200208audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400209audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200210cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500211libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100212debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100213stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000214
Stefan Weilafb63eb2012-09-26 22:04:38 +0200215# Don't accept a target_list environment variable.
216unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100217
218# Default value for a variable defining feature "foo".
219# * foo="no" feature will only be used if --enable-foo arg is given
220# * foo="" feature will be searched for, and if found, will be used
221# unless --disable-foo is given
222# * foo="yes" this value will only be set by --enable-foo flag.
223# feature will searched for,
224# if not found, configure exits with error
225#
226# Always add --enable-foo and --disable-foo command line args.
227# Distributions want to ensure that several features are compiled in, and it
228# is impossible without a --enable-foo that exits if a feature is not found.
229
230bluez=""
231brlapi=""
232curl=""
233curses=""
234docs=""
235fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100236netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200237pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100238sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000239sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530240virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100241vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100242sparse="no"
243uuid=""
244vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100245vnc_sasl=""
246vnc_jpeg=""
247vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100248xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000249xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000250xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100251linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500252cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100253attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200254libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100255xfs=""
256
Bradd41a75a2011-07-26 23:11:26 -0400257vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000258vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400259kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400260rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100261gprof="no"
262debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100263debug="no"
264strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200265tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100266bigendian="no"
267mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000268gcov="no"
269gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100270EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800271DSOSUF=".so"
272LDFLAGS_SHARED="-shared"
273modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100274prefix="/usr/local"
275mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300276datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300277qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100278bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300279libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400280libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200281includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100282sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300283local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100284confsuffix="/qemu"
285slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100286oss_lib=""
287bsd="no"
288linux="no"
289solaris="no"
290profiler="no"
291cocoa="no"
292softmmu="yes"
293linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100294bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100295aix="no"
296blobs="yes"
297pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200298pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100299zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200300qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200301trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100302trace_file="trace"
303spice=""
304rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200305smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100306libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200307usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100308opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300309zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200310lzo=""
311snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100312bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400313guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400314guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500315guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300316guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400317vss_win32_sdk=""
318win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100319want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100320libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100321libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100322coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200323coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300324seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530325glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530326glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530327glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100328archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600329gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200330gtkabi=""
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100331gnutls=""
332gnutls_hash=""
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=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800337numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800338tcmalloc="no"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200339jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100340
aliguoriac0df512008-12-29 17:14:15 +0000341# parse CC options first
342for opt do
343 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
344 case "$opt" in
345 --cross-prefix=*) cross_prefix="$optarg"
346 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100347 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000348 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400349 --cxx=*) CXX="$optarg"
350 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100351 --source-path=*) source_path="$optarg"
352 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200353 --cpu=*) cpu="$optarg"
354 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100355 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100356 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200357 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100358 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100359 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200360 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100361 --enable-debug-info) debug_info="yes"
362 ;;
363 --disable-debug-info) debug_info="no"
364 ;;
aliguoriac0df512008-12-29 17:14:15 +0000365 esac
366done
aliguoriac0df512008-12-29 17:14:15 +0000367# OS specific
368# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100369# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000370
Peter Maydelle49d0212012-12-07 15:39:13 +0000371# Preferred compiler:
372# ${CC} (if set)
373# ${cross_prefix}gcc (if cross-prefix specified)
374# system compiler
375if test -z "${CC}${cross_prefix}"; then
376 cc="$host_cc"
377else
378 cc="${CC-${cross_prefix}gcc}"
379fi
380
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400381if test -z "${CXX}${cross_prefix}"; then
382 cxx="c++"
383else
384 cxx="${CXX-${cross_prefix}g++}"
385fi
386
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500387ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000388as="${AS-${cross_prefix}as}"
389cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500390objcopy="${OBJCOPY-${cross_prefix}objcopy}"
391ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400392libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200393nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500394strip="${STRIP-${cross_prefix}strip}"
395windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300396pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
397query_pkg_config() {
398 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
399}
400pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500401sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000402sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000403
Peter Maydell45d285a2013-10-21 21:03:06 +0100404# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
405ARFLAGS="${ARFLAGS-rv}"
406
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200407# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000408QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400409QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100410QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200411QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200412QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100413if test "$debug_info" = "yes"; then
414 CFLAGS="-g $CFLAGS"
415 LDFLAGS="-g $LDFLAGS"
416fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200417
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +0100418test_cflags=""
419test_libs=""
420
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100421# make source path absolute
422source_path=`cd "$source_path"; pwd`
423
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300424# running configure in the source tree?
425# we know that's the case if configure is there.
426if test -f "./configure"; then
427 pwd_is_source_path="y"
428else
429 pwd_is_source_path="n"
430fi
431
aliguoriac0df512008-12-29 17:14:15 +0000432check_define() {
433cat > $TMPC <<EOF
434#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000435#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000436#endif
437int main(void) { return 0; }
438EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200439 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000440}
441
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200442check_include() {
443cat > $TMPC <<EOF
444#include <$1>
445int main(void) { return 0; }
446EOF
447 compile_object
448}
449
John Snow93b25862015-03-25 18:57:37 -0400450write_c_skeleton() {
451 cat > $TMPC <<EOF
452int main(void) { return 0; }
453EOF
454}
455
Peter Maydellbbea4052012-08-14 15:35:34 +0100456if check_define __linux__ ; then
457 targetos="Linux"
458elif check_define _WIN32 ; then
459 targetos='MINGW32'
460elif check_define __OpenBSD__ ; then
461 targetos='OpenBSD'
462elif check_define __sun__ ; then
463 targetos='SunOS'
464elif check_define __HAIKU__ ; then
465 targetos='Haiku'
466else
467 targetos=`uname -s`
468fi
469
470# Some host OSes need non-standard checks for which CPU to use.
471# Note that these checks are broken for cross-compilation: if you're
472# cross-compiling to one of these OSes then you'll need to specify
473# the correct CPU with the --cpu option.
474case $targetos in
475Darwin)
476 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
477 # run 64-bit userspace code.
478 # If the user didn't specify a CPU explicitly and the kernel says this is
479 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
480 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
481 cpu="x86_64"
482 fi
483 ;;
484SunOS)
485 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
486 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
487 cpu="x86_64"
488 fi
489esac
490
Juan Quintela2ff6b912009-08-03 14:45:55 +0200491if test ! -z "$cpu" ; then
492 # command line argument
493 :
494elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000495 cpu="i386"
496elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700497 if check_define __ILP32__ ; then
498 cpu="x32"
499 else
500 cpu="x86_64"
501 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000502elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000503 if check_define __arch64__ ; then
504 cpu="sparc64"
505 else
506 cpu="sparc"
507 fi
malcfdf7ed92009-01-14 18:39:52 +0000508elif check_define _ARCH_PPC ; then
509 if check_define _ARCH_PPC64 ; then
510 cpu="ppc64"
511 else
512 cpu="ppc"
513 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200514elif check_define __mips__ ; then
515 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200516elif check_define __ia64__ ; then
517 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200518elif check_define __s390__ ; then
519 if check_define __s390x__ ; then
520 cpu="s390x"
521 else
522 cpu="s390"
523 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100524elif check_define __arm__ ; then
525 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100526elif check_define __aarch64__ ; then
527 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400528elif check_define __hppa__ ; then
529 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000530else
malcfdf7ed92009-01-14 18:39:52 +0000531 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000532fi
533
Peter Maydell359bc952011-12-24 13:07:25 +0000534ARCH=
535# Normalise host CPU name and set ARCH.
536# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000537case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700538 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200539 cpu="$cpu"
540 ;;
bellard7d132992003-03-06 23:23:54 +0000541 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000542 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000543 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000544 x86_64|amd64)
545 cpu="x86_64"
546 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100547 armv*b|armv*l|arm)
548 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000549 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100550 aarch64)
551 cpu="aarch64"
552 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200553 mips*)
554 cpu="mips"
555 ;;
blueswir131422552007-04-16 18:27:06 +0000556 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000557 cpu="sparc"
558 ;;
bellard7d132992003-03-06 23:23:54 +0000559 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000560 # This will result in either an error or falling back to TCI later
561 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000562 ;;
563esac
Peter Maydell359bc952011-12-24 13:07:25 +0000564if test -z "$ARCH"; then
565 ARCH="$cpu"
566fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200567
bellard7d132992003-03-06 23:23:54 +0000568# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200569
Stacey Sonadfc3e92014-06-08 09:57:22 -0700570# host *BSD for user mode
571HOST_VARIANT_DIR=""
572
bellard7d132992003-03-06 23:23:54 +0000573case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000574CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200575 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200576 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200577 audio_possible_drivers="sdl"
578 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000579;;
bellard67b915a2004-03-31 23:37:16 +0000580MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200581 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200582 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200583 if check_include dsound.h; then
584 audio_drv_list="dsound"
585 else
586 audio_drv_list=""
587 fi
bellard67b915a2004-03-31 23:37:16 +0000588;;
ths5c40d2b2007-06-23 16:03:36 +0000589GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100590 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200591 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200592 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000593;;
bellard7d3505c2004-05-12 19:32:15 +0000594FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200595 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100596 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200597 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200598 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100599 # needed for kinfo_getvmmap(3) in libutil.h
600 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100601 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700602 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000603;;
blueswir1c5e97232009-03-07 20:06:23 +0000604DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200605 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100606 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200607 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200608 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700609 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000610;;
bellard7d3505c2004-05-12 19:32:15 +0000611NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100613 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200614 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200615 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200616 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700617 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000618;;
619OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200620 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100621 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400622 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200623 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700624 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000625;;
bellard83fb7ad2004-07-05 21:25:26 +0000626Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200627 bsd="yes"
628 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800629 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200630 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200631 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200632 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200633 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200634 cocoa="yes"
635 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200636 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200637 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200638 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100639 # Disable attempts to use ObjectiveC features in os/object.h since they
640 # won't work when we're compiling with gcc as a C compiler.
641 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700642 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000643;;
bellardec530c82006-04-25 22:36:06 +0000644SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200645 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100646 make="${MAKE-gmake}"
647 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000648 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400649 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200650 needs_libsunmath="no"
651 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200652 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
653 if test "$solarisrev" -le 9 ; then
654 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
655 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200656 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
657 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
658 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200659 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100660 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
661 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
662 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
663 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200664 fi
thsef18c882007-09-16 22:12:39 +0000665 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200666 fi
667 if test -f /usr/include/sys/soundcard.h ; then
668 audio_drv_list="oss"
669 fi
670 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000671# needed for CMSG_ macros in sys/socket.h
672 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
673# needed for TIOCWIN* defines in termios.h
674 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200675 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200676 solarisnetlibs="-lsocket -lnsl -lresolv"
677 LIBS="$solarisnetlibs $LIBS"
678 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000679;;
malcb29fe3e2008-11-18 01:42:22 +0000680AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200681 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100682 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000683;;
Andreas Färber179cf402010-09-20 00:50:43 +0200684Haiku)
685 haiku="yes"
686 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
687 LIBS="-lposix_error_mapper -lnetwork $LIBS"
688;;
bellard1d14ffa2005-10-30 18:58:22 +0000689*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200690 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200691 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200692 linux="yes"
693 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200694 kvm="yes"
695 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000696 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000697 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000698;;
bellard7d132992003-03-06 23:23:54 +0000699esac
700
bellard7d3505c2004-05-12 19:32:15 +0000701if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000702 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200703 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000704 fi
bellard7d3505c2004-05-12 19:32:15 +0000705fi
706
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100707: ${make=${MAKE-make}}
708: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100709: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400710: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100711
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100712# Default objcc to clang if available, otherwise use CC
713if has clang; then
714 objcc=clang
715else
716 objcc="$cc"
717fi
718
Juan Quintela3457a3f2009-08-03 14:46:07 +0200719if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200720 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800721 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200722 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100723 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
724 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100725 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400726 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100727 if compile_prog "" "-liberty" ; then
728 LIBS="-liberty $LIBS"
729 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200730 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200731 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300732 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300733 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200734 bindir="\${prefix}"
735 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200736 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200737 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200738 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200739fi
740
Anthony Liguori487fefd2009-06-11 13:28:25 -0500741werror=""
bellard85aa5182007-11-11 20:17:03 +0000742
bellard7d132992003-03-06 23:23:54 +0000743for opt do
pbrooka46e4032006-04-29 23:05:22 +0000744 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000745 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000746 --help|-h) show_help=yes
747 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400748 --version|-V) exec cat $source_path/VERSION
749 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000750 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000751 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000752 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000753 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100754 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000755 ;;
aliguoriac0df512008-12-29 17:14:15 +0000756 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000757 ;;
aliguoriac0df512008-12-29 17:14:15 +0000758 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000759 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000760 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000761 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400762 --cxx=*)
763 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200764 --iasl=*) iasl="$optarg"
765 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100766 --objcc=*) objcc="$optarg"
767 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000768 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000769 ;;
pbrook6a882642006-04-17 13:57:12 +0000770 --install=*) install="$optarg"
771 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000772 --python=*) python="$optarg"
773 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000774 --gcov=*) gcov_tool="$optarg"
775 ;;
Brade2d88302011-09-02 16:53:28 -0400776 --smbd=*) smbd="$optarg"
777 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200778 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000779 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200780 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000781 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100782 --enable-debug-info)
783 ;;
784 --disable-debug-info)
785 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800786 --enable-modules)
787 modules="yes"
788 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200789 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000790 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000791 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000792 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200793 --enable-trace-backends=*) trace_backends="$optarg"
794 ;;
795 # XXX: backwards compatibility
796 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100797 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100798 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100799 ;;
bellard7d132992003-03-06 23:23:54 +0000800 --enable-gprof) gprof="yes"
801 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000802 --enable-gcov) gcov="yes"
803 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100804 --static)
805 static="yes"
806 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300807 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000808 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200809 --mandir=*) mandir="$optarg"
810 ;;
811 --bindir=*) bindir="$optarg"
812 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300813 --libdir=*) libdir="$optarg"
814 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400815 --libexecdir=*) libexecdir="$optarg"
816 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200817 --includedir=*) includedir="$optarg"
818 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300819 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200820 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300821 --with-confsuffix=*) confsuffix="$optarg"
822 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300823 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200824 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100825 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600826 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300827 --localstatedir=*) local_statedir="$optarg"
828 ;;
829 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400830 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
831 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
832 # These switches are silently ignored, for compatibility with
833 # autoconf-generated configure scripts. This allows QEMU's
834 # configure to be used by RPM and similar macros that set
835 # lots of directory switches by default.
836 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200837 --with-system-pixman) pixman="system"
838 ;;
839 --without-system-pixman) pixman="internal"
840 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100841 --without-pixman) pixman="none"
842 ;;
bellard97a847b2003-08-10 21:36:04 +0000843 --disable-sdl) sdl="no"
844 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200845 --enable-sdl) sdl="yes"
846 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000847 --with-sdlabi=*) sdlabi="$optarg"
848 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200849 --disable-qom-cast-debug) qom_cast_debug="no"
850 ;;
851 --enable-qom-cast-debug) qom_cast_debug="yes"
852 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530853 --disable-virtfs) virtfs="no"
854 ;;
855 --enable-virtfs) virtfs="yes"
856 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100857 --disable-vnc) vnc="no"
858 ;;
859 --enable-vnc) vnc="yes"
860 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000861 --oss-lib=*) oss_lib="$optarg"
862 ;;
malc0c58ac12008-06-25 21:04:05 +0000863 --audio-drv-list=*) audio_drv_list="$optarg"
864 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800865 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
866 ;;
867 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100868 ;;
aurel32f8393942009-04-13 18:45:38 +0000869 --enable-debug-tcg) debug_tcg="yes"
870 ;;
871 --disable-debug-tcg) debug_tcg="no"
872 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100873 --enable-debug)
874 # Enable debugging options that aren't excessively noisy
875 debug_tcg="yes"
876 debug="yes"
877 strip_opt="no"
878 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000879 --enable-sparse) sparse="yes"
880 ;;
881 --disable-sparse) sparse="no"
882 ;;
aliguori1625af82009-04-05 17:41:02 +0000883 --disable-strip) strip_opt="no"
884 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000885 --disable-vnc-sasl) vnc_sasl="no"
886 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200887 --enable-vnc-sasl) vnc_sasl="yes"
888 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200889 --disable-vnc-jpeg) vnc_jpeg="no"
890 ;;
891 --enable-vnc-jpeg) vnc_jpeg="yes"
892 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200893 --disable-vnc-png) vnc_png="no"
894 ;;
895 --enable-vnc-png) vnc_png="yes"
896 ;;
bellard443f1372004-06-04 11:13:20 +0000897 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000898 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200899 --disable-uuid) uuid="no"
900 ;;
901 --enable-uuid) uuid="yes"
902 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000903 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000904 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200905 --enable-vde) vde="yes"
906 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100907 --disable-netmap) netmap="no"
908 ;;
909 --enable-netmap) netmap="yes"
910 ;;
aliguorie37630c2009-04-22 15:19:10 +0000911 --disable-xen) xen="no"
912 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200913 --enable-xen) xen="yes"
914 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000915 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
916 ;;
917 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
918 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000919 --disable-brlapi) brlapi="no"
920 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200921 --enable-brlapi) brlapi="yes"
922 ;;
balrogfb599c92008-09-28 23:49:55 +0000923 --disable-bluez) bluez="no"
924 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200925 --enable-bluez) bluez="yes"
926 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000927 --disable-kvm) kvm="no"
928 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200929 --enable-kvm) kvm="yes"
930 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200931 --disable-tcg-interpreter) tcg_interpreter="no"
932 ;;
933 --enable-tcg-interpreter) tcg_interpreter="yes"
934 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500935 --disable-cap-ng) cap_ng="no"
936 ;;
937 --enable-cap-ng) cap_ng="yes"
938 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100939 --disable-spice) spice="no"
940 ;;
941 --enable-spice) spice="yes"
942 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100943 --disable-libiscsi) libiscsi="no"
944 ;;
945 --enable-libiscsi) libiscsi="yes"
946 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100947 --disable-libnfs) libnfs="no"
948 ;;
949 --enable-libnfs) libnfs="yes"
950 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000951 --enable-profiler) profiler="yes"
952 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400953 --disable-cocoa) cocoa="no"
954 ;;
malcc2de5c92008-06-28 19:13:06 +0000955 --enable-cocoa)
956 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000957 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000958 ;;
pbrookcad25d62006-03-19 16:31:11 +0000959 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000960 ;;
pbrookcad25d62006-03-19 16:31:11 +0000961 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000962 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000963 --disable-user)
964 linux_user="no" ;
965 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000966 ;;
967 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000968 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000969 ;;
ths831b7822007-01-18 20:06:33 +0000970 --enable-linux-user) linux_user="yes"
971 ;;
blueswir184778502008-10-26 20:33:16 +0000972 --disable-bsd-user) bsd_user="no"
973 ;;
974 --enable-bsd-user) bsd_user="yes"
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 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001042 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001043 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001044 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001045 ;;
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 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001072 --enable-guest-agent-msi) guest_agent_msi="yes"
1073 ;;
1074 --disable-guest-agent-msi) guest_agent_msi="no"
1075 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001076 --with-vss-sdk) vss_win32_sdk=""
1077 ;;
1078 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1079 ;;
1080 --without-vss-sdk) vss_win32_sdk="no"
1081 ;;
1082 --with-win-sdk) win_sdk=""
1083 ;;
1084 --with-win-sdk=*) win_sdk="$optarg"
1085 ;;
1086 --without-win-sdk) win_sdk="no"
1087 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001088 --enable-tools) want_tools="yes"
1089 ;;
1090 --disable-tools) want_tools="no"
1091 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001092 --enable-seccomp) seccomp="yes"
1093 ;;
1094 --disable-seccomp) seccomp="no"
1095 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301096 --disable-glusterfs) glusterfs="no"
1097 ;;
1098 --enable-glusterfs) glusterfs="yes"
1099 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001100 --disable-archipelago) archipelago="no"
1101 ;;
1102 --enable-archipelago) archipelago="yes"
1103 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001104 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1105 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001106 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001107 --disable-gtk) gtk="no"
1108 ;;
1109 --enable-gtk) gtk="yes"
1110 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001111 --disable-gnutls) gnutls="no"
1112 ;;
1113 --enable-gnutls) gnutls="yes"
1114 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001115 --enable-rdma) rdma="yes"
1116 ;;
1117 --disable-rdma) rdma="no"
1118 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001119 --with-gtkabi=*) gtkabi="$optarg"
1120 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001121 --disable-vte) vte="no"
1122 ;;
1123 --enable-vte) vte="yes"
1124 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001125 --disable-tpm) tpm="no"
1126 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001127 --enable-tpm) tpm="yes"
1128 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001129 --disable-libssh2) libssh2="no"
1130 ;;
1131 --enable-libssh2) libssh2="yes"
1132 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001133 --enable-vhdx) vhdx="yes"
1134 ;;
1135 --disable-vhdx) vhdx="no"
1136 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001137 --disable-numa) numa="no"
1138 ;;
1139 --enable-numa) numa="yes"
1140 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001141 --disable-tcmalloc) tcmalloc="no"
1142 ;;
1143 --enable-tcmalloc) tcmalloc="yes"
1144 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001145 --disable-jemalloc) jemalloc="no"
1146 ;;
1147 --enable-jemalloc) jemalloc="yes"
1148 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001149 *)
1150 echo "ERROR: unknown option $opt"
1151 echo "Try '$0 --help' for more information"
1152 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001153 ;;
bellard7d132992003-03-06 23:23:54 +00001154 esac
1155done
1156
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001157if ! has $python; then
1158 error_exit "Python not found. Use --python=/path/to/python"
1159fi
1160
1161# Note that if the Python conditional here evaluates True we will exit
1162# with status 1 which is a shell 'false' value.
1163if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1164 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1165 "Note that Python 3 or later is not yet supported." \
1166 "Use --python=/path/to/python to specify a supported Python."
1167fi
1168
1169# The -B switch was added in Python 2.6.
1170# If it is supplied, compiled files are not written.
1171# Use it for Python versions which support it.
1172if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1173 python="$python -B"
1174fi
1175
bellard40293e52008-01-31 11:32:10 +00001176case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001177 ppc)
1178 CPU_CFLAGS="-m32"
1179 LDFLAGS="-m32 $LDFLAGS"
1180 ;;
1181 ppc64)
1182 CPU_CFLAGS="-m64"
1183 LDFLAGS="-m64 $LDFLAGS"
1184 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001185 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001186 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001187 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001188 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001189 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001190 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001191 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001192 ;;
ths76d83bd2007-11-18 21:22:10 +00001193 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001194 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001195 LDFLAGS="-m31 $LDFLAGS"
1196 ;;
1197 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001198 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001199 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001200 ;;
bellard40293e52008-01-31 11:32:10 +00001201 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001202 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001203 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001204 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001205 ;;
1206 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001207 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001208 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001209 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001210 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001211 x32)
1212 CPU_CFLAGS="-mx32"
1213 LDFLAGS="-mx32 $LDFLAGS"
1214 cc_i386='$(CC) -m32'
1215 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001216 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001217esac
1218
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001219QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1220EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1221
Peter Maydell60e0df22011-05-03 14:50:13 +01001222default_target_list=""
1223
Peter Maydell6e92f822013-05-20 16:16:15 +01001224mak_wilds=""
1225
1226if [ "$softmmu" = "yes" ]; then
1227 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001228fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001229if [ "$linux_user" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001231fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001232if [ "$bsd_user" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001234fi
1235
Peter Maydell6e92f822013-05-20 16:16:15 +01001236for config in $mak_wilds; do
1237 default_target_list="${default_target_list} $(basename "$config" .mak)"
1238done
1239
pbrookaf5db582006-04-08 14:26:41 +00001240if test x"$show_help" = x"yes" ; then
1241cat << EOF
1242
1243Usage: configure [options]
1244Options: [defaults in brackets after descriptions]
1245
Stefan Weil08fb77e2013-12-18 22:09:39 +01001246Standard options:
1247 --help print this message
1248 --prefix=PREFIX install in PREFIX [$prefix]
1249 --interp-prefix=PREFIX where to find shared libraries, etc.
1250 use %M for cpu name [$interp_prefix]
1251 --target-list=LIST set target list (default: build everything)
1252$(echo Available targets: $default_target_list | \
1253 fold -s -w 53 | sed -e 's/^/ /')
1254
1255Advanced options (experts only):
1256 --source-path=PATH path of source code [$source_path]
1257 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1258 --cc=CC use C compiler CC [$cc]
1259 --iasl=IASL use ACPI compiler IASL [$iasl]
1260 --host-cc=CC use C compiler CC [$host_cc] for code run at
1261 build time
1262 --cxx=CXX use C++ compiler CXX [$cxx]
1263 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1264 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1265 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1266 --make=MAKE use specified make [$make]
1267 --install=INSTALL use specified install [$install]
1268 --python=PYTHON use specified python [$python]
1269 --smbd=SMBD use specified smbd [$smbd]
1270 --static enable static build [$static]
1271 --mandir=PATH install man pages in PATH
1272 --datadir=PATH install firmware in PATH$confsuffix
1273 --docdir=PATH install documentation in PATH$confsuffix
1274 --bindir=PATH install binaries in PATH
1275 --libdir=PATH install libraries in PATH
1276 --sysconfdir=PATH install config in PATH$confsuffix
1277 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001278 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001279 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001280 --disable-strip disable stripping binaries
1281 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001282 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001283 --audio-drv-list=LIST set audio drivers list:
1284 Available drivers: $audio_possible_drivers
1285 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1286 --block-drv-rw-whitelist=L
1287 set block driver read-write whitelist
1288 (affects only QEMU, not qemu-img)
1289 --block-drv-ro-whitelist=L
1290 set block driver read-only whitelist
1291 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001292 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001293 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1294 --with-trace-file=NAME Full PATH,NAME of file to store traces
1295 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001296 --disable-slirp disable SLIRP userspace network connectivity
1297 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1298 --oss-lib path to OSS library
1299 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001300 --with-coroutine=BACKEND coroutine backend. Supported options:
1301 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001302 --enable-gcov enable test coverage analysis with gcov
1303 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001304 --disable-blobs disable installing provided firmware blobs
1305 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1306 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1307
1308Optional features, enabled with --enable-FEATURE and
1309disabled with --disable-FEATURE, default is enabled if available:
1310
1311 system all system emulation targets
1312 user supported user emulation targets
1313 linux-user all linux usermode emulation targets
1314 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001315 docs build documentation
1316 guest-agent build the QEMU Guest Agent
1317 guest-agent-msi build guest agent Windows MSI installation package
1318 pie Position Independent Executables
1319 modules modules support
1320 debug-tcg TCG debugging (default is disabled)
1321 debug-info debugging information
1322 sparse sparse checker
1323
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001324 gnutls GNUTLS cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001325 sdl SDL UI
1326 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1327 gtk gtk UI
1328 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1329 vte vte support for the gtk UI
1330 curses curses UI
1331 vnc VNC UI support
1332 vnc-tls TLS encryption for VNC server
1333 vnc-sasl SASL encryption for VNC server
1334 vnc-jpeg JPEG lossy compression for VNC server
1335 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001336 cocoa Cocoa UI (Mac OS X only)
1337 virtfs VirtFS
1338 xen xen backend driver support
1339 xen-pci-passthrough
1340 brlapi BrlAPI (Braile)
1341 curl curl connectivity
1342 fdt fdt device tree
1343 bluez bluez stack connectivity
1344 kvm KVM acceleration support
1345 rdma RDMA-based migration support
1346 uuid uuid support
1347 vde support for vde network
1348 netmap support for netmap network
1349 linux-aio Linux AIO support
1350 cap-ng libcap-ng support
1351 attr attr and xattr support
1352 vhost-net vhost-net acceleration support
1353 spice spice
1354 rbd rados block device (rbd)
1355 libiscsi iscsi support
1356 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001357 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001358 libusb libusb (for usb passthrough)
1359 usb-redir usb network redirection support
1360 lzo support of lzo compression library
1361 snappy support of snappy compression library
1362 bzip2 support of bzip2 compression library
1363 (for reading bzip2-compressed dmg images)
1364 seccomp seccomp support
1365 coroutine-pool coroutine freelist (better performance)
1366 glusterfs GlusterFS backend
1367 archipelago Archipelago backend
1368 tpm TPM support
1369 libssh2 ssh block device support
1370 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001371 numa libnuma support
1372 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001373 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001374
1375NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001376EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001377exit 0
pbrookaf5db582006-04-08 14:26:41 +00001378fi
1379
Peter Maydell359bc952011-12-24 13:07:25 +00001380# Now we have handled --enable-tcg-interpreter and know we're not just
1381# printing the help message, bail out if the host CPU isn't supported.
1382if test "$ARCH" = "unknown"; then
1383 if test "$tcg_interpreter" = "yes" ; then
1384 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1385 ARCH=tci
1386 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001387 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001388 fi
1389fi
1390
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001391# Consult white-list to determine whether to enable werror
1392# by default. Only enable by default for git builds
1393z_version=`cut -f3 -d. $source_path/VERSION`
1394
1395if test -z "$werror" ; then
1396 if test -d "$source_path/.git" -a \
1397 "$linux" = "yes" ; then
1398 werror="yes"
1399 else
1400 werror="no"
1401 fi
1402fi
1403
Paolo Bonzini8d050952010-12-23 11:43:52 +01001404# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001405write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001406if compile_object ; then
1407 : C compiler works ok
1408else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001409 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001410fi
1411
Peter Maydell98b21dc2014-02-20 15:10:16 +00001412# Check that the C++ compiler exists and works with the C compiler
1413if has $cxx; then
1414 cat > $TMPC <<EOF
1415int c_function(void);
1416int main(void) { return c_function(); }
1417EOF
1418
1419 compile_object
1420
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001421 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001422extern "C" {
1423 int c_function(void);
1424}
1425int c_function(void) { return 42; }
1426EOF
1427
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001428 update_cxxflags
1429
1430 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001431 # C++ compiler $cxx works ok with C compiler $cc
1432 :
1433 else
1434 echo "C++ compiler $cxx does not work with C compiler $cc"
1435 echo "Disabling C++ specific optional code"
1436 cxx=
1437 fi
1438else
1439 echo "No C++ compiler available; disabling C++ specific optional code"
1440 cxx=
1441fi
1442
Paolo Bonzini8d050952010-12-23 11:43:52 +01001443gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1444gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1445gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001446gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001447gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001448gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001449# Note that we do not add -Werror to gcc_flags here, because that would
1450# enable it for all configure tests. If a configure test failed due
1451# to -Werror this would just silently disable some features,
1452# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001453
1454cc_has_warning_flag() {
1455 write_c_skeleton;
1456
Peter Maydella1d29d62012-10-27 22:19:07 +01001457 # Use the positive sense of the flag when testing for -Wno-wombat
1458 # support (gcc will happily accept the -Wno- form of unknown
1459 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001460 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1461 compile_prog "-Werror $optflag" ""
1462}
1463
1464for flag in $gcc_flags; do
1465 if cc_has_warning_flag $flag ; then
1466 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001467 fi
1468done
1469
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001470if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001471 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001472 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001473 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001474 # We need to check both a compile and a link, since some compiler
1475 # setups fail only on a .c->.o compile and some only at link time
1476 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1477 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001478 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1479 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001480 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001481 break
1482 fi
1483 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001484 if test "$stack_protector" = yes; then
1485 if test $sp_on = 0; then
1486 error_exit "Stack protector not supported"
1487 fi
1488 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001489fi
1490
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001491# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1492# large functions that use global variables. The bug is in all releases of
1493# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1494# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1495cat > $TMPC << EOF
1496#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1497int main(void) { return 0; }
1498#else
1499#error No bug in this compiler.
1500#endif
1501EOF
1502if compile_prog "-Werror -fno-gcse" "" ; then
1503 TRANSLATE_OPT_CFLAGS=-fno-gcse
1504fi
1505
Avi Kivity40d64442011-11-15 20:12:17 +02001506if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001507 if test "$modules" = "yes" ; then
1508 error_exit "static and modules are mutually incompatible"
1509 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001510 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001511 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001512 else
1513 pie="no"
1514 fi
1515fi
1516
Emilio G. Cota768b7852015-04-29 13:09:02 +02001517# Unconditional check for compiler __thread support
1518 cat > $TMPC << EOF
1519static __thread int tls_var;
1520int main(void) { return tls_var; }
1521EOF
1522
1523if ! compile_prog "-Werror" "" ; then
1524 error_exit "Your compiler does not support the __thread specifier for " \
1525 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1526fi
1527
Avi Kivity40d64442011-11-15 20:12:17 +02001528if test "$pie" = ""; then
1529 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001530 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001531 ;;
1532 *)
1533 pie="no"
1534 ;;
1535 esac
1536fi
1537
1538if test "$pie" != "no" ; then
1539 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001540
1541#ifdef __linux__
1542# define THREAD __thread
1543#else
1544# define THREAD
1545#endif
1546
1547static THREAD int tls_var;
1548
1549int main(void) { return tls_var; }
1550
Avi Kivity40d64442011-11-15 20:12:17 +02001551EOF
1552 if compile_prog "-fPIE -DPIE" "-pie"; then
1553 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1554 LDFLAGS="-pie $LDFLAGS"
1555 pie="yes"
1556 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1557 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1558 fi
1559 else
1560 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001561 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001562 else
1563 echo "Disabling PIE due to missing toolchain support"
1564 pie="no"
1565 fi
1566 fi
Brad46eef332013-12-10 19:49:08 -05001567
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001568 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001569 CFLAGS_NOPIE="-fno-pie"
1570 LDFLAGS_NOPIE="-nopie"
1571 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001572fi
1573
Don Slutz66518bf2014-01-02 21:12:46 -05001574# check for broken gcc and libtool in RHEL5
1575if test -n "$libtool" -a "$pie" != "no" ; then
1576 cat > $TMPC <<EOF
1577
1578void *f(unsigned char *buf, int len);
1579void *g(unsigned char *buf, int len);
1580
1581void *
1582f(unsigned char *buf, int len)
1583{
1584 return (void*)0L;
1585}
1586
1587void *
1588g(unsigned char *buf, int len)
1589{
1590 return f(buf, len);
1591}
1592
1593EOF
1594 if ! libtool_prog; then
1595 echo "Disabling libtool due to broken toolchain support"
1596 libtool=
1597 fi
1598fi
1599
Paolo Bonzini09dada42013-04-17 16:26:47 +02001600##########################################
1601# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1602# use i686 as default anyway, but for those that don't, an explicit
1603# specification is necessary
1604
1605if test "$cpu" = "i386"; then
1606 cat > $TMPC << EOF
1607static int sfaa(int *ptr)
1608{
1609 return __sync_fetch_and_and(ptr, 0);
1610}
1611
1612int main(void)
1613{
1614 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001615 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001616 sfaa(&val);
1617 return val;
1618}
1619EOF
1620 if ! compile_prog "" "" ; then
1621 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1622 fi
1623fi
1624
1625#########################################
bellardec530c82006-04-25 22:36:06 +00001626# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001627
bellardec530c82006-04-25 22:36:06 +00001628if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001629 if has $install; then
1630 :
1631 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001632 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1633 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1634 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001635 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001636 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001637 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1638 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1639 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001640 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001641 if has ar; then
1642 :
1643 else
bellardec530c82006-04-25 22:36:06 +00001644 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001645 error_exit "No path includes ar" \
1646 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001647 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001648 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001649 fi
ths5fafdf22007-09-16 21:08:06 +00001650fi
bellardec530c82006-04-25 22:36:06 +00001651
Stefan Weilafb63eb2012-09-26 22:04:38 +02001652if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001653 target_list="$default_target_list"
1654else
1655 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001656fi
Peter Maydell25b48332013-05-20 16:16:16 +01001657
1658# Check that we recognised the target name; this allows a more
1659# friendly error message than if we let it fall through.
1660for target in $target_list; do
1661 case " $default_target_list " in
1662 *" $target "*)
1663 ;;
1664 *)
1665 error_exit "Unknown target name '$target'"
1666 ;;
1667 esac
1668done
1669
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001670# see if system emulation was really requested
1671case " $target_list " in
1672 *"-softmmu "*) softmmu=yes
1673 ;;
1674 *) softmmu=no
1675 ;;
1676esac
bellard5327cf42005-01-10 23:18:50 +00001677
Juan Quintela249247c2009-08-12 18:20:25 +02001678feature_not_found() {
1679 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001680 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001681
Peter Maydell76ad07a2013-04-08 12:11:26 +01001682 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001683 "configure was not able to find it." \
1684 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001685}
1686
bellard7d132992003-03-06 23:23:54 +00001687# ---
1688# big/little endian test
1689cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001690short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1691short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1692extern int foo(short *, short *);
1693int main(int argc, char *argv[]) {
1694 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001695}
1696EOF
1697
Mike Frysinger61cc9192013-06-30 23:30:18 -04001698if compile_object ; then
1699 if grep -q BiGeNdIaN $TMPO ; then
1700 bigendian="yes"
1701 elif grep -q LiTtLeEnDiAn $TMPO ; then
1702 bigendian="no"
1703 else
1704 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001705 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001706else
1707 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001708fi
1709
Juan Quintelab0a47e72009-08-12 18:29:49 +02001710##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001711# cocoa implies not SDL or GTK
1712# (the cocoa UI code currently assumes it is always the active UI
1713# and doesn't interact well with other UI frontend code)
1714if test "$cocoa" = "yes"; then
1715 if test "$sdl" = "yes"; then
1716 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1717 fi
1718 if test "$gtk" = "yes"; then
1719 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1720 fi
1721 gtk=no
1722 sdl=no
1723fi
1724
1725##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001726# L2TPV3 probe
1727
1728cat > $TMPC <<EOF
1729#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001730#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001731int main(void) { return sizeof(struct mmsghdr); }
1732EOF
1733if compile_prog "" "" ; then
1734 l2tpv3=yes
1735else
1736 l2tpv3=no
1737fi
1738
1739##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001740# MinGW / Mingw-w64 localtime_r/gmtime_r check
1741
1742if test "$mingw32" = "yes"; then
1743 # Some versions of MinGW / Mingw-w64 lack localtime_r
1744 # and gmtime_r entirely.
1745 #
1746 # Some versions of Mingw-w64 define a macro for
1747 # localtime_r/gmtime_r.
1748 #
1749 # Some versions of Mingw-w64 will define functions
1750 # for localtime_r/gmtime_r, but only if you have
1751 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1752 # though, unistd.h and pthread.h both define
1753 # that for you.
1754 #
1755 # So this #undef localtime_r and #include <unistd.h>
1756 # are not in fact redundant.
1757cat > $TMPC << EOF
1758#include <unistd.h>
1759#include <time.h>
1760#undef localtime_r
1761int main(void) { localtime_r(NULL, NULL); return 0; }
1762EOF
1763 if compile_prog "" "" ; then
1764 localtime_r="yes"
1765 else
1766 localtime_r="no"
1767 fi
1768fi
1769
1770##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001771# pkg-config probe
1772
1773if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001774 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001775fi
1776
1777##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001778# NPTL probe
1779
Peter Maydell24cb36a2013-07-16 18:45:00 +01001780if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001781 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001782#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001783#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001784int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001785#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1786#error bork
1787#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001788 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001789}
1790EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001791 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001792 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001793 fi
pbrookbd0c5662008-05-29 14:34:11 +00001794fi
1795
bellard11d9f692004-04-02 20:55:59 +00001796##########################################
balrogac629222008-10-11 09:56:04 +00001797# zlib check
1798
Alon Levy1ece9902011-07-26 12:30:40 +03001799if test "$zlib" != "no" ; then
1800 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001801#include <zlib.h>
1802int main(void) { zlibVersion(); return 0; }
1803EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001804 if compile_prog "" "-lz" ; then
1805 :
1806 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001807 error_exit "zlib check failed" \
1808 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001809 fi
balrogac629222008-10-11 09:56:04 +00001810fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001811LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001812
1813##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001814# lzo check
1815
1816if test "$lzo" != "no" ; then
1817 cat > $TMPC << EOF
1818#include <lzo/lzo1x.h>
1819int main(void) { lzo_version(); return 0; }
1820EOF
1821 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001822 libs_softmmu="$libs_softmmu -llzo2"
1823 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001824 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001825 if test "$lzo" = "yes"; then
1826 feature_not_found "liblzo2" "Install liblzo2 devel"
1827 fi
1828 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001829 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001830fi
1831
1832##########################################
1833# snappy check
1834
1835if test "$snappy" != "no" ; then
1836 cat > $TMPC << EOF
1837#include <snappy-c.h>
1838int main(void) { snappy_max_compressed_length(4096); return 0; }
1839EOF
1840 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001841 libs_softmmu="$libs_softmmu -lsnappy"
1842 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001843 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001844 if test "$snappy" = "yes"; then
1845 feature_not_found "libsnappy" "Install libsnappy devel"
1846 fi
1847 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001848 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001849fi
1850
1851##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001852# bzip2 check
1853
1854if test "$bzip2" != "no" ; then
1855 cat > $TMPC << EOF
1856#include <bzlib.h>
1857int main(void) { BZ2_bzlibVersion(); return 0; }
1858EOF
1859 if compile_prog "" "-lbz2" ; then
1860 bzip2="yes"
1861 else
1862 if test "$bzip2" = "yes"; then
1863 feature_not_found "libbzip2" "Install libbzip2 devel"
1864 fi
1865 bzip2="no"
1866 fi
1867fi
1868
1869##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001870# libseccomp check
1871
1872if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001873 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1874 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001875 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001876 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001877 seccomp="yes"
1878 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001879 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001880 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001881 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001882 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001883 fi
1884fi
1885##########################################
aliguorie37630c2009-04-22 15:19:10 +00001886# xen probe
1887
Juan Quintelafc321b42009-08-12 18:29:55 +02001888if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001889 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001890
Stefan Weil50ced5b2011-12-17 09:27:39 +01001891 # First we test whether Xen headers and libraries are available.
1892 # If no, we are done and there is no Xen support.
1893 # If yes, more tests are run to detect the Xen version.
1894
1895 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001896 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001897#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001898int main(void) {
1899 return 0;
1900}
1901EOF
1902 if ! compile_prog "" "$xen_libs" ; then
1903 # Xen not found
1904 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001905 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001906 fi
1907 xen=no
1908
1909 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001910 elif
1911 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001912#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001913#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001914#include <stdint.h>
1915#include <xen/hvm/hvm_info_table.h>
1916#if !defined(HVM_MAX_VCPUS)
1917# error HVM_MAX_VCPUS not defined
1918#endif
1919int main(void) {
1920 xc_interface *xc;
1921 xs_daemon_open();
1922 xc = xc_interface_open(0, 0, 0);
1923 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1924 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001925 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001926 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001927 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04001928 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001929 return 0;
1930}
1931EOF
1932 compile_prog "" "$xen_libs"
1933 then
1934 xen_ctrl_version=460
1935 xen=yes
1936
1937 # Xen 4.5
1938 elif
1939 cat > $TMPC <<EOF &&
1940#include <xenctrl.h>
1941#include <xenstore.h>
1942#include <stdint.h>
1943#include <xen/hvm/hvm_info_table.h>
1944#if !defined(HVM_MAX_VCPUS)
1945# error HVM_MAX_VCPUS not defined
1946#endif
1947int main(void) {
1948 xc_interface *xc;
1949 xs_daemon_open();
1950 xc = xc_interface_open(0, 0, 0);
1951 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1952 xc_gnttab_open(NULL, 0);
1953 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1954 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001955 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1956 return 0;
1957}
1958EOF
1959 compile_prog "" "$xen_libs"
1960 then
1961 xen_ctrl_version=450
1962 xen=yes
1963
1964 elif
1965 cat > $TMPC <<EOF &&
1966#include <xenctrl.h>
1967#include <xenstore.h>
1968#include <stdint.h>
1969#include <xen/hvm/hvm_info_table.h>
1970#if !defined(HVM_MAX_VCPUS)
1971# error HVM_MAX_VCPUS not defined
1972#endif
1973int main(void) {
1974 xc_interface *xc;
1975 xs_daemon_open();
1976 xc = xc_interface_open(0, 0, 0);
1977 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1978 xc_gnttab_open(NULL, 0);
1979 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1980 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001981 return 0;
1982}
1983EOF
1984 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001985 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00001986 xen_ctrl_version=420
1987 xen=yes
1988
Peter Maydell69deef02012-08-02 18:30:26 +01001989 elif
1990 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00001991#include <xenctrl.h>
1992#include <xs.h>
1993#include <stdint.h>
1994#include <xen/hvm/hvm_info_table.h>
1995#if !defined(HVM_MAX_VCPUS)
1996# error HVM_MAX_VCPUS not defined
1997#endif
1998int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00001999 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01002000 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002001 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2002 xc_gnttab_open(NULL, 0);
2003 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002004 return 0;
2005}
aliguorie37630c2009-04-22 15:19:10 +00002006EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01002007 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002008 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002009 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02002010 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002011
2012 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01002013 elif
2014 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002015#include <xenctrl.h>
2016#include <xs.h>
2017#include <stdint.h>
2018#include <xen/hvm/hvm_info_table.h>
2019#if !defined(HVM_MAX_VCPUS)
2020# error HVM_MAX_VCPUS not defined
2021#endif
2022int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01002023 struct xen_add_to_physmap xatp = {
2024 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2025 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002026 xs_daemon_open();
2027 xc_interface_open();
2028 xc_gnttab_open();
2029 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002030 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002031 return 0;
2032}
2033EOF
2034 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002035 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002036 xen_ctrl_version=400
2037 xen=yes
2038
Anthony PERARDb87de242011-05-24 14:34:20 +01002039 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002040 elif
2041 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002042#include <xenctrl.h>
2043#include <xs.h>
2044int main(void) {
2045 struct xen_add_to_physmap xatp = {
2046 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2047 };
2048 xs_daemon_open();
2049 xc_interface_open();
2050 xc_gnttab_open();
2051 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2052 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2053 return 0;
2054}
2055EOF
2056 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002057 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002058 xen_ctrl_version=340
2059 xen=yes
2060
2061 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002062 elif
2063 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002064#include <xenctrl.h>
2065#include <xs.h>
2066int main(void) {
2067 xs_daemon_open();
2068 xc_interface_open();
2069 xc_gnttab_open();
2070 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2071 return 0;
2072}
2073EOF
2074 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002075 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002076 xen_ctrl_version=330
2077 xen=yes
2078
Stefan Weil50ced5b2011-12-17 09:27:39 +01002079 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002080 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002081 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002082 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002083 fi
2084 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002085 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002086
2087 if test "$xen" = yes; then
2088 libs_softmmu="$xen_libs $libs_softmmu"
2089 fi
aliguorie37630c2009-04-22 15:19:10 +00002090fi
2091
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002092if test "$xen_pci_passthrough" != "no"; then
2093 if test "$xen" = "yes" && test "$linux" = "yes" &&
2094 test "$xen_ctrl_version" -ge 340; then
2095 xen_pci_passthrough=yes
2096 else
2097 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002098 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002099 error_exit "User requested feature Xen PCI Passthrough" \
2100 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002101 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002102 error_exit "User requested feature Xen PCI Passthrough" \
2103 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002104 fi
2105 xen_pci_passthrough=no
2106 fi
2107fi
2108
aliguorie37630c2009-04-22 15:19:10 +00002109##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002110# libtool probe
2111
Brad3f534582011-08-13 20:30:14 -04002112if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002113 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002114fi
2115
Peter Maydell8e515b12013-05-04 21:57:51 +01002116# MacOSX ships with a libtool which isn't the GNU one; weed this
2117# out by checking whether libtool supports the --version switch
2118if test -n "$libtool"; then
2119 if ! "$libtool" --version >/dev/null 2>&1; then
2120 libtool=
2121 fi
2122fi
2123
Alon Levy44dc0ca2011-05-15 11:51:28 +03002124##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002125# Sparse probe
2126if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002127 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002128 sparse=yes
2129 else
2130 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002131 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002132 fi
2133 sparse=no
2134 fi
2135fi
2136
2137##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002138# X11 probe
2139x11_cflags=
2140x11_libs=-lX11
2141if $pkg_config --exists "x11"; then
2142 x11_cflags=`$pkg_config --cflags x11`
2143 x11_libs=`$pkg_config --libs x11`
2144fi
2145
2146##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002147# GTK probe
2148
Stefan Weil9e04c682014-05-17 16:29:18 +02002149if test "$gtkabi" = ""; then
2150 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2151 # Use 3.0 as a fallback if that is available.
2152 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2153 gtkabi=2.0
2154 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2155 gtkabi=3.0
2156 else
2157 gtkabi=2.0
2158 fi
2159fi
2160
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002161if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002162 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002163 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002164 if test "$gtkabi" = "3.0" ; then
2165 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002166 else
2167 gtkversion="2.18.0"
2168 fi
2169 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2170 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2171 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002172 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002173 gtk_cflags="$gtk_cflags $x11_cflags"
2174 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002175 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002176 libs_softmmu="$gtk_libs $libs_softmmu"
2177 gtk="yes"
2178 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002179 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002180 else
2181 gtk="no"
2182 fi
2183fi
2184
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002185
2186##########################################
2187# GNUTLS probe
2188
Peter Maydell37371292015-07-24 18:28:08 +01002189gnutls_works() {
2190 # Unfortunately some distros have bad pkg-config information for gnutls
2191 # such that it claims to exist but you get a compiler error if you try
2192 # to use the options returned by --libs. Specifically, Ubuntu for --static
2193 # builds doesn't work:
2194 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2195 #
2196 # So sanity check the cflags/libs before assuming gnutls can be used.
2197 if ! $pkg_config --exists "gnutls"; then
2198 return 1
2199 fi
2200
2201 write_c_skeleton
2202 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2203}
2204
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002205gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002206gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002207if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002208 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002209 gnutls_cflags=`$pkg_config --cflags gnutls`
2210 gnutls_libs=`$pkg_config --libs gnutls`
2211 libs_softmmu="$gnutls_libs $libs_softmmu"
2212 libs_tools="$gnutls_libs $libs_tools"
2213 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2214 gnutls="yes"
2215
2216 # gnutls_hash_init requires >= 2.9.10
2217 if $pkg_config --exists "gnutls >= 2.9.10"; then
2218 gnutls_hash="yes"
2219 else
2220 gnutls_hash="no"
2221 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002222
2223 if $pkg_config --exists 'gnutls >= 3.0'; then
2224 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002225 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002226 elif $pkg_config --exists 'gnutls >= 2.12'; then
2227 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002228 *gcrypt*)
2229 gnutls_gcrypt=yes
2230 gnutls_nettle=no
2231 ;;
2232 *nettle*)
2233 gnutls_gcrypt=no
2234 gnutls_nettle=yes
2235 ;;
2236 *)
2237 gnutls_gcrypt=yes
2238 gnutls_nettle=no
2239 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002240 esac
2241 else
2242 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002243 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002244 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002245 elif test "$gnutls" = "yes"; then
2246 feature_not_found "gnutls" "Install gnutls devel"
2247 else
2248 gnutls="no"
2249 gnutls_hash="no"
2250 fi
2251else
2252 gnutls_hash="no"
2253fi
2254
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002255if test "$gnutls_gcrypt" != "no"; then
2256 if has "libgcrypt-config"; then
2257 gcrypt_cflags=`libgcrypt-config --cflags`
2258 gcrypt_libs=`libgcrypt-config --libs`
2259 libs_softmmu="$gcrypt_libs $libs_softmmu"
2260 libs_tools="$gcrypt_libs $libs_tools"
2261 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2262 else
2263 feature_not_found "gcrypt" "Install gcrypt devel"
2264 fi
2265fi
2266
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002267
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002268if test "$gnutls_nettle" != "no"; then
2269 if $pkg_config --exists "nettle"; then
2270 nettle_cflags=`$pkg_config --cflags nettle`
2271 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002272 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002273 libs_softmmu="$nettle_libs $libs_softmmu"
2274 libs_tools="$nettle_libs $libs_tools"
2275 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2276 else
2277 feature_not_found "nettle" "Install nettle devel"
2278 fi
2279fi
2280
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002281##########################################
2282# libtasn1 - only for the TLS creds/session test suite
2283
2284tasn1=yes
2285if $pkg_config --exists "libtasn1"; then
2286 tasn1_cflags=`$pkg_config --cflags libtasn1`
2287 tasn1_libs=`$pkg_config --libs libtasn1`
2288 test_cflags="$test_cflags $tasn1_cflags"
2289 test_libs="$test_libs $tasn1_libs"
2290else
2291 tasn1=no
2292fi
2293
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002294
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002295##########################################
2296# VTE probe
2297
2298if test "$vte" != "no"; then
2299 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002300 vtepackage="vte-2.90"
2301 vteversion="0.32.0"
2302 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002303 vtepackage="vte"
2304 vteversion="0.24.0"
2305 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002306 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2307 vte_cflags=`$pkg_config --cflags $vtepackage`
2308 vte_libs=`$pkg_config --libs $vtepackage`
2309 libs_softmmu="$vte_libs $libs_softmmu"
2310 vte="yes"
2311 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002312 if test "$gtkabi" = "3.0"; then
2313 feature_not_found "vte" "Install libvte-2.90 devel"
2314 else
2315 feature_not_found "vte" "Install libvte devel"
2316 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002317 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002318 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002319 fi
2320fi
2321
2322##########################################
bellard11d9f692004-04-02 20:55:59 +00002323# SDL probe
2324
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002325# Look for sdl configuration program (pkg-config or sdl-config). Try
2326# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002327
2328if test $sdlabi = "2.0"; then
2329 sdl_config=$sdl2_config
2330 sdlname=sdl2
2331 sdlconfigname=sdl2_config
2332else
2333 sdlname=sdl
2334 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002335fi
2336
Dave Airlie47c03742013-12-10 14:05:51 +10002337if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2338 sdl_config=$sdlconfigname
2339fi
2340
2341if $pkg_config $sdlname --exists; then
2342 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002343 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002344elif has ${sdl_config}; then
2345 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002346 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002347else
2348 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002349 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002350 fi
2351 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002352fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002353if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002354 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2355fi
bellard11d9f692004-04-02 20:55:59 +00002356
Paolo Bonzini9316f802010-01-13 09:52:55 +01002357sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002358if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002359 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002360#include <SDL.h>
2361#undef main /* We don't want SDL to override our main() */
2362int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2363EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002364 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002365 if test "$static" = "yes" ; then
2366 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2367 else
2368 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2369 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002370 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002371 if test "$_sdlversion" -lt 121 ; then
2372 sdl_too_old=yes
2373 else
Peter Maydella30878e2015-08-14 16:10:52 +01002374 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002375 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002376
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002377 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002378 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002379 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002380 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2381 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002382 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002383 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002384 :
2385 else
2386 sdl=no
2387 fi
2388 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002389 else # sdl not found
2390 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002391 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002392 fi
2393 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002394 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002395fi
bellard11d9f692004-04-02 20:55:59 +00002396
aliguori5368a422009-03-03 17:37:21 +00002397if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002398 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002399#include <SDL.h>
2400#if defined(SDL_VIDEO_DRIVER_X11)
2401#include <X11/XKBlib.h>
2402#else
2403#error No x11 support
2404#endif
2405int main(void) { return 0; }
2406EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002407 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2408 sdl_cflags="$sdl_cflags $x11_cflags"
2409 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002410 fi
Juan Quintela07056672009-08-03 14:46:27 +02002411 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002412fi
2413
ths8f28f3f2007-01-05 21:25:54 +00002414##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002415# RDMA needs OpenFabrics libraries
2416if test "$rdma" != "no" ; then
2417 cat > $TMPC <<EOF
2418#include <rdma/rdma_cma.h>
2419int main(void) { return 0; }
2420EOF
2421 rdma_libs="-lrdmacm -libverbs"
2422 if compile_prog "" "$rdma_libs" ; then
2423 rdma="yes"
2424 libs_softmmu="$libs_softmmu $rdma_libs"
2425 else
2426 if test "$rdma" = "yes" ; then
2427 error_exit \
2428 " OpenFabrics librdmacm/libibverbs not present." \
2429 " Your options:" \
2430 " (1) Fast: Install infiniband packages from your distro." \
2431 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2432 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2433 fi
2434 rdma="no"
2435 fi
2436fi
2437
ths8d5d2d42007-08-25 01:37:51 +00002438
2439##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002440# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002441if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002442 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002443#include <sasl/sasl.h>
2444#include <stdio.h>
2445int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2446EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002447 # Assuming Cyrus-SASL installed in /usr prefix
2448 vnc_sasl_cflags=""
2449 vnc_sasl_libs="-lsasl2"
2450 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2451 vnc_sasl=yes
2452 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002453 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002454 else
2455 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002456 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002457 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002458 vnc_sasl=no
2459 fi
aliguori2f9606b2009-03-06 20:27:28 +00002460fi
2461
2462##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002463# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002464if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002465cat > $TMPC <<EOF
2466#include <stdio.h>
2467#include <jpeglib.h>
2468int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2469EOF
2470 vnc_jpeg_cflags=""
2471 vnc_jpeg_libs="-ljpeg"
2472 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2473 vnc_jpeg=yes
2474 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002475 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002476 else
2477 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002478 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002479 fi
2480 vnc_jpeg=no
2481 fi
2482fi
2483
2484##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002485# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002486if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002487cat > $TMPC <<EOF
2488//#include <stdio.h>
2489#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002490#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002491int main(void) {
2492 png_structp png_ptr;
2493 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002494 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002495}
2496EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002497 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002498 vnc_png_cflags=`$pkg_config libpng --cflags`
2499 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002500 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002501 vnc_png_cflags=""
2502 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002503 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002504 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2505 vnc_png=yes
2506 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002507 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002508 else
2509 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002510 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002511 fi
2512 vnc_png=no
2513 fi
2514fi
2515
2516##########################################
aliguori76655d62009-03-06 20:27:37 +00002517# fnmatch() probe, used for ACL routines
2518fnmatch="no"
2519cat > $TMPC << EOF
2520#include <fnmatch.h>
2521int main(void)
2522{
2523 fnmatch("foo", "foo", 0);
2524 return 0;
2525}
2526EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002527if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002528 fnmatch="yes"
2529fi
2530
2531##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002532# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002533# Note that on some systems (notably MacOSX) no extra library
2534# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002535if test "$uuid" != "no" ; then
2536 uuid_libs="-luuid"
2537 cat > $TMPC << EOF
2538#include <uuid/uuid.h>
2539int main(void)
2540{
2541 uuid_t my_uuid;
2542 uuid_generate(my_uuid);
2543 return 0;
2544}
2545EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002546 if compile_prog "" "" ; then
2547 uuid="yes"
2548 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002549 uuid="yes"
2550 libs_softmmu="$uuid_libs $libs_softmmu"
2551 libs_tools="$uuid_libs $libs_tools"
2552 else
2553 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002554 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002555 fi
2556 uuid=no
2557 fi
2558fi
2559
Jeff Cody4f18b782013-10-30 10:44:39 -04002560if test "$vhdx" = "yes" ; then
2561 if test "$uuid" = "no" ; then
2562 error_exit "uuid required for VHDX support"
2563 fi
2564elif test "$vhdx" != "no" ; then
2565 if test "$uuid" = "yes" ; then
2566 vhdx=yes
2567 else
2568 vhdx=no
2569 fi
2570fi
2571
Stefan Weilee682d22009-10-01 20:10:37 +02002572##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002573# xfsctl() probe, used for raw-posix
2574if test "$xfs" != "no" ; then
2575 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002576#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002577#include <xfs/xfs.h>
2578int main(void)
2579{
2580 xfsctl(NULL, 0, 0, NULL);
2581 return 0;
2582}
2583EOF
2584 if compile_prog "" "" ; then
2585 xfs="yes"
2586 else
2587 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002588 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002589 fi
2590 xfs=no
2591 fi
2592fi
2593
2594##########################################
ths8a16d272008-07-19 09:56:24 +00002595# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002596if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002597 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002598 cat > $TMPC << EOF
2599#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002600int main(void)
2601{
2602 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002603 char s[] = "";
2604 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002605 return 0;
2606}
ths8a16d272008-07-19 09:56:24 +00002607EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002608 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002609 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002610 libs_softmmu="$vde_libs $libs_softmmu"
2611 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002612 else
2613 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002614 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002615 fi
2616 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002617 fi
ths8a16d272008-07-19 09:56:24 +00002618fi
2619
2620##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002621# netmap support probe
2622# Apart from looking for netmap headers, we make sure that the host API version
2623# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2624# a minor/major version number. Minor new features will be marked with values up
2625# to 15, and if something happens that requires a change to the backend we will
2626# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002627if test "$netmap" != "no" ; then
2628 cat > $TMPC << EOF
2629#include <inttypes.h>
2630#include <net/if.h>
2631#include <net/netmap.h>
2632#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002633#if (NETMAP_API < 11) || (NETMAP_API > 15)
2634#error
2635#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002636int main(void) { return 0; }
2637EOF
2638 if compile_prog "" "" ; then
2639 netmap=yes
2640 else
2641 if test "$netmap" = "yes" ; then
2642 feature_not_found "netmap"
2643 fi
2644 netmap=no
2645 fi
2646fi
2647
2648##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002649# libcap-ng library probe
2650if test "$cap_ng" != "no" ; then
2651 cap_libs="-lcap-ng"
2652 cat > $TMPC << EOF
2653#include <cap-ng.h>
2654int main(void)
2655{
2656 capng_capability_to_name(CAPNG_EFFECTIVE);
2657 return 0;
2658}
2659EOF
2660 if compile_prog "" "$cap_libs" ; then
2661 cap_ng=yes
2662 libs_tools="$cap_libs $libs_tools"
2663 else
2664 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002665 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002666 fi
2667 cap_ng=no
2668 fi
2669fi
2670
2671##########################################
malcc2de5c92008-06-28 19:13:06 +00002672# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002673
malcc2de5c92008-06-28 19:13:06 +00002674audio_drv_probe()
2675{
2676 drv=$1
2677 hdr=$2
2678 lib=$3
2679 exp=$4
2680 cfl=$5
2681 cat > $TMPC << EOF
2682#include <$hdr>
2683int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002684EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002685 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002686 :
2687 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002688 error_exit "$drv check failed" \
2689 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002690 fi
2691}
2692
malc2fa7d3b2008-07-29 12:58:44 +00002693audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002694for drv in $audio_drv_list; do
2695 case $drv in
2696 alsa)
2697 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002698 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002699 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002700 ;;
2701
malcb8e59f12008-07-02 21:03:08 +00002702 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002703 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2704 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2705 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002706 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002707 ;;
2708
Juan Quintela997e6902009-08-03 14:46:29 +02002709 coreaudio)
2710 libs_softmmu="-framework CoreAudio $libs_softmmu"
2711 ;;
2712
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002713 dsound)
2714 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002715 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002716 ;;
2717
2718 oss)
2719 libs_softmmu="$oss_lib $libs_softmmu"
2720 ;;
2721
2722 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002723 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2724 ;;
2725
malce4c63a62008-07-19 16:15:16 +00002726 *)
malc1c9b2a52008-07-19 16:57:30 +00002727 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002728 error_exit "Unknown driver '$drv' selected" \
2729 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002730 }
2731 ;;
malcc2de5c92008-06-28 19:13:06 +00002732 esac
2733done
ths8f28f3f2007-01-05 21:25:54 +00002734
balrog4d3b6f62008-02-10 16:33:14 +00002735##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002736# BrlAPI probe
2737
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002738if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002739 brlapi_libs="-lbrlapi"
2740 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002741#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002742#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002743int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2744EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002745 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002746 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002747 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002748 else
2749 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002750 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002751 fi
2752 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002753 fi
2754fi
aurel322e4d9fb2008-04-08 06:01:02 +00002755
2756##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002757# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002758if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002759 if test "$mingw32" = "yes" ; then
2760 curses_list="-lpdcurses"
2761 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002762 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002763 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002764 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002765 cat > $TMPC << EOF
2766#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002767int main(void) {
2768 const char *s = curses_version();
2769 resize_term(0, 0);
2770 return s != 0;
2771}
balrog4d3b6f62008-02-10 16:33:14 +00002772EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002773 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002774 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002775 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002776 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002777 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002778 libs_softmmu="$curses_lib $libs_softmmu"
2779 break
2780 fi
2781 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002782 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002783 if test "$curses_found" = "yes" ; then
2784 curses=yes
2785 else
2786 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002787 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002788 fi
2789 curses=no
2790 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002791fi
balrog4d3b6f62008-02-10 16:33:14 +00002792
blueswir1414f0da2008-08-15 18:20:52 +00002793##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002794# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002795if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002796 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002797 curlconfig="$pkg_config libcurl"
2798 else
2799 curlconfig=curl-config
2800 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002801 cat > $TMPC << EOF
2802#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002803int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002804EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002805 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2806 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002807 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002808 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002809 else
2810 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002811 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002812 fi
2813 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002814 fi
2815fi # test "$curl"
2816
2817##########################################
balrogfb599c92008-09-28 23:49:55 +00002818# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002819if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002820 cat > $TMPC << EOF
2821#include <bluetooth/bluetooth.h>
2822int main(void) { return bt_error(0); }
2823EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002824 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2825 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002826 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002827 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002828 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002829 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002830 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002831 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002832 fi
balroge820e3f2008-09-30 02:27:44 +00002833 bluez="no"
2834 fi
balrogfb599c92008-09-28 23:49:55 +00002835fi
2836
2837##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002838# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002839
John Snowf40685c2015-05-22 14:13:42 -04002840glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002841glib_modules=gthread-2.0
2842if test "$modules" = yes; then
2843 glib_modules="$glib_modules gmodule-2.0"
2844fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002845
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002846for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002847 if $pkg_config --atleast-version=$glib_req_ver $i; then
2848 glib_cflags=`$pkg_config --cflags $i`
2849 glib_libs=`$pkg_config --libs $i`
2850 CFLAGS="$glib_cflags $CFLAGS"
2851 LIBS="$glib_libs $LIBS"
2852 libs_qga="$glib_libs $libs_qga"
2853 else
2854 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2855 fi
2856done
2857
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002858# g_test_trap_subprocess added in 2.38. Used by some tests.
2859glib_subprocess=yes
2860if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2861 glib_subprocess=no
2862fi
2863
John Snowbbbf2e02015-03-25 18:57:38 -04002864# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2865cat > $TMPC << EOF
2866#include <glib.h>
2867int main(void) { return 0; }
2868EOF
2869if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2870 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2871 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2872 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2873 fi
2874fi
2875
Fam Zhenge26110c2014-02-10 14:48:57 +08002876##########################################
2877# SHA command probe for modules
2878if test "$modules" = yes; then
2879 shacmd_probe="sha1sum sha1 shasum"
2880 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002881 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002882 shacmd="$c"
2883 break
2884 fi
2885 done
2886 if test "$shacmd" = ""; then
2887 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2888 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002889fi
2890
2891##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002892# pixman support probe
2893
2894if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002895 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2896 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002897 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002898 pixman="system"
2899 else
2900 pixman="internal"
2901 fi
2902fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002903if test "$pixman" = "none"; then
2904 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002905 error_exit "pixman disabled but system emulation or tools build" \
2906 "enabled. You can turn off pixman only if you also" \
2907 "disable all system emulation targets and the tools" \
2908 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002909 fi
2910 pixman_cflags=
2911 pixman_libs=
2912elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002913 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002914 pixman_cflags=`$pkg_config --cflags pixman-1`
2915 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002916else
2917 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08002918 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01002919 " (1) Preferred: Install the pixman devel package (any recent" \
2920 " distro should have packages as Xorg needs pixman too)." \
2921 " (2) Fetch the pixman submodule, using:" \
2922 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002923 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01002924 mkdir -p pixman/pixman
2925 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2926 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002927fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002928
2929##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302930# libcap probe
2931
2932if test "$cap" != "no" ; then
2933 cat > $TMPC <<EOF
2934#include <stdio.h>
2935#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01002936int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302937EOF
2938 if compile_prog "" "-lcap" ; then
2939 cap=yes
2940 else
2941 cap=no
2942 fi
2943fi
2944
2945##########################################
aliguorie5d355d2009-04-24 18:03:15 +00002946# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04002947PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00002948
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02002949pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00002950cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00002951#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01002952static void *f(void *p) { return NULL; }
2953int main(void) {
2954 pthread_t thread;
2955 pthread_create(&thread, 0, f, 0);
2956 return 0;
2957}
blueswir1414f0da2008-08-15 18:20:52 +00002958EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02002959if compile_prog "" "" ; then
2960 pthread=yes
2961else
2962 for pthread_lib in $PTHREADLIBS_LIST; do
2963 if compile_prog "" "$pthread_lib" ; then
2964 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04002965 found=no
2966 for lib_entry in $LIBS; do
2967 if test "$lib_entry" = "$pthread_lib"; then
2968 found=yes
2969 break
2970 fi
2971 done
2972 if test "$found" = "no"; then
2973 LIBS="$pthread_lib $LIBS"
2974 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02002975 break
2976 fi
2977 done
2978fi
blueswir1414f0da2008-08-15 18:20:52 +00002979
Anthony Liguori4617e592009-08-25 17:21:56 -05002980if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002981 error_exit "pthread check failed" \
2982 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00002983fi
2984
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00002985# check for pthread_setname_np
2986pthread_setname_np=no
2987cat > $TMPC << EOF
2988#include <pthread.h>
2989
2990static void *f(void *p) { return NULL; }
2991int main(void)
2992{
2993 pthread_t thread;
2994 pthread_create(&thread, 0, f, 0);
2995 pthread_setname_np(thread, "QEMU");
2996 return 0;
2997}
2998EOF
2999if compile_prog "" "$pthread_lib" ; then
3000 pthread_setname_np=yes
3001fi
3002
aliguoribf9298b2008-12-05 20:05:26 +00003003##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003004# rbd probe
3005if test "$rbd" != "no" ; then
3006 cat > $TMPC <<EOF
3007#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003008#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003009int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003010 rados_t cluster;
3011 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003012 return 0;
3013}
3014EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003015 rbd_libs="-lrbd -lrados"
3016 if compile_prog "" "$rbd_libs" ; then
3017 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003018 else
3019 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003020 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003021 fi
3022 rbd=no
3023 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003024fi
3025
3026##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003027# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003028min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003029if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003030 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003031 libssh2_cflags=`$pkg_config libssh2 --cflags`
3032 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003033 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003034 else
3035 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003036 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003037 fi
3038 libssh2=no
3039 fi
3040fi
3041
3042##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003043# libssh2_sftp_fsync probe
3044
3045if test "$libssh2" = "yes"; then
3046 cat > $TMPC <<EOF
3047#include <stdio.h>
3048#include <libssh2.h>
3049#include <libssh2_sftp.h>
3050int main(void) {
3051 LIBSSH2_SESSION *session;
3052 LIBSSH2_SFTP *sftp;
3053 LIBSSH2_SFTP_HANDLE *sftp_handle;
3054 session = libssh2_session_init ();
3055 sftp = libssh2_sftp_init (session);
3056 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3057 libssh2_sftp_fsync (sftp_handle);
3058 return 0;
3059}
3060EOF
3061 # libssh2_cflags/libssh2_libs defined in previous test.
3062 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3063 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3064 fi
3065fi
3066
3067##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003068# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003069
3070if test "$linux_aio" != "no" ; then
3071 cat > $TMPC <<EOF
3072#include <libaio.h>
3073#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003074#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003075int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3076EOF
3077 if compile_prog "" "-laio" ; then
3078 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003079 else
3080 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003081 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003082 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003083 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003084 fi
3085fi
3086
3087##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003088# TPM passthrough is only on x86 Linux
3089
3090if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3091 tpm_passthrough=$tpm
3092else
3093 tpm_passthrough=no
3094fi
3095
3096##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003097# attr probe
3098
3099if test "$attr" != "no" ; then
3100 cat > $TMPC <<EOF
3101#include <stdio.h>
3102#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003103#ifdef CONFIG_LIBATTR
3104#include <attr/xattr.h>
3105#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003106#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003107#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003108int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3109EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003110 if compile_prog "" "" ; then
3111 attr=yes
3112 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003113 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003114 attr=yes
3115 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003116 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003117 else
3118 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003119 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003120 fi
3121 attr=no
3122 fi
3123fi
3124
3125##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003126# iovec probe
3127cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003128#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003129#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003130#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003131int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003132EOF
3133iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003134if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003135 iovec=yes
3136fi
3137
aurel32f652e6a2008-12-16 10:43:48 +00003138##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003139# preadv probe
3140cat > $TMPC <<EOF
3141#include <sys/types.h>
3142#include <sys/uio.h>
3143#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003144int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003145EOF
3146preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003147if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003148 preadv=yes
3149fi
3150
3151##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003152# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003153# fdt support is mandatory for at least some target architectures,
3154# so insist on it if we're building those system emulators.
3155fdt_required=no
3156for target in $target_list; do
3157 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003158 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003159 fdt_required=yes
3160 ;;
3161 esac
3162done
3163
3164if test "$fdt_required" = "yes"; then
3165 if test "$fdt" = "no"; then
3166 error_exit "fdt disabled but some requested targets require it." \
3167 "You can turn off fdt only if you also disable all the system emulation" \
3168 "targets which need it (by specifying a cut down --target-list)."
3169 fi
3170 fdt=yes
3171fi
3172
Juan Quintela2df87df2009-08-12 18:29:54 +02003173if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003174 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003175 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003176 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003177 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003178#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003179#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003180int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003181EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003182 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003183 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003184 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003185 elif test -d ${source_path}/dtc/libfdt ; then
3186 # have submodule DTC - use it
3187 fdt=yes
3188 dtc_internal="yes"
3189 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003190 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003191 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3192 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003193 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003194 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3195 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3196 elif test "$fdt" = "yes" ; then
3197 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003198 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003199 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003200 " (2) Fetch the DTC submodule, using:" \
3201 " git submodule update --init dtc"
3202 else
3203 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003204 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003205 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003206 fi
3207fi
3208
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003209libs_softmmu="$libs_softmmu $fdt_libs"
3210
Michael Walle20ff0752011-03-07 23:32:39 +01003211##########################################
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003212# opengl probe (for sdl2, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003213
3214# GLX probe, used by milkymist-tmu2
3215# this is temporary, code will be switched to egl mid-term.
3216cat > $TMPC << EOF
3217#include <X11/Xlib.h>
3218#include <GL/gl.h>
3219#include <GL/glx.h>
3220int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3221EOF
3222if compile_prog "" "-lGL -lX11" ; then
3223 have_glx=yes
3224else
3225 have_glx=no
3226fi
3227
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003228if test "$opengl" != "no" ; then
Gerd Hoffmann7ced9e92015-01-06 15:40:00 +01003229 opengl_pkgs="gl glesv2 epoxy egl"
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003230 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003231 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3232 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003233 opengl=yes
Michael Walle20ff0752011-03-07 23:32:39 +01003234 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003235 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003236 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003237 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003238 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003239 opengl_libs=""
3240 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003241 fi
3242fi
3243
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003244
3245##########################################
3246# archipelago probe
3247if test "$archipelago" != "no" ; then
3248 cat > $TMPC <<EOF
3249#include <stdio.h>
3250#include <xseg/xseg.h>
3251#include <xseg/protocol.h>
3252int main(void) {
3253 xseg_initialize();
3254 return 0;
3255}
3256EOF
3257 archipelago_libs=-lxseg
3258 if compile_prog "" "$archipelago_libs"; then
3259 archipelago="yes"
3260 libs_tools="$archipelago_libs $libs_tools"
3261 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003262
3263 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3264 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3265 echo "license and therefore prevent redistribution."
3266 echo
3267 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003268 else
3269 if test "$archipelago" = "yes" ; then
3270 feature_not_found "Archipelago backend support" "Install libxseg devel"
3271 fi
3272 archipelago="no"
3273 fi
3274fi
3275
3276
Bharata B Raoeb100392012-09-24 14:42:45 +05303277##########################################
3278# glusterfs probe
3279if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003280 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303281 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003282 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3283 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003284 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303285 glusterfs_discard="yes"
3286 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303287 if $pkg_config --atleast-version=6 glusterfs-api; then
3288 glusterfs_zerofill="yes"
3289 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303290 else
3291 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003292 feature_not_found "GlusterFS backend support" \
3293 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303294 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303295 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303296 fi
3297fi
3298
aurel3239386ac2009-04-15 19:48:17 +00003299# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003300# emulator. This is done because older glibc versions don't
3301# have syscall stubs for these implemented. In that case we
3302# don't provide them even if kernel supports them.
3303#
3304inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003305cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003306#include <sys/inotify.h>
3307
3308int
3309main(void)
3310{
3311 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003312 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003313}
3314EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003315if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003316 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003317fi
3318
Riku Voipioc05c7a72010-03-26 15:25:11 +00003319inotify1=no
3320cat > $TMPC << EOF
3321#include <sys/inotify.h>
3322
3323int
3324main(void)
3325{
3326 /* try to start inotify */
3327 return inotify_init1(0);
3328}
3329EOF
3330if compile_prog "" "" ; then
3331 inotify1=yes
3332fi
3333
Riku Voipioebc996f2009-04-21 15:01:51 +03003334# check if utimensat and futimens are supported
3335utimens=no
3336cat > $TMPC << EOF
3337#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003338#include <stddef.h>
3339#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003340#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003341
3342int main(void)
3343{
3344 utimensat(AT_FDCWD, "foo", NULL, 0);
3345 futimens(0, NULL);
3346 return 0;
3347}
3348EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003349if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003350 utimens=yes
3351fi
3352
Riku Voipio099d6b02009-05-05 12:10:04 +03003353# check if pipe2 is there
3354pipe2=no
3355cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003356#include <unistd.h>
3357#include <fcntl.h>
3358
3359int main(void)
3360{
3361 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003362 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003363}
3364EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003365if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003366 pipe2=yes
3367fi
3368
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003369# check if accept4 is there
3370accept4=no
3371cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003372#include <sys/socket.h>
3373#include <stddef.h>
3374
3375int main(void)
3376{
3377 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3378 return 0;
3379}
3380EOF
3381if compile_prog "" "" ; then
3382 accept4=yes
3383fi
3384
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303385# check if tee/splice is there. vmsplice was added same time.
3386splice=no
3387cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303388#include <unistd.h>
3389#include <fcntl.h>
3390#include <limits.h>
3391
3392int main(void)
3393{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003394 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303395 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3396 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3397 return 0;
3398}
3399EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003400if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303401 splice=yes
3402fi
3403
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003404##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003405# libnuma probe
3406
3407if test "$numa" != "no" ; then
3408 cat > $TMPC << EOF
3409#include <numa.h>
3410int main(void) { return numa_available(); }
3411EOF
3412
3413 if compile_prog "" "-lnuma" ; then
3414 numa=yes
3415 libs_softmmu="-lnuma $libs_softmmu"
3416 else
3417 if test "$numa" = "yes" ; then
3418 feature_not_found "numa" "install numactl devel"
3419 fi
3420 numa=no
3421 fi
3422fi
3423
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003424if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3425 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3426 exit 1
3427fi
3428
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003429##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003430# tcmalloc probe
3431
3432if test "$tcmalloc" = "yes" ; then
3433 cat > $TMPC << EOF
3434#include <stdlib.h>
3435int main(void) { malloc(1); return 0; }
3436EOF
3437
3438 if compile_prog "" "-ltcmalloc" ; then
3439 LIBS="-ltcmalloc $LIBS"
3440 else
3441 feature_not_found "tcmalloc" "install gperftools devel"
3442 fi
3443fi
3444
3445##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003446# jemalloc probe
3447
3448if test "$jemalloc" = "yes" ; then
3449 cat > $TMPC << EOF
3450#include <stdlib.h>
3451int main(void) { malloc(1); return 0; }
3452EOF
3453
3454 if compile_prog "" "-ljemalloc" ; then
3455 LIBS="-ljemalloc $LIBS"
3456 else
3457 feature_not_found "jemalloc" "install jemalloc devel"
3458 fi
3459fi
3460
3461##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003462# signalfd probe
3463signalfd="no"
3464cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003465#include <unistd.h>
3466#include <sys/syscall.h>
3467#include <signal.h>
3468int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3469EOF
3470
3471if compile_prog "" "" ; then
3472 signalfd=yes
3473fi
3474
Riku Voipioc2882b92009-08-12 15:08:24 +03003475# check if eventfd is supported
3476eventfd=no
3477cat > $TMPC << EOF
3478#include <sys/eventfd.h>
3479
3480int main(void)
3481{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003482 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003483}
3484EOF
3485if compile_prog "" "" ; then
3486 eventfd=yes
3487fi
3488
Ulrich Hechtd0927932009-09-17 20:22:14 +03003489# check for fallocate
3490fallocate=no
3491cat > $TMPC << EOF
3492#include <fcntl.h>
3493
3494int main(void)
3495{
3496 fallocate(0, 0, 0, 0);
3497 return 0;
3498}
3499EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003500if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003501 fallocate=yes
3502fi
3503
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003504# check for fallocate hole punching
3505fallocate_punch_hole=no
3506cat > $TMPC << EOF
3507#include <fcntl.h>
3508#include <linux/falloc.h>
3509
3510int main(void)
3511{
3512 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3513 return 0;
3514}
3515EOF
3516if compile_prog "" "" ; then
3517 fallocate_punch_hole=yes
3518fi
3519
Denis V. Lunevb953f072015-01-30 11:42:14 +03003520# check that fallocate supports range zeroing inside the file
3521fallocate_zero_range=no
3522cat > $TMPC << EOF
3523#include <fcntl.h>
3524#include <linux/falloc.h>
3525
3526int main(void)
3527{
3528 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3529 return 0;
3530}
3531EOF
3532if compile_prog "" "" ; then
3533 fallocate_zero_range=yes
3534fi
3535
Kevin Wolfed911432014-09-29 17:12:59 +02003536# check for posix_fallocate
3537posix_fallocate=no
3538cat > $TMPC << EOF
3539#include <fcntl.h>
3540
3541int main(void)
3542{
3543 posix_fallocate(0, 0, 0);
3544 return 0;
3545}
3546EOF
3547if compile_prog "" "" ; then
3548 posix_fallocate=yes
3549fi
3550
Peter Maydellc727f472011-01-06 11:05:10 +00003551# check for sync_file_range
3552sync_file_range=no
3553cat > $TMPC << EOF
3554#include <fcntl.h>
3555
3556int main(void)
3557{
3558 sync_file_range(0, 0, 0, 0);
3559 return 0;
3560}
3561EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003562if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003563 sync_file_range=yes
3564fi
3565
Peter Maydelldace20d2011-01-10 13:11:24 +00003566# check for linux/fiemap.h and FS_IOC_FIEMAP
3567fiemap=no
3568cat > $TMPC << EOF
3569#include <sys/ioctl.h>
3570#include <linux/fs.h>
3571#include <linux/fiemap.h>
3572
3573int main(void)
3574{
3575 ioctl(0, FS_IOC_FIEMAP, 0);
3576 return 0;
3577}
3578EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003579if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003580 fiemap=yes
3581fi
3582
Ulrich Hechtd0927932009-09-17 20:22:14 +03003583# check for dup3
3584dup3=no
3585cat > $TMPC << EOF
3586#include <unistd.h>
3587
3588int main(void)
3589{
3590 dup3(0, 0, 0);
3591 return 0;
3592}
3593EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003594if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003595 dup3=yes
3596fi
3597
Alex Bligh4e0c6522013-08-21 16:02:43 +01003598# check for ppoll support
3599ppoll=no
3600cat > $TMPC << EOF
3601#include <poll.h>
3602
3603int main(void)
3604{
3605 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3606 ppoll(&pfd, 1, 0, 0);
3607 return 0;
3608}
3609EOF
3610if compile_prog "" "" ; then
3611 ppoll=yes
3612fi
3613
Alex Blighcd758dd2013-08-21 16:02:44 +01003614# check for prctl(PR_SET_TIMERSLACK , ... ) support
3615prctl_pr_set_timerslack=no
3616cat > $TMPC << EOF
3617#include <sys/prctl.h>
3618
3619int main(void)
3620{
3621 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3622 return 0;
3623}
3624EOF
3625if compile_prog "" "" ; then
3626 prctl_pr_set_timerslack=yes
3627fi
3628
Peter Maydell3b6edd12011-02-15 18:35:05 +00003629# check for epoll support
3630epoll=no
3631cat > $TMPC << EOF
3632#include <sys/epoll.h>
3633
3634int main(void)
3635{
3636 epoll_create(0);
3637 return 0;
3638}
3639EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003640if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003641 epoll=yes
3642fi
3643
3644# epoll_create1 and epoll_pwait are later additions
3645# so we must check separately for their presence
3646epoll_create1=no
3647cat > $TMPC << EOF
3648#include <sys/epoll.h>
3649
3650int main(void)
3651{
Peter Maydell19e83f62011-04-26 16:56:40 +01003652 /* Note that we use epoll_create1 as a value, not as
3653 * a function being called. This is necessary so that on
3654 * old SPARC glibc versions where the function was present in
3655 * the library but not declared in the header file we will
3656 * fail the configure check. (Otherwise we will get a compiler
3657 * warning but not an error, and will proceed to fail the
3658 * qemu compile where we compile with -Werror.)
3659 */
Blue Swirlc075a722012-08-09 20:21:25 +00003660 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003661}
3662EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003663if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003664 epoll_create1=yes
3665fi
3666
3667epoll_pwait=no
3668cat > $TMPC << EOF
3669#include <sys/epoll.h>
3670
3671int main(void)
3672{
3673 epoll_pwait(0, 0, 0, 0, 0);
3674 return 0;
3675}
3676EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003677if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003678 epoll_pwait=yes
3679fi
3680
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003681# check for sendfile support
3682sendfile=no
3683cat > $TMPC << EOF
3684#include <sys/sendfile.h>
3685
3686int main(void)
3687{
3688 return sendfile(0, 0, 0, 0);
3689}
3690EOF
3691if compile_prog "" "" ; then
3692 sendfile=yes
3693fi
3694
Riku Voipio51834342014-06-22 11:25:42 +01003695# check for timerfd support (glibc 2.8 and newer)
3696timerfd=no
3697cat > $TMPC << EOF
3698#include <sys/timerfd.h>
3699
3700int main(void)
3701{
3702 return(timerfd_create(CLOCK_REALTIME, 0));
3703}
3704EOF
3705if compile_prog "" "" ; then
3706 timerfd=yes
3707fi
3708
Riku Voipio9af5c902014-08-12 15:58:57 +03003709# check for setns and unshare support
3710setns=no
3711cat > $TMPC << EOF
3712#include <sched.h>
3713
3714int main(void)
3715{
3716 int ret;
3717 ret = setns(0, 0);
3718 ret = unshare(0);
3719 return ret;
3720}
3721EOF
3722if compile_prog "" "" ; then
3723 setns=yes
3724fi
3725
pbrookcc8ae6d2006-04-23 17:57:59 +00003726# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003727if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003728 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003729 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003730 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003731 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003732 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003733 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003734 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003735 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003736fi
3737
Stefan Weilf514f412009-10-11 12:44:07 +02003738# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003739byteswap_h=no
3740cat > $TMPC << EOF
3741#include <byteswap.h>
3742int main(void) { return bswap_32(0); }
3743EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003744if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003745 byteswap_h=yes
3746fi
3747
Stefan Weil75f13592013-01-05 12:17:38 +01003748# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003749bswap_h=no
3750cat > $TMPC << EOF
3751#include <sys/endian.h>
3752#include <sys/types.h>
3753#include <machine/bswap.h>
3754int main(void) { return bswap32(0); }
3755EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003756if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003757 bswap_h=yes
3758fi
3759
aliguorida93a1f2008-12-12 20:02:52 +00003760##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003761# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003762if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003763 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003764 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003765 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3766 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003767 else
3768 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003769 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003770 fi
3771 libiscsi="no"
3772 fi
3773fi
3774
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003775##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003776# Do we need libm
3777cat > $TMPC << EOF
3778#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003779int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003780EOF
3781if compile_prog "" "" ; then
3782 :
3783elif compile_prog "" "-lm" ; then
3784 LIBS="-lm $LIBS"
3785 libs_qga="-lm $libs_qga"
3786else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003787 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003788fi
3789
3790##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003791# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003792# uClibc provides 2 versions of clock_gettime(), one with realtime
3793# support and one without. This means that the clock_gettime() don't
3794# need -lrt. We still need it for timer_create() so we check for this
3795# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003796cat > $TMPC <<EOF
3797#include <signal.h>
3798#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003799int main(void) {
3800 timer_create(CLOCK_REALTIME, NULL, NULL);
3801 return clock_gettime(CLOCK_REALTIME, NULL);
3802}
aliguorida93a1f2008-12-12 20:02:52 +00003803EOF
3804
Juan Quintela52166aa2009-08-03 14:46:03 +02003805if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003806 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003807# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003808elif compile_prog "" "$pthread_lib -lrt" ; then
3809 LIBS="$LIBS -lrt"
3810 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003811fi
3812
Blue Swirl31ff5042009-09-12 12:33:07 +00003813if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003814 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003815 libs_softmmu="-lutil $libs_softmmu"
3816fi
3817
Blue Swirlde5071c2009-09-12 09:58:46 +00003818##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003819# spice probe
3820if test "$spice" != "no" ; then
3821 cat > $TMPC << EOF
3822#include <spice.h>
3823int main(void) { spice_server_new(); return 0; }
3824EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003825 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3826 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003827 if $pkg_config --atleast-version=0.12.0 spice-server && \
3828 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003829 compile_prog "$spice_cflags" "$spice_libs" ; then
3830 spice="yes"
3831 libs_softmmu="$libs_softmmu $spice_libs"
3832 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003833 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3834 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003835 else
3836 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003837 feature_not_found "spice" \
3838 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003839 fi
3840 spice="no"
3841 fi
3842fi
3843
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003844# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003845smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003846if test "$smartcard" != "no"; then
3847 if $pkg_config libcacard; then
3848 libcacard_cflags=$($pkg_config --cflags libcacard)
3849 libcacard_libs=$($pkg_config --libs libcacard)
3850 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3851 libs_softmmu="$libs_softmmu $libcacard_libs"
3852 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003853 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003854 if test "$smartcard" = "yes"; then
3855 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003856 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003857 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003858 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003859fi
3860
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003861# check for libusb
3862if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003863 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003864 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003865 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3866 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003867 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3868 libs_softmmu="$libs_softmmu $libusb_libs"
3869 else
3870 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003871 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003872 fi
3873 libusb="no"
3874 fi
3875fi
3876
Hans de Goede69354a82011-07-19 11:04:10 +02003877# check for usbredirparser for usb network redirection support
3878if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003879 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003880 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003881 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3882 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003883 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003884 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003885 else
3886 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003887 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003888 fi
3889 usb_redir="no"
3890 fi
3891fi
3892
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003893##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003894# check if we have VSS SDK headers for win
3895
3896if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3897 case "$vss_win32_sdk" in
3898 "") vss_win32_include="-I$source_path" ;;
3899 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3900 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3901 vss_win32_include="-I$source_path/.sdk/vss"
3902 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3903 ;;
3904 *) vss_win32_include="-I$vss_win32_sdk"
3905 esac
3906 cat > $TMPC << EOF
3907#define __MIDL_user_allocate_free_DEFINED__
3908#include <inc/win2003/vss.h>
3909int main(void) { return VSS_CTX_BACKUP; }
3910EOF
3911 if compile_prog "$vss_win32_include" "" ; then
3912 guest_agent_with_vss="yes"
3913 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3914 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05003915 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003916 else
3917 if test "$vss_win32_sdk" != "" ; then
3918 echo "ERROR: Please download and install Microsoft VSS SDK:"
3919 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3920 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3921 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3922 echo "ERROR: The headers are extracted in the directory \`inc'."
3923 feature_not_found "VSS support"
3924 fi
3925 guest_agent_with_vss="no"
3926 fi
3927fi
3928
3929##########################################
3930# lookup Windows platform SDK (if not specified)
3931# The SDK is needed only to build .tlb (type library) file of guest agent
3932# VSS provider from the source. It is usually unnecessary because the
3933# pre-compiled .tlb file is included.
3934
3935if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3936 if test -z "$win_sdk"; then
3937 programfiles="$PROGRAMFILES"
3938 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3939 if test -n "$programfiles"; then
3940 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3941 else
3942 feature_not_found "Windows SDK"
3943 fi
3944 elif test "$win_sdk" = "no"; then
3945 win_sdk=""
3946 fi
3947fi
3948
3949##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05003950# check if mingw environment provides a recent ntddscsi.h
3951if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3952 cat > $TMPC << EOF
3953#include <windows.h>
3954#include <ntddscsi.h>
3955int main(void) {
3956#if !defined(IOCTL_SCSI_GET_ADDRESS)
3957#error Missing required ioctl definitions
3958#endif
3959 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3960 return addr.Lun;
3961}
3962EOF
3963 if compile_prog "" "" ; then
3964 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05003965 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05003966 fi
3967fi
3968
3969##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003970# check if we have fdatasync
3971
3972fdatasync=no
3973cat > $TMPC << EOF
3974#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003975int main(void) {
3976#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3977return fdatasync(0);
3978#else
Stefan Weile172fe12012-04-06 21:33:20 +02003979#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003980#endif
3981}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003982EOF
3983if compile_prog "" "" ; then
3984 fdatasync=yes
3985fi
3986
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003987##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00003988# check if we have madvise
3989
3990madvise=no
3991cat > $TMPC << EOF
3992#include <sys/types.h>
3993#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003994#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003995int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3996EOF
3997if compile_prog "" "" ; then
3998 madvise=yes
3999fi
4000
4001##########################################
4002# check if we have posix_madvise
4003
4004posix_madvise=no
4005cat > $TMPC << EOF
4006#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004007#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004008int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4009EOF
4010if compile_prog "" "" ; then
4011 posix_madvise=yes
4012fi
4013
4014##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004015# check if we have usable SIGEV_THREAD_ID
4016
4017sigev_thread_id=no
4018cat > $TMPC << EOF
4019#include <signal.h>
4020int main(void) {
4021 struct sigevent ev;
4022 ev.sigev_notify = SIGEV_THREAD_ID;
4023 ev._sigev_un._tid = 0;
4024 asm volatile("" : : "g"(&ev));
4025 return 0;
4026}
4027EOF
4028if compile_prog "" "" ; then
4029 sigev_thread_id=yes
4030fi
4031
4032##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004033# check if trace backend exists
4034
Lluís Vilanova5b808272014-05-27 15:02:14 +02004035$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004036if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004037 error_exit "invalid trace backends" \
4038 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004039fi
4040
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004041##########################################
4042# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004043if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004044 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004045#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004046int main(void) { return 0; }
4047EOF
4048 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004049 if $pkg_config lttng-ust --exists; then
4050 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4051 else
4052 lttng_ust_libs="-llttng-ust"
4053 fi
4054 if $pkg_config liburcu-bp --exists; then
4055 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4056 else
4057 urcu_bp_libs="-lurcu-bp"
4058 fi
4059
4060 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4061 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004062 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004063 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004064 fi
4065fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004066
4067##########################################
4068# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004069if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004070 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004071 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004072 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004073 trace_backend_stap="no"
4074 if has 'stap' ; then
4075 trace_backend_stap="yes"
4076 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004077fi
4078
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004079##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004080# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304081
Peter Maydell7c2acc72013-04-08 12:11:27 +01004082# We prefer ucontext, but it's not always possible. The fallback
4083# is sigcontext. gthread is not selectable except explicitly, because
4084# it is not functional enough to run QEMU proper. (It is occasionally
4085# useful for debugging purposes.) On Windows the only valid backend
4086# is the Windows-specific one.
4087
4088ucontext_works=no
4089if test "$darwin" != "yes"; then
4090 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304091#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004092#ifdef __stub_makecontext
4093#error Ignoring glibc stub makecontext which will always fail
4094#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004095int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304096EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004097 if compile_prog "" "" ; then
4098 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304099 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004100fi
4101
4102if test "$coroutine" = ""; then
4103 if test "$mingw32" = "yes"; then
4104 coroutine=win32
4105 elif test "$ucontext_works" = "yes"; then
4106 coroutine=ucontext
4107 else
4108 coroutine=sigaltstack
4109 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004110else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004111 case $coroutine in
4112 windows)
4113 if test "$mingw32" != "yes"; then
4114 error_exit "'windows' coroutine backend only valid for Windows"
4115 fi
4116 # Unfortunately the user visible backend name doesn't match the
4117 # coroutine-*.c filename for this case, so we have to adjust it here.
4118 coroutine=win32
4119 ;;
4120 ucontext)
4121 if test "$ucontext_works" != "yes"; then
4122 feature_not_found "ucontext"
4123 fi
4124 ;;
4125 gthread|sigaltstack)
4126 if test "$mingw32" = "yes"; then
4127 error_exit "only the 'windows' coroutine backend is valid for Windows"
4128 fi
4129 ;;
4130 *)
4131 error_exit "unknown coroutine backend $coroutine"
4132 ;;
4133 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304134fi
4135
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004136if test "$coroutine_pool" = ""; then
4137 if test "$coroutine" = "gthread"; then
4138 coroutine_pool=no
4139 else
4140 coroutine_pool=yes
4141 fi
4142fi
4143if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4144 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4145fi
4146
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304147##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304148# check if we have open_by_handle_at
4149
Stefan Weil4e1797f2012-06-18 22:11:06 +02004150open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304151cat > $TMPC << EOF
4152#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004153#if !defined(AT_EMPTY_PATH)
4154# error missing definition
4155#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004156int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004157#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304158EOF
4159if compile_prog "" "" ; then
4160 open_by_handle_at=yes
4161fi
4162
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304163########################################
4164# check if we have linux/magic.h
4165
4166linux_magic_h=no
4167cat > $TMPC << EOF
4168#include <linux/magic.h>
4169int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004170 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304171}
4172EOF
4173if compile_prog "" "" ; then
4174 linux_magic_h=yes
4175fi
4176
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004177########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004178# check whether we can disable warning option with a pragma (this is needed
4179# to silence warnings in the headers of some versions of external libraries).
4180# This test has to be compiled with -Werror as otherwise an unknown pragma is
4181# only a warning.
4182#
4183# If we can't selectively disable warning in the code, disable -Werror so that
4184# the build doesn't fail anyway.
4185
Peter Maydell06d71fa2012-07-30 16:13:07 +01004186pragma_disable_unused_but_set=no
4187cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004188#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004189#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004190#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004191#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004192
Peter Maydell06d71fa2012-07-30 16:13:07 +01004193int main(void) {
4194 return 0;
4195}
4196EOF
4197if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004198 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004199else
4200 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004201fi
4202
4203########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004204# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004205
4206valgrind_h=no
4207cat > $TMPC << EOF
4208#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004209int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004210 return 0;
4211}
4212EOF
4213if compile_prog "" "" ; then
4214 valgrind_h=yes
4215fi
4216
4217########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004218# check if environ is declared
4219
4220has_environ=no
4221cat > $TMPC << EOF
4222#include <unistd.h>
4223int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004224 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004225 return 0;
4226}
4227EOF
4228if compile_prog "" "" ; then
4229 has_environ=yes
4230fi
4231
Richard Henderson76a347e2012-12-28 14:17:02 -08004232########################################
4233# check if cpuid.h is usable.
4234
4235cpuid_h=no
4236cat > $TMPC << EOF
4237#include <cpuid.h>
4238int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004239 unsigned a, b, c, d;
4240 int max = __get_cpuid_max(0, 0);
4241
4242 if (max >= 1) {
4243 __cpuid(1, a, b, c, d);
4244 }
4245
4246 if (max >= 7) {
4247 __cpuid_count(7, 0, a, b, c, d);
4248 }
4249
4250 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004251}
4252EOF
4253if compile_prog "" "" ; then
4254 cpuid_h=yes
4255fi
4256
Richard Hendersonf5401662013-02-16 12:46:59 -08004257########################################
4258# check if __[u]int128_t is usable.
4259
4260int128=no
4261cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004262#if defined(__clang_major__) && defined(__clang_minor__)
4263# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4264# error __int128_t does not work in CLANG before 3.2
4265# endif
4266#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004267__int128_t a;
4268__uint128_t b;
4269int main (void) {
4270 a = a + b;
4271 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004272 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004273 return 0;
4274}
4275EOF
4276if compile_prog "" "" ; then
4277 int128=yes
4278fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004279
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004280########################################
4281# check if getauxval is available.
4282
4283getauxval=no
4284cat > $TMPC << EOF
4285#include <sys/auxv.h>
4286int main(void) {
4287 return getauxval(AT_HWCAP) == 0;
4288}
4289EOF
4290if compile_prog "" "" ; then
4291 getauxval=yes
4292fi
4293
John Snowfd0e6052015-03-25 18:57:39 -04004294########################################
4295# check if ccache is interfering with
4296# semantic analysis of macros
4297
4298ccache_cpp2=no
4299cat > $TMPC << EOF
4300static const int Z = 1;
4301#define fn() ({ Z; })
4302#define TAUT(X) ((X) == Z)
4303#define PAREN(X, Y) (X == Y)
4304#define ID(X) (X)
4305int main(int argc, char *argv[])
4306{
4307 int x = 0, y = 0;
4308 x = ID(x);
4309 x = fn();
4310 fn();
4311 if (PAREN(x, y)) return 0;
4312 if (TAUT(Z)) return 0;
4313 return 0;
4314}
4315EOF
4316
4317if ! compile_object "-Werror"; then
4318 ccache_cpp2=yes
4319fi
4320
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304321##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004322# End of CC checks
4323# After here, no more $cc or $ld runs
4324
Blue Swirl1d728c32012-05-01 18:45:39 +00004325if test "$gcov" = "yes" ; then
4326 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4327 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4328elif test "$debug" = "no" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004329 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004330fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004331
Peter Lieven6542aa92014-02-03 10:26:13 +01004332##########################################
4333# Do we have libnfs
4334if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004335 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004336 libnfs="yes"
4337 libnfs_libs=$($pkg_config --libs libnfs)
4338 LIBS="$LIBS $libnfs_libs"
4339 else
4340 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004341 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004342 fi
4343 libnfs="no"
4344 fi
4345fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004346
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004347# Disable zero malloc errors for official releases unless explicitly told to
4348# enable/disable
4349if test -z "$zero_malloc" ; then
4350 if test "$z_version" = "50" ; then
4351 zero_malloc="no"
4352 else
4353 zero_malloc="yes"
4354 fi
4355fi
4356
Peter Maydell6ca026c2012-07-18 15:10:18 +01004357# Now we've finished running tests it's OK to add -Werror to the compiler flags
4358if test "$werror" = "yes"; then
4359 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4360fi
4361
Juan Quintelae86ecd42009-08-03 14:45:59 +02004362if test "$solaris" = "no" ; then
4363 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004364 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004365 fi
4366fi
4367
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004368# test if pod2man has --utf8 option
4369if pod2man --help | grep -q utf8; then
4370 POD2MAN="pod2man --utf8"
4371else
4372 POD2MAN="pod2man"
4373fi
4374
Blue Swirl952afb72010-09-19 08:36:34 +00004375# Use ASLR, no-SEH and DEP if available
4376if test "$mingw32" = "yes" ; then
4377 for flag in --dynamicbase --no-seh --nxcompat; do
4378 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4379 LDFLAGS="-Wl,$flag $LDFLAGS"
4380 fi
4381 done
4382fi
4383
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004384qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004385qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004386qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004387qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004388
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004389tools=""
4390if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004391 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004392 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4393 tools="qemu-nbd\$(EXESUF) $tools"
4394 fi
4395fi
4396if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304397 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004398 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4399 virtfs=yes
4400 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4401 else
4402 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004403 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304404 fi
Andreas Färber17500372012-05-01 01:12:03 +02004405 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004406 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304407 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004408fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004409
4410# Probe for guest agent support/options
4411
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004412if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004413 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Roth48ff7a62011-07-20 15:19:37 -05004414 tools="qemu-ga\$(EXESUF) $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004415 guest_agent=yes
4416 elif [ "$guest_agent" != yes ]; then
4417 guest_agent=no
4418 else
4419 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004420 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004421fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004422
Michael Roth9d6bc272015-08-26 10:49:13 -05004423# Guest agent Window MSI package
4424
4425if test "$guest_agent" != yes; then
4426 if test "$guest_agent_msi" = yes; then
4427 error_exit "MSI guest agent package requires guest agent enabled"
4428 fi
4429 guest_agent_msi=no
4430elif test "$mingw32" != "yes"; then
4431 if test "$guest_agent_msi" = "yes"; then
4432 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4433 fi
4434 guest_agent_msi=no
4435elif ! has wixl; then
4436 if test "$guest_agent_msi" = "yes"; then
4437 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4438 fi
4439 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004440else
4441 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4442 # disabled explicitly
4443 if test "$guest_agent_msi" != "no"; then
4444 guest_agent_msi=yes
4445 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004446fi
4447
Michael Roth1a349042015-08-26 11:14:31 -05004448if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004449 if test "$guest_agent_with_vss" = "yes"; then
4450 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4451 fi
4452
4453 if test "$QEMU_GA_MANUFACTURER" = ""; then
4454 QEMU_GA_MANUFACTURER=QEMU
4455 fi
4456
4457 if test "$QEMU_GA_DISTRO" = ""; then
4458 QEMU_GA_DISTRO=Linux
4459 fi
4460
4461 if test "$QEMU_GA_VERSION" = ""; then
4462 QEMU_GA_VERSION=`cat $source_path/VERSION`
4463 fi
4464
4465 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4466
4467 case "$cpu" in
4468 x86_64)
4469 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4470 ;;
4471 i386)
4472 QEMU_GA_MSI_ARCH="-D Arch=32"
4473 ;;
4474 *)
4475 error_exit "CPU $cpu not supported for building installation package"
4476 ;;
4477 esac
4478fi
4479
Paolo Bonzinica35f782010-05-26 16:08:29 +02004480# Mac OS X ships with a broken assembler
4481roms=
4482if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4483 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4484 "$softmmu" = yes ; then
4485 roms="optionrom"
4486fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004487if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004488 roms="$roms spapr-rtas"
4489fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004490
Christian Borntraeger9933c302013-04-23 01:23:03 +00004491if test "$cpu" = "s390x" ; then
4492 roms="$roms s390-ccw"
4493fi
4494
Richard Henderson964c6fa2013-06-21 19:10:16 -07004495# Probe for the need for relocating the user-only binary.
4496if test "$pie" = "no" ; then
4497 textseg_addr=
4498 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004499 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4500 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004501 textseg_addr=0x60000000
4502 ;;
4503 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004504 # A 256M aligned address, high in the address space, with enough
4505 # room for the code_gen_buffer above it before the stack.
4506 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004507 ;;
4508 esac
4509 if [ -n "$textseg_addr" ]; then
4510 cat > $TMPC <<EOF
4511 int main(void) { return 0; }
4512EOF
4513 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4514 if ! compile_prog "" "$textseg_ldflags"; then
4515 # In case ld does not support -Ttext-segment, edit the default linker
4516 # script via sed to set the .text start addr. This is needed on FreeBSD
4517 # at least.
4518 $ld --verbose | sed \
4519 -e '1,/==================================================/d' \
4520 -e '/==================================================/,$d' \
4521 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4522 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4523 textseg_ldflags="-Wl,-T../config-host.ld"
4524 fi
4525 fi
4526fi
4527
Jan Kiszka50e12062014-10-02 10:03:55 +02004528# prepend pixman and ftd flags after all config tests are done
4529QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4530libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004531
bellard43ce4df2003-06-09 19:53:12 +00004532echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004533echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004534echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004535echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004536echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004537echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004538echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004539echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004540if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004541echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004542echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004543echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004544else
4545echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004546echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004547fi
bellard5a671352003-10-01 00:13:48 +00004548echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004549echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004550echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004551echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004552echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004553echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004554echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004555echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004556echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004557echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004558echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004559echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004560if test "$slirp" = "yes" ; then
4561 echo "smbd $smbd"
4562fi
Fam Zheng17969262014-02-10 14:48:56 +08004563echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004564echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004565echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004566echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004567echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004568echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004569echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004570echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004571echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004572echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004573if test "$darwin" = "yes" ; then
4574 echo "Cocoa support $cocoa"
4575fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004576echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004577echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004578echo "GTK support $gtk"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004579echo "GNUTLS support $gnutls"
4580echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004581echo "GNUTLS gcrypt $gnutls_gcrypt"
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004582echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004583echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004584echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004585echo "curses support $curses"
Alexander Graf769ce762009-05-11 17:41:42 +02004586echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004587echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004588echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004589echo "Block whitelist (rw) $block_drv_rw_whitelist"
4590echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304591echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004592echo "VNC support $vnc"
4593if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004594 echo "VNC SASL support $vnc_sasl"
4595 echo "VNC JPEG support $vnc_jpeg"
4596 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004597fi
blueswir131422552007-04-16 18:27:06 +00004598if test -n "$sparc_cpu"; then
4599 echo "Target Sparc Arch $sparc_cpu"
4600fi
aliguorie37630c2009-04-22 15:19:10 +00004601echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004602if test "$xen" = "yes" ; then
4603 echo "xen ctrl version $xen_ctrl_version"
4604fi
aurel322e4d9fb2008-04-08 06:01:02 +00004605echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004606echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004607echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004608echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004609echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004610echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004611echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004612echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004613echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004614echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004615echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004616echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004617echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004618echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004619echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004620echo "madvise $madvise"
4621echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004622echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004623echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004624echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004625echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004626echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004627echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004628if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004629echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004630fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004631if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004632echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004633else
4634echo "spice support $spice"
4635fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004636echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004637echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004638echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004639echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004640echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004641echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004642echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004643echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004644echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004645echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004646echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004647echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004648echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004649echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004650echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304651echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004652echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004653echo "gcov $gcov_tool"
4654echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004655echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004656echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004657echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004658echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004659echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004660echo "lzo support $lzo"
4661echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004662echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004663echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004664echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004665echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004666
Stefan Weil1ba16962011-07-29 22:40:45 +02004667if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004668echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004669fi
bellard97a847b2003-08-10 21:36:04 +00004670
Juan Quintela98ec69a2009-07-16 18:34:18 +02004671config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004672
Stefan Weildbd99ae2013-01-01 18:33:44 +01004673echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4674
Juan Quintela98ec69a2009-07-16 18:34:18 +02004675echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004676echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004677
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004678echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004679echo "prefix=$prefix" >> $config_host_mak
4680echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004681echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004682echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004683echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004684echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004685echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004686echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004687echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4688echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004689echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004690if test "$mingw32" = "no" ; then
4691 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4692fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004693echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004694echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4695echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004696echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004697echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004698
Juan Quintela98ec69a2009-07-16 18:34:18 +02004699echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004700
aurel32f8393942009-04-13 18:45:38 +00004701if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004702 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004703fi
aliguori1625af82009-04-05 17:41:02 +00004704if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004705 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004706fi
bellard7d132992003-03-06 23:23:54 +00004707if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004708 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004709fi
bellard67b915a2004-03-31 23:37:16 +00004710if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004711 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004712 rc_version=`cat $source_path/VERSION`
4713 version_major=${rc_version%%.*}
4714 rc_version=${rc_version#*.}
4715 version_minor=${rc_version%%.*}
4716 rc_version=${rc_version#*.}
4717 version_subminor=${rc_version%%.*}
4718 version_micro=0
4719 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4720 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004721 if test "$guest_agent_with_vss" = "yes" ; then
4722 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004723 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004724 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4725 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004726 if test "$guest_agent_ntddscsi" = "yes" ; then
4727 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4728 fi
Michael Roth1a349042015-08-26 11:14:31 -05004729 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004730 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4731 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4732 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4733 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4734 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4735 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4736 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4737 fi
pbrook210fa552007-02-27 21:04:49 +00004738else
Juan Quintela35f4df22009-07-27 16:13:07 +02004739 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004740fi
blueswir1128ab2f2008-08-15 18:33:42 +00004741
Mark McLoughlindffcb712009-10-22 17:49:11 +01004742if test "$linux" = "yes" ; then
4743 echo "CONFIG_LINUX=y" >> $config_host_mak
4744fi
4745
bellard83fb7ad2004-07-05 21:25:26 +00004746if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004747 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004748fi
malcb29fe3e2008-11-18 01:42:22 +00004749
4750if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004751 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004752fi
4753
bellardec530c82006-04-25 22:36:06 +00004754if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004755 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004756 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004757 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004758 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004759 fi
bellardec530c82006-04-25 22:36:06 +00004760fi
Andreas Färber179cf402010-09-20 00:50:43 +02004761if test "$haiku" = "yes" ; then
4762 echo "CONFIG_HAIKU=y" >> $config_host_mak
4763fi
bellard97a847b2003-08-10 21:36:04 +00004764if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004765 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004766fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004767if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004768 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004769fi
bellardc20709a2004-04-21 23:27:19 +00004770if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004771 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004772 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004773fi
ths8a16d272008-07-19 09:56:24 +00004774if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004775 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004776fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004777if test "$netmap" = "yes" ; then
4778 echo "CONFIG_NETMAP=y" >> $config_host_mak
4779fi
Gonglei015a33b2014-07-01 20:58:08 +08004780if test "$l2tpv3" = "yes" ; then
4781 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4782fi
Corey Bryant47e98652012-01-26 09:42:26 -05004783if test "$cap_ng" = "yes" ; then
4784 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4785fi
Juan Quintela2358a492009-07-27 16:13:25 +02004786echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004787for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004788 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004789 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004790done
Juan Quintela67f86e82009-08-03 14:46:59 +02004791if test "$audio_pt_int" = "yes" ; then
4792 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4793fi
malcd5631632009-10-10 01:13:41 +04004794if test "$audio_win_int" = "yes" ; then
4795 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4796fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004797echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4798echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004799if test "$vnc" = "yes" ; then
4800 echo "CONFIG_VNC=y" >> $config_host_mak
4801fi
aliguori2f9606b2009-03-06 20:27:28 +00004802if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004803 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004804fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004805if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004806 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004807fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004808if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004809 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004810fi
aliguori76655d62009-03-06 20:27:37 +00004811if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004812 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004813fi
Stefan Weilee682d22009-10-01 20:10:37 +02004814if test "$uuid" = "yes" ; then
4815 echo "CONFIG_UUID=y" >> $config_host_mak
4816fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004817if test "$xfs" = "yes" ; then
4818 echo "CONFIG_XFS=y" >> $config_host_mak
4819fi
pbrookb1a550a2006-04-16 13:28:56 +00004820qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004821echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004822echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004823echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004824echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004825if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004826 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004827fi
Fam Zheng17969262014-02-10 14:48:56 +08004828if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004829 # $shacmd can generate a hash started with digit, which the compiler doesn't
4830 # like as an symbol. So prefix it with an underscore
4831 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004832 echo "CONFIG_MODULES=y" >> $config_host_mak
4833fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004834if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004835 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004836 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004837 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004838fi
4839if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004840 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004841fi
4842if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004843 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004844fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004845if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004846 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004847fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004848if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004849 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004850fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004851if test "$accept4" = "yes" ; then
4852 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4853fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304854if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004855 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304856fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004857if test "$eventfd" = "yes" ; then
4858 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4859fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004860if test "$fallocate" = "yes" ; then
4861 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4862fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004863if test "$fallocate_punch_hole" = "yes" ; then
4864 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4865fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004866if test "$fallocate_zero_range" = "yes" ; then
4867 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4868fi
Kevin Wolfed911432014-09-29 17:12:59 +02004869if test "$posix_fallocate" = "yes" ; then
4870 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4871fi
Peter Maydellc727f472011-01-06 11:05:10 +00004872if test "$sync_file_range" = "yes" ; then
4873 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4874fi
Peter Maydelldace20d2011-01-10 13:11:24 +00004875if test "$fiemap" = "yes" ; then
4876 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4877fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004878if test "$dup3" = "yes" ; then
4879 echo "CONFIG_DUP3=y" >> $config_host_mak
4880fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01004881if test "$ppoll" = "yes" ; then
4882 echo "CONFIG_PPOLL=y" >> $config_host_mak
4883fi
Alex Blighcd758dd2013-08-21 16:02:44 +01004884if test "$prctl_pr_set_timerslack" = "yes" ; then
4885 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4886fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00004887if test "$epoll" = "yes" ; then
4888 echo "CONFIG_EPOLL=y" >> $config_host_mak
4889fi
4890if test "$epoll_create1" = "yes" ; then
4891 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4892fi
4893if test "$epoll_pwait" = "yes" ; then
4894 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4895fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004896if test "$sendfile" = "yes" ; then
4897 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4898fi
Riku Voipio51834342014-06-22 11:25:42 +01004899if test "$timerfd" = "yes" ; then
4900 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4901fi
Riku Voipio9af5c902014-08-12 15:58:57 +03004902if test "$setns" = "yes" ; then
4903 echo "CONFIG_SETNS=y" >> $config_host_mak
4904fi
aurel323b3f24a2009-04-15 16:12:13 +00004905if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004906 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00004907fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00004908if test "$inotify1" = "yes" ; then
4909 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4910fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004911if test "$byteswap_h" = "yes" ; then
4912 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4913fi
4914if test "$bswap_h" = "yes" ; then
4915 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4916fi
Alexander Graf769ce762009-05-11 17:41:42 +02004917if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004918 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02004919 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004920 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02004921fi
aurel322e4d9fb2008-04-08 06:01:02 +00004922if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004923 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00004924fi
balrogfb599c92008-09-28 23:49:55 +00004925if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004926 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02004927 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00004928fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01004929if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03004930 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4931fi
Anthony Liguorie18df142011-07-19 14:50:29 -05004932echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004933if test "$gtk" = "yes" ; then
4934 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004935 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004936 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004937fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004938if test "$gnutls" = "yes" ; then
4939 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4940fi
4941if test "$gnutls_hash" = "yes" ; then
4942 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4943fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004944if test "$gnutls_gcrypt" = "yes" ; then
4945 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4946fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004947if test "$gnutls_nettle" = "yes" ; then
4948 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004949 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004950fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004951if test "$tasn1" = "yes" ; then
4952 echo "CONFIG_TASN1=y" >> $config_host_mak
4953fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004954if test "$vte" = "yes" ; then
4955 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004956 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4957fi
aliguorie37630c2009-04-22 15:19:10 +00004958if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02004959 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00004960 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00004961fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004962if test "$linux_aio" = "yes" ; then
4963 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4964fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004965if test "$attr" = "yes" ; then
4966 echo "CONFIG_ATTR=y" >> $config_host_mak
4967fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02004968if test "$libattr" = "yes" ; then
4969 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4970fi
Meador Inge983eef52012-02-24 14:00:42 +05304971if test "$virtfs" = "yes" ; then
4972 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004973fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004974if test "$vhost_scsi" = "yes" ; then
4975 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4976fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03004977if test "$vhost_net" = "yes" ; then
4978 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4979fi
ths77755342008-11-27 15:45:16 +00004980if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004981 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00004982fi
aliguoribf9298b2008-12-05 20:05:26 +00004983if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004984 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00004985fi
aliguoriceb42de2009-04-07 18:43:28 +00004986if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004987 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00004988fi
aurel32f652e6a2008-12-16 10:43:48 +00004989if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02004990 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00004991fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004992if test "$signalfd" = "yes" ; then
4993 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4994fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02004995if test "$tcg_interpreter" = "yes" ; then
4996 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4997fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004998if test "$fdatasync" = "yes" ; then
4999 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5000fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005001if test "$madvise" = "yes" ; then
5002 echo "CONFIG_MADVISE=y" >> $config_host_mak
5003fi
5004if test "$posix_madvise" = "yes" ; then
5005 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5006fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005007if test "$sigev_thread_id" = "yes" ; then
5008 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5009fi
bellard97a847b2003-08-10 21:36:04 +00005010
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005011if test "$spice" = "yes" ; then
5012 echo "CONFIG_SPICE=y" >> $config_host_mak
5013fi
5014
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005015if test "$smartcard" = "yes" ; then
5016 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005017fi
5018
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005019if test "$libusb" = "yes" ; then
5020 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5021fi
5022
Hans de Goede69354a82011-07-19 11:04:10 +02005023if test "$usb_redir" = "yes" ; then
5024 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5025fi
5026
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005027if test "$opengl" = "yes" ; then
5028 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005029 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005030 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005031fi
5032
qiaonuohan607dacd2014-02-18 14:11:30 +08005033if test "$lzo" = "yes" ; then
5034 echo "CONFIG_LZO=y" >> $config_host_mak
5035fi
5036
5037if test "$snappy" = "yes" ; then
5038 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5039fi
5040
Peter Wu6b383c02015-01-06 18:48:14 +01005041if test "$bzip2" = "yes" ; then
5042 echo "CONFIG_BZIP2=y" >> $config_host_mak
5043 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5044fi
5045
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005046if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005047 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005048 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5049 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005050fi
5051
Peter Lieven6542aa92014-02-03 10:26:13 +01005052if test "$libnfs" = "yes" ; then
5053 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5054fi
5055
Eduardo Otubof7945732012-08-14 18:44:05 -03005056if test "$seccomp" = "yes"; then
5057 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5058fi
5059
bellard83fb7ad2004-07-05 21:25:26 +00005060# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005061if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005062 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005063fi
5064
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005065if test "$zero_malloc" = "yes" ; then
5066 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5067fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005068if test "$localtime_r" = "yes" ; then
5069 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5070fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005071if test "$qom_cast_debug" = "yes" ; then
5072 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5073fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005074if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005075 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005076 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5077 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005078fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005079
Peter Maydell7c2acc72013-04-08 12:11:27 +01005080echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005081if test "$coroutine_pool" = "yes" ; then
5082 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5083else
5084 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5085fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305086
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305087if test "$open_by_handle_at" = "yes" ; then
5088 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5089fi
5090
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305091if test "$linux_magic_h" = "yes" ; then
5092 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5093fi
5094
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005095if test "$pragma_diagnostic_available" = "yes" ; then
5096 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005097fi
5098
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005099if test "$valgrind_h" = "yes" ; then
5100 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5101fi
5102
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005103if test "$has_environ" = "yes" ; then
5104 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5105fi
5106
Richard Henderson76a347e2012-12-28 14:17:02 -08005107if test "$cpuid_h" = "yes" ; then
5108 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5109fi
5110
Richard Hendersonf5401662013-02-16 12:46:59 -08005111if test "$int128" = "yes" ; then
5112 echo "CONFIG_INT128=y" >> $config_host_mak
5113fi
5114
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005115if test "$getauxval" = "yes" ; then
5116 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5117fi
5118
Bharata B Raoeb100392012-09-24 14:42:45 +05305119if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005120 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005121 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5122 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305123fi
5124
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305125if test "$glusterfs_discard" = "yes" ; then
5126 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5127fi
5128
Bharata B Rao7c815372013-12-21 14:51:25 +05305129if test "$glusterfs_zerofill" = "yes" ; then
5130 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5131fi
5132
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005133if test "$archipelago" = "yes" ; then
5134 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5135 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5136fi
5137
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005138if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005139 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005140 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5141 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005142fi
5143
Jeff Cody4f18b782013-10-30 10:44:39 -04005144if test "$vhdx" = "yes" ; then
5145 echo "CONFIG_VHDX=y" >> $config_host_mak
5146fi
5147
blueswir168063642008-11-22 21:03:55 +00005148# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005149if test "$libusb" = "yes"; then
5150 echo "HOST_USB=libusb legacy" >> $config_host_mak
5151else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005152 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005153fi
blueswir168063642008-11-22 21:03:55 +00005154
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005155# TPM passthrough support?
5156if test "$tpm" = "yes"; then
5157 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5158 if test "$tpm_passthrough" = "yes"; then
5159 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5160 fi
5161fi
5162
Lluís Vilanova5b808272014-05-27 15:02:14 +02005163echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5164if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005165 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305166fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005167if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005168 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5169 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005170 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005171fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005172if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005173 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5174fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005175if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005176 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5177fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005178if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005179 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5180 if test "$trace_backend_stap" = "yes" ; then
5181 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5182 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005183fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005184if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005185 if test "$linux" = "yes" ; then
5186 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005187 else
Stewart Smith21684af2014-01-24 12:39:10 +11005188 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005189 fi
5190fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005191echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5192
Michael R. Hines2da776d2013-07-22 10:01:54 -04005193if test "$rdma" = "yes" ; then
5194 echo "CONFIG_RDMA=y" >> $config_host_mak
5195fi
5196
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005197# Hold two types of flag:
5198# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5199# a thread we have a handle to
5200# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5201# platform
5202if test "$pthread_setname_np" = "yes" ; then
5203 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5204 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5205fi
5206
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005207if test "$tcg_interpreter" = "yes"; then
5208 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5209elif test "$ARCH" = "sparc64" ; then
5210 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5211elif test "$ARCH" = "s390x" ; then
5212 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005213elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005214 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005215elif test "$ARCH" = "ppc64" ; then
5216 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005217else
5218 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5219fi
5220QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5221
Juan Quintela98ec69a2009-07-16 18:34:18 +02005222echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005223echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005224echo "MAKE=$make" >> $config_host_mak
5225echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005226echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5227echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005228if test -n "$libtool"; then
5229 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5230 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5231else
5232 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5233 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5234fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005235echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005236echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005237if $iasl -h > /dev/null 2>&1; then
5238 echo "IASL=$iasl" >> $config_host_mak
5239fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005240echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005241echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005242echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005243echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005244echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005245echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005246echo "AS=$as" >> $config_host_mak
5247echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005248echo "OBJCOPY=$objcopy" >> $config_host_mak
5249echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005250echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005251echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005252echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005253echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005254echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005255echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005256echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005257if test "$sparse" = "yes" ; then
5258 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005259 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005260 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005261 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5262 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5263fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005264if test "$cross_prefix" != ""; then
5265 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5266else
5267 echo "AUTOCONF_HOST := " >> $config_host_mak
5268fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005269echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005270echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005271echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005272echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005273echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005274echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005275echo "DSOSUF=$DSOSUF" >> $config_host_mak
5276echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005277echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005278echo "TEST_LIBS=$test_libs" >> $config_host_mak
5279echo "TEST_CFLAGS=$test_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005280echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005281echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005282if test "$gcov" = "yes" ; then
5283 echo "CONFIG_GCOV=y" >> $config_host_mak
5284 echo "GCOV=$gcov_tool" >> $config_host_mak
5285fi
Juan Quintela804edf22009-07-27 16:12:49 +02005286
Peter Maydell6efd7512011-11-30 11:59:04 +00005287# use included Linux headers
5288if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005289 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005290 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005291 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005292 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005293 ;;
5294 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005295 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005296 ;;
5297 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005298 linux_arch=s390
5299 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005300 aarch64)
5301 linux_arch=arm64
5302 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005303 mips64)
5304 linux_arch=mips
5305 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005306 *)
5307 # For most CPUs the kernel architecture name and QEMU CPU name match.
5308 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005309 ;;
5310 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005311 # For non-KVM architectures we will not have asm headers
5312 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5313 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5314 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005315fi
5316
bellard1d14ffa2005-10-30 18:58:22 +00005317for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005318target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005319config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005320target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005321target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005322
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005323case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005324 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 +02005325 target_bigendian=yes
5326 ;;
5327esac
bellard97a847b2003-08-10 21:36:04 +00005328target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005329target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005330target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005331target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005332case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005333 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005334 target_softmmu="yes"
5335 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005336 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005337 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005338 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005339 fi
pbrook9e407a82007-05-26 16:38:53 +00005340 target_user_only="yes"
5341 target_linux_user="yes"
5342 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005343 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005344 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005345 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005346 fi
blueswir184778502008-10-26 20:33:16 +00005347 target_user_only="yes"
5348 target_bsd_user="yes"
5349 ;;
pbrook9e407a82007-05-26 16:38:53 +00005350 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005351 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005352 exit 1
5353 ;;
5354esac
ths831b7822007-01-18 20:06:33 +00005355
bellard97a847b2003-08-10 21:36:04 +00005356mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005357echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005358
pbrooke5fe0c52006-06-11 13:32:59 +00005359bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005360interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005361gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005362
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005363TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005364TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005365TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005366
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005367case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005368 i386)
aurel322408a522008-04-20 20:19:44 +00005369 ;;
5370 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005371 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005372 ;;
5373 alpha)
aurel322408a522008-04-20 20:19:44 +00005374 ;;
5375 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005376 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005377 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005378 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005379 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005380 aarch64)
5381 TARGET_BASE_ARCH=arm
5382 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005383 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 +01005384 ;;
aurel322408a522008-04-20 20:19:44 +00005385 cris)
aurel322408a522008-04-20 20:19:44 +00005386 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005387 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005388 ;;
aurel322408a522008-04-20 20:19:44 +00005389 m68k)
aurel322408a522008-04-20 20:19:44 +00005390 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005391 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005392 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005393 microblaze|microblazeel)
5394 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005395 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005396 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005397 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005398 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005399 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005400 ;;
5401 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005402 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005403 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005404 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005405 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005406 ;;
5407 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005408 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005409 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005410 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005411 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005412 moxie)
5413 ;;
Jia Liue67db062012-07-20 15:50:39 +08005414 or32)
5415 TARGET_ARCH=openrisc
5416 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005417 ;;
aurel322408a522008-04-20 20:19:44 +00005418 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005419 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005420 ;;
5421 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005422 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005423 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005424 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005425 ;;
5426 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005427 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005428 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005429 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005430 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005431 ppc64le)
5432 TARGET_ARCH=ppc64
5433 TARGET_BASE_ARCH=ppc
5434 TARGET_ABI_DIR=ppc
5435 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5436 ;;
aurel322408a522008-04-20 20:19:44 +00005437 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005438 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005439 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005440 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005441 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005442 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005443 ;;
5444 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005445 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005446 bflt="yes"
5447 ;;
5448 sparc)
aurel322408a522008-04-20 20:19:44 +00005449 ;;
5450 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005451 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005452 ;;
5453 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005454 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005455 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005456 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005457 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005458 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005459 s390x)
David Hildenbrand5b9f6342015-06-23 11:00:09 +02005460 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01005461 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005462 tilegx)
5463 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005464 tricore)
5465 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005466 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005467 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005468 xtensa|xtensaeb)
5469 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005470 ;;
aurel322408a522008-04-20 20:19:44 +00005471 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005472 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005473 ;;
5474esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005475# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5476if [ "$TARGET_BASE_ARCH" = "" ]; then
5477 TARGET_BASE_ARCH=$TARGET_ARCH
5478fi
5479
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005480symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5481
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005482upper() {
5483 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5484}
5485
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005486target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005487echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005488echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005489echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005490if [ "$TARGET_ABI_DIR" = "" ]; then
5491 TARGET_ABI_DIR=$TARGET_ARCH
5492fi
Juan Quintela25be2102009-10-07 02:41:00 +02005493echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005494if [ "$HOST_VARIANT_DIR" != "" ]; then
5495 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5496fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005497case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005498 i386|x86_64)
5499 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005500 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005501 if test "$xen_pci_passthrough" = yes; then
5502 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5503 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005504 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005505 ;;
5506 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005507esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005508case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005509 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005510 # Make sure the target and host cpus are compatible
5511 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005512 \( "$target_name" = "$cpu" -o \
5513 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5514 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5515 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5516 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005517 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005518 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005519 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5520 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5521 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005522 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005523 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005524 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5525 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005526 fi
5527esac
bellardde83cd02003-06-15 20:25:43 +00005528if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005529 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005530fi
5531if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005532 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005533fi
bellard997344f2003-10-27 21:10:39 +00005534if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005535 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005536 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005537fi
ths831b7822007-01-18 20:06:33 +00005538if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005539 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005540fi
pbrook56aebc82008-10-11 17:55:29 +00005541list=""
5542if test ! -z "$gdb_xml_files" ; then
5543 for x in $gdb_xml_files; do
5544 list="$list $source_path/gdb-xml/$x"
5545 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005546 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005547fi
bellardde83cd02003-06-15 20:25:43 +00005548
pbrooke5fe0c52006-06-11 13:32:59 +00005549if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005550 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005551fi
blueswir184778502008-10-26 20:33:16 +00005552if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005553 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005554fi
bellard5b0753e2005-03-01 21:37:28 +00005555
Juan Quintela4afddb52009-08-03 14:46:45 +02005556# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005557
Juan Quintela4afddb52009-08-03 14:46:45 +02005558cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005559ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005560
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005561disas_config() {
5562 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5563 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5564}
5565
Juan Quintela64656022009-08-03 14:46:53 +02005566for i in $ARCH $TARGET_BASE_ARCH ; do
5567 case "$i" in
5568 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005569 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005570 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005571 aarch64)
5572 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005573 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005574 fi
5575 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005576 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005577 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005578 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005579 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005580 fi
Juan Quintela64656022009-08-03 14:46:53 +02005581 ;;
5582 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005583 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005584 ;;
5585 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005586 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005587 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005588 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005589 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005590 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005591 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005592 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005593 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005594 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005595 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005596 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005597 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005598 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005599 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005600 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005601 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005602 ;;
5603 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005604 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005605 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005606 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005607 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005608 ;;
Jia Liue67db062012-07-20 15:50:39 +08005609 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005610 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005611 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005612 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005613 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005614 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005615 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005616 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005617 ;;
5618 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005619 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005620 ;;
5621 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005622 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005623 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005624 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005625 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005626 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005627 esac
5628done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005629if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005630 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005631fi
Juan Quintela64656022009-08-03 14:46:53 +02005632
Juan Quintela6ee71262009-08-03 14:46:47 +02005633case "$ARCH" in
5634alpha)
5635 # Ensure there's only a single GP
5636 cflags="-msmall-data $cflags"
5637;;
5638esac
5639
Juan Quintelad02c1db2009-08-03 14:46:50 +02005640if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005641 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005642 if test "$target_linux_user" = "yes" ; then
5643 cflags="-p $cflags"
5644 ldflags="-p $ldflags"
5645 fi
5646 if test "$target_softmmu" = "yes" ; then
5647 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005648 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005649 fi
5650fi
5651
Juan Quintela9b8e1112009-08-03 14:46:46 +02005652if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005653 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005654fi
Juan Quintelafa282482009-07-22 22:37:39 +02005655
Juan Quintela25be2102009-10-07 02:41:00 +02005656echo "LDFLAGS+=$ldflags" >> $config_target_mak
5657echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005658
bellard97a847b2003-08-10 21:36:04 +00005659done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005660
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005661if [ "$pixman" = "internal" ]; then
5662 echo "config-host.h: subdir-pixman" >> $config_host_mak
5663fi
5664
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005665if [ "$dtc_internal" = "yes" ]; then
5666 echo "config-host.h: subdir-dtc" >> $config_host_mak
5667fi
5668
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005669if test "$numa" = "yes"; then
5670 echo "CONFIG_NUMA=y" >> $config_host_mak
5671fi
5672
John Snowfd0e6052015-03-25 18:57:39 -04005673if test "$ccache_cpp2" = "yes"; then
5674 echo "export CCACHE_CPP2=y" >> $config_host_mak
5675fi
5676
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005677# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005678DIRS="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 +04005679DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005680DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005681DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005682DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005683FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5684FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005685FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005686FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005687FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005688FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005689FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005690FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005691for bios_file in \
5692 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005693 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005694 $source_path/pc-bios/*.rom \
5695 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005696 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005697 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005698 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005699 $source_path/pc-bios/palcode-*
5700do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005701 FILES="$FILES pc-bios/`basename $bios_file`"
5702done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005703for test_file in `find $source_path/tests/acpi-test-data -type f`
5704do
5705 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5706done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005707mkdir -p $DIRS
5708for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005709 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005710 symlink "$source_path/$f" "$f"
5711 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005712done
Paul Brook1ad21342009-05-19 16:17:58 +01005713
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005714# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005715for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005716 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005717 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005718 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005719 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005720 echo "CC=$cc" >> $config_mak
5721 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005722 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005723 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005724 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005725 echo "LD=$ld" >> $config_mak
5726done
5727
Max Reitz76c75602014-05-24 23:24:56 +02005728# set up qemu-iotests in this build directory
5729iotests_common_env="tests/qemu-iotests/common.env"
5730iotests_check="tests/qemu-iotests/check"
5731
5732echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5733echo >> "$iotests_common_env"
5734echo "export PYTHON='$python'" >> "$iotests_common_env"
5735
5736if [ ! -e "$iotests_check" ]; then
5737 symlink "$source_path/$iotests_check" "$iotests_check"
5738fi
5739
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005740# Save the configure command line for later reuse.
5741cat <<EOD >config.status
5742#!/bin/sh
5743# Generated by configure.
5744# Run this file to recreate the current configuration.
5745# Compiler output produced by configure, useful for debugging
5746# configure, is in config.log if it exists.
5747EOD
5748printf "exec" >>config.status
5749printf " '%s'" "$0" "$@" >>config.status
5750echo >>config.status
5751chmod +x config.status
5752
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005753rm -r "$TMPDIR1"