blob: 5618bf1bc055a7f329cfe1aeb2247aaee07c42fd [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=""
245vnc_tls=""
246vnc_sasl=""
247vnc_jpeg=""
248vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100249xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000250xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000251xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100252linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500253cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100254attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200255libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100256xfs=""
257
Bradd41a75a2011-07-26 23:11:26 -0400258vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000259vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400260kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400261rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100262gprof="no"
263debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100264debug="no"
265strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200266tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100267bigendian="no"
268mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000269gcov="no"
270gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100271EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800272DSOSUF=".so"
273LDFLAGS_SHARED="-shared"
274modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100275prefix="/usr/local"
276mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300277datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300278qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100279bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300280libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400281libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200282includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100283sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300284local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100285confsuffix="/qemu"
286slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100287oss_lib=""
288bsd="no"
289linux="no"
290solaris="no"
291profiler="no"
292cocoa="no"
293softmmu="yes"
294linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100295bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100296aix="no"
297blobs="yes"
298pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200299pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100300zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200301qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200302trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100303trace_file="trace"
304spice=""
305rbd=""
Robert Relyea111a38b2010-11-28 16:36:38 +0200306smartcard_nss=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100307libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200308usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100309opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300310zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200311lzo=""
312snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100313bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400314guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400315guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500316guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300317guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400318vss_win32_sdk=""
319win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100320want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100321libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100322libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100323coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200324coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300325seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530326glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530327glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530328glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100329archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600330gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200331gtkabi=""
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100332gnutls=""
333gnutls_hash=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100334vte=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400335tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100336libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400337vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800338numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800339tcmalloc="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
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100418# make source path absolute
419source_path=`cd "$source_path"; pwd`
420
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300421# running configure in the source tree?
422# we know that's the case if configure is there.
423if test -f "./configure"; then
424 pwd_is_source_path="y"
425else
426 pwd_is_source_path="n"
427fi
428
aliguoriac0df512008-12-29 17:14:15 +0000429check_define() {
430cat > $TMPC <<EOF
431#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000432#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000433#endif
434int main(void) { return 0; }
435EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200436 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000437}
438
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200439check_include() {
440cat > $TMPC <<EOF
441#include <$1>
442int main(void) { return 0; }
443EOF
444 compile_object
445}
446
John Snow93b25862015-03-25 18:57:37 -0400447write_c_skeleton() {
448 cat > $TMPC <<EOF
449int main(void) { return 0; }
450EOF
451}
452
Peter Maydellbbea4052012-08-14 15:35:34 +0100453if check_define __linux__ ; then
454 targetos="Linux"
455elif check_define _WIN32 ; then
456 targetos='MINGW32'
457elif check_define __OpenBSD__ ; then
458 targetos='OpenBSD'
459elif check_define __sun__ ; then
460 targetos='SunOS'
461elif check_define __HAIKU__ ; then
462 targetos='Haiku'
463else
464 targetos=`uname -s`
465fi
466
467# Some host OSes need non-standard checks for which CPU to use.
468# Note that these checks are broken for cross-compilation: if you're
469# cross-compiling to one of these OSes then you'll need to specify
470# the correct CPU with the --cpu option.
471case $targetos in
472Darwin)
473 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
474 # run 64-bit userspace code.
475 # If the user didn't specify a CPU explicitly and the kernel says this is
476 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
477 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
478 cpu="x86_64"
479 fi
480 ;;
481SunOS)
482 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
483 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
484 cpu="x86_64"
485 fi
486esac
487
Juan Quintela2ff6b912009-08-03 14:45:55 +0200488if test ! -z "$cpu" ; then
489 # command line argument
490 :
491elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000492 cpu="i386"
493elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700494 if check_define __ILP32__ ; then
495 cpu="x32"
496 else
497 cpu="x86_64"
498 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000499elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000500 if check_define __arch64__ ; then
501 cpu="sparc64"
502 else
503 cpu="sparc"
504 fi
malcfdf7ed92009-01-14 18:39:52 +0000505elif check_define _ARCH_PPC ; then
506 if check_define _ARCH_PPC64 ; then
507 cpu="ppc64"
508 else
509 cpu="ppc"
510 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200511elif check_define __mips__ ; then
512 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200513elif check_define __ia64__ ; then
514 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200515elif check_define __s390__ ; then
516 if check_define __s390x__ ; then
517 cpu="s390x"
518 else
519 cpu="s390"
520 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100521elif check_define __arm__ ; then
522 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100523elif check_define __aarch64__ ; then
524 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400525elif check_define __hppa__ ; then
526 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000527else
malcfdf7ed92009-01-14 18:39:52 +0000528 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000529fi
530
Peter Maydell359bc952011-12-24 13:07:25 +0000531ARCH=
532# Normalise host CPU name and set ARCH.
533# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000534case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700535 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200536 cpu="$cpu"
537 ;;
bellard7d132992003-03-06 23:23:54 +0000538 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000539 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000540 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000541 x86_64|amd64)
542 cpu="x86_64"
543 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100544 armv*b|armv*l|arm)
545 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000546 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100547 aarch64)
548 cpu="aarch64"
549 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200550 mips*)
551 cpu="mips"
552 ;;
blueswir131422552007-04-16 18:27:06 +0000553 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000554 cpu="sparc"
555 ;;
bellard7d132992003-03-06 23:23:54 +0000556 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000557 # This will result in either an error or falling back to TCI later
558 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000559 ;;
560esac
Peter Maydell359bc952011-12-24 13:07:25 +0000561if test -z "$ARCH"; then
562 ARCH="$cpu"
563fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200564
bellard7d132992003-03-06 23:23:54 +0000565# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200566
Stacey Sonadfc3e92014-06-08 09:57:22 -0700567# host *BSD for user mode
568HOST_VARIANT_DIR=""
569
bellard7d132992003-03-06 23:23:54 +0000570case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000571CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200572 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200573 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200574 audio_possible_drivers="sdl"
575 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000576;;
bellard67b915a2004-03-31 23:37:16 +0000577MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200578 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200579 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200580 if check_include dsound.h; then
581 audio_drv_list="dsound"
582 else
583 audio_drv_list=""
584 fi
bellard67b915a2004-03-31 23:37:16 +0000585;;
ths5c40d2b2007-06-23 16:03:36 +0000586GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100587 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200588 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200589 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000590;;
bellard7d3505c2004-05-12 19:32:15 +0000591FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200592 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100593 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200594 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200595 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100596 # needed for kinfo_getvmmap(3) in libutil.h
597 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100598 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700599 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000600;;
blueswir1c5e97232009-03-07 20:06:23 +0000601DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200602 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100603 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200604 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200605 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700606 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000607;;
bellard7d3505c2004-05-12 19:32:15 +0000608NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200609 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100610 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200611 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200612 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200613 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700614 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000615;;
616OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200617 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100618 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400619 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200620 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700621 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000622;;
bellard83fb7ad2004-07-05 21:25:26 +0000623Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200624 bsd="yes"
625 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800626 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200627 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200628 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200629 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200630 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200631 cocoa="yes"
632 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200633 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200634 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200635 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100636 # Disable attempts to use ObjectiveC features in os/object.h since they
637 # won't work when we're compiling with gcc as a C compiler.
638 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700639 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000640;;
bellardec530c82006-04-25 22:36:06 +0000641SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200642 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100643 make="${MAKE-gmake}"
644 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000645 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400646 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200647 needs_libsunmath="no"
648 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200649 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
650 if test "$solarisrev" -le 9 ; then
651 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
652 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200653 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
654 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
655 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200656 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100657 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
658 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
659 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
660 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200661 fi
thsef18c882007-09-16 22:12:39 +0000662 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200663 fi
664 if test -f /usr/include/sys/soundcard.h ; then
665 audio_drv_list="oss"
666 fi
667 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000668# needed for CMSG_ macros in sys/socket.h
669 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
670# needed for TIOCWIN* defines in termios.h
671 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200672 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200673 solarisnetlibs="-lsocket -lnsl -lresolv"
674 LIBS="$solarisnetlibs $LIBS"
675 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000676;;
malcb29fe3e2008-11-18 01:42:22 +0000677AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200678 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100679 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000680;;
Andreas Färber179cf402010-09-20 00:50:43 +0200681Haiku)
682 haiku="yes"
683 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
684 LIBS="-lposix_error_mapper -lnetwork $LIBS"
685;;
bellard1d14ffa2005-10-30 18:58:22 +0000686*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200687 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200688 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200689 linux="yes"
690 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200691 kvm="yes"
692 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000693 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000694 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000695;;
bellard7d132992003-03-06 23:23:54 +0000696esac
697
bellard7d3505c2004-05-12 19:32:15 +0000698if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000699 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200700 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000701 fi
bellard7d3505c2004-05-12 19:32:15 +0000702fi
703
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100704: ${make=${MAKE-make}}
705: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100706: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400707: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100708
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100709# Default objcc to clang if available, otherwise use CC
710if has clang; then
711 objcc=clang
712else
713 objcc="$cc"
714fi
715
Juan Quintela3457a3f2009-08-03 14:46:07 +0200716if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200717 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800718 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200719 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100720 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
721 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100722 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400723 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100724 if compile_prog "" "-liberty" ; then
725 LIBS="-liberty $LIBS"
726 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200727 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200728 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300729 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300730 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200731 bindir="\${prefix}"
732 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200733 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200734 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200735 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200736fi
737
Anthony Liguori487fefd2009-06-11 13:28:25 -0500738werror=""
bellard85aa5182007-11-11 20:17:03 +0000739
bellard7d132992003-03-06 23:23:54 +0000740for opt do
pbrooka46e4032006-04-29 23:05:22 +0000741 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000742 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000743 --help|-h) show_help=yes
744 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400745 --version|-V) exec cat $source_path/VERSION
746 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000747 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000748 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000749 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000750 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100751 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000752 ;;
aliguoriac0df512008-12-29 17:14:15 +0000753 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000754 ;;
aliguoriac0df512008-12-29 17:14:15 +0000755 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000756 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000757 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000758 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400759 --cxx=*)
760 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200761 --iasl=*) iasl="$optarg"
762 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100763 --objcc=*) objcc="$optarg"
764 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000765 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000766 ;;
pbrook6a882642006-04-17 13:57:12 +0000767 --install=*) install="$optarg"
768 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000769 --python=*) python="$optarg"
770 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000771 --gcov=*) gcov_tool="$optarg"
772 ;;
Brade2d88302011-09-02 16:53:28 -0400773 --smbd=*) smbd="$optarg"
774 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200775 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000776 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200777 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000778 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100779 --enable-debug-info)
780 ;;
781 --disable-debug-info)
782 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800783 --enable-modules)
784 modules="yes"
785 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200786 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000787 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000788 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000789 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200790 --enable-trace-backends=*) trace_backends="$optarg"
791 ;;
792 # XXX: backwards compatibility
793 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100794 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100795 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100796 ;;
bellard7d132992003-03-06 23:23:54 +0000797 --enable-gprof) gprof="yes"
798 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000799 --enable-gcov) gcov="yes"
800 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100801 --static)
802 static="yes"
803 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300804 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000805 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200806 --mandir=*) mandir="$optarg"
807 ;;
808 --bindir=*) bindir="$optarg"
809 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300810 --libdir=*) libdir="$optarg"
811 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400812 --libexecdir=*) libexecdir="$optarg"
813 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200814 --includedir=*) includedir="$optarg"
815 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300816 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200817 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300818 --with-confsuffix=*) confsuffix="$optarg"
819 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300820 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200821 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100822 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600823 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300824 --localstatedir=*) local_statedir="$optarg"
825 ;;
826 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400827 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
828 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
829 # These switches are silently ignored, for compatibility with
830 # autoconf-generated configure scripts. This allows QEMU's
831 # configure to be used by RPM and similar macros that set
832 # lots of directory switches by default.
833 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200834 --with-system-pixman) pixman="system"
835 ;;
836 --without-system-pixman) pixman="internal"
837 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100838 --without-pixman) pixman="none"
839 ;;
bellard97a847b2003-08-10 21:36:04 +0000840 --disable-sdl) sdl="no"
841 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200842 --enable-sdl) sdl="yes"
843 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000844 --with-sdlabi=*) sdlabi="$optarg"
845 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200846 --disable-qom-cast-debug) qom_cast_debug="no"
847 ;;
848 --enable-qom-cast-debug) qom_cast_debug="yes"
849 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530850 --disable-virtfs) virtfs="no"
851 ;;
852 --enable-virtfs) virtfs="yes"
853 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100854 --disable-vnc) vnc="no"
855 ;;
856 --enable-vnc) vnc="yes"
857 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000858 --oss-lib=*) oss_lib="$optarg"
859 ;;
malc0c58ac12008-06-25 21:04:05 +0000860 --audio-drv-list=*) audio_drv_list="$optarg"
861 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800862 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
863 ;;
864 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100865 ;;
aurel32f8393942009-04-13 18:45:38 +0000866 --enable-debug-tcg) debug_tcg="yes"
867 ;;
868 --disable-debug-tcg) debug_tcg="no"
869 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100870 --enable-debug)
871 # Enable debugging options that aren't excessively noisy
872 debug_tcg="yes"
873 debug="yes"
874 strip_opt="no"
875 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000876 --enable-sparse) sparse="yes"
877 ;;
878 --disable-sparse) sparse="no"
879 ;;
aliguori1625af82009-04-05 17:41:02 +0000880 --disable-strip) strip_opt="no"
881 ;;
ths8d5d2d42007-08-25 01:37:51 +0000882 --disable-vnc-tls) vnc_tls="no"
883 ;;
Juan Quintela1be10ad2009-08-12 18:20:28 +0200884 --enable-vnc-tls) vnc_tls="yes"
885 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000886 --disable-vnc-sasl) vnc_sasl="no"
887 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200888 --enable-vnc-sasl) vnc_sasl="yes"
889 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200890 --disable-vnc-jpeg) vnc_jpeg="no"
891 ;;
892 --enable-vnc-jpeg) vnc_jpeg="yes"
893 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200894 --disable-vnc-png) vnc_png="no"
895 ;;
896 --enable-vnc-png) vnc_png="yes"
897 ;;
bellard443f1372004-06-04 11:13:20 +0000898 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000899 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200900 --disable-uuid) uuid="no"
901 ;;
902 --enable-uuid) uuid="yes"
903 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000904 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000905 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200906 --enable-vde) vde="yes"
907 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100908 --disable-netmap) netmap="no"
909 ;;
910 --enable-netmap) netmap="yes"
911 ;;
aliguorie37630c2009-04-22 15:19:10 +0000912 --disable-xen) xen="no"
913 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200914 --enable-xen) xen="yes"
915 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000916 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
917 ;;
918 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
919 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000920 --disable-brlapi) brlapi="no"
921 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200922 --enable-brlapi) brlapi="yes"
923 ;;
balrogfb599c92008-09-28 23:49:55 +0000924 --disable-bluez) bluez="no"
925 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200926 --enable-bluez) bluez="yes"
927 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000928 --disable-kvm) kvm="no"
929 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200930 --enable-kvm) kvm="yes"
931 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200932 --disable-tcg-interpreter) tcg_interpreter="no"
933 ;;
934 --enable-tcg-interpreter) tcg_interpreter="yes"
935 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500936 --disable-cap-ng) cap_ng="no"
937 ;;
938 --enable-cap-ng) cap_ng="yes"
939 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100940 --disable-spice) spice="no"
941 ;;
942 --enable-spice) spice="yes"
943 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100944 --disable-libiscsi) libiscsi="no"
945 ;;
946 --enable-libiscsi) libiscsi="yes"
947 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100948 --disable-libnfs) libnfs="no"
949 ;;
950 --enable-libnfs) libnfs="yes"
951 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000952 --enable-profiler) profiler="yes"
953 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400954 --disable-cocoa) cocoa="no"
955 ;;
malcc2de5c92008-06-28 19:13:06 +0000956 --enable-cocoa)
957 cocoa="yes" ;
malcc2de5c92008-06-28 19:13:06 +0000958 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000959 ;;
pbrookcad25d62006-03-19 16:31:11 +0000960 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000961 ;;
pbrookcad25d62006-03-19 16:31:11 +0000962 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000963 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000964 --disable-user)
965 linux_user="no" ;
966 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000967 ;;
968 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000969 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000970 ;;
ths831b7822007-01-18 20:06:33 +0000971 --enable-linux-user) linux_user="yes"
972 ;;
blueswir184778502008-10-26 20:33:16 +0000973 --disable-bsd-user) bsd_user="no"
974 ;;
975 --enable-bsd-user) bsd_user="yes"
976 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200977 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300978 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200979 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300980 ;;
bellard85aa5182007-11-11 20:17:03 +0000981 --enable-werror) werror="yes"
982 ;;
983 --disable-werror) werror="no"
984 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100985 --enable-stack-protector) stack_protector="yes"
986 ;;
987 --disable-stack-protector) stack_protector="no"
988 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000989 --disable-curses) curses="no"
990 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200991 --enable-curses) curses="yes"
992 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200993 --disable-curl) curl="no"
994 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200995 --enable-curl) curl="yes"
996 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200997 --disable-fdt) fdt="no"
998 ;;
999 --enable-fdt) fdt="yes"
1000 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001001 --disable-linux-aio) linux_aio="no"
1002 ;;
1003 --enable-linux-aio) linux_aio="yes"
1004 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001005 --disable-attr) attr="no"
1006 ;;
1007 --enable-attr) attr="yes"
1008 ;;
ths77755342008-11-27 15:45:16 +00001009 --disable-blobs) blobs="no"
1010 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001011 --with-pkgversion=*) pkgversion=" ($optarg)"
1012 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001013 --with-coroutine=*) coroutine="$optarg"
1014 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001015 --disable-coroutine-pool) coroutine_pool="no"
1016 ;;
1017 --enable-coroutine-pool) coroutine_pool="yes"
1018 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001019 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001020 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001021 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001022 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001023 --disable-vhost-net) vhost_net="no"
1024 ;;
1025 --enable-vhost-net) vhost_net="yes"
1026 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001027 --disable-vhost-scsi) vhost_scsi="no"
1028 ;;
1029 --enable-vhost-scsi) vhost_scsi="yes"
1030 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001031 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001032 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001033 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001034 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001035 --disable-rbd) rbd="no"
1036 ;;
1037 --enable-rbd) rbd="yes"
1038 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001039 --disable-xfsctl) xfs="no"
1040 ;;
1041 --enable-xfsctl) xfs="yes"
1042 ;;
Robert Relyea111a38b2010-11-28 16:36:38 +02001043 --disable-smartcard-nss) smartcard_nss="no"
1044 ;;
1045 --enable-smartcard-nss) smartcard_nss="yes"
1046 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001047 --disable-libusb) libusb="no"
1048 ;;
1049 --enable-libusb) libusb="yes"
1050 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001051 --disable-usb-redir) usb_redir="no"
1052 ;;
1053 --enable-usb-redir) usb_redir="yes"
1054 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001055 --disable-zlib-test) zlib="no"
1056 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001057 --disable-lzo) lzo="no"
1058 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001059 --enable-lzo) lzo="yes"
1060 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001061 --disable-snappy) snappy="no"
1062 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001063 --enable-snappy) snappy="yes"
1064 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001065 --disable-bzip2) bzip2="no"
1066 ;;
1067 --enable-bzip2) bzip2="yes"
1068 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001069 --enable-guest-agent) guest_agent="yes"
1070 ;;
1071 --disable-guest-agent) guest_agent="no"
1072 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001073 --enable-guest-agent-msi) guest_agent_msi="yes"
1074 ;;
1075 --disable-guest-agent-msi) guest_agent_msi="no"
1076 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001077 --with-vss-sdk) vss_win32_sdk=""
1078 ;;
1079 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1080 ;;
1081 --without-vss-sdk) vss_win32_sdk="no"
1082 ;;
1083 --with-win-sdk) win_sdk=""
1084 ;;
1085 --with-win-sdk=*) win_sdk="$optarg"
1086 ;;
1087 --without-win-sdk) win_sdk="no"
1088 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001089 --enable-tools) want_tools="yes"
1090 ;;
1091 --disable-tools) want_tools="no"
1092 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001093 --enable-seccomp) seccomp="yes"
1094 ;;
1095 --disable-seccomp) seccomp="no"
1096 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301097 --disable-glusterfs) glusterfs="no"
1098 ;;
1099 --enable-glusterfs) glusterfs="yes"
1100 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001101 --disable-archipelago) archipelago="no"
1102 ;;
1103 --enable-archipelago) archipelago="yes"
1104 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001105 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1106 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001107 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001108 --disable-gtk) gtk="no"
1109 ;;
1110 --enable-gtk) gtk="yes"
1111 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001112 --disable-gnutls) gnutls="no"
1113 ;;
1114 --enable-gnutls) gnutls="yes"
1115 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001116 --enable-rdma) rdma="yes"
1117 ;;
1118 --disable-rdma) rdma="no"
1119 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001120 --with-gtkabi=*) gtkabi="$optarg"
1121 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001122 --disable-vte) vte="no"
1123 ;;
1124 --enable-vte) vte="yes"
1125 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001126 --disable-tpm) tpm="no"
1127 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001128 --enable-tpm) tpm="yes"
1129 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001130 --disable-libssh2) libssh2="no"
1131 ;;
1132 --enable-libssh2) libssh2="yes"
1133 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001134 --enable-vhdx) vhdx="yes"
1135 ;;
1136 --disable-vhdx) vhdx="no"
1137 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001138 --disable-numa) numa="no"
1139 ;;
1140 --enable-numa) numa="yes"
1141 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001142 --disable-tcmalloc) tcmalloc="no"
1143 ;;
1144 --enable-tcmalloc) tcmalloc="yes"
1145 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001146 *)
1147 echo "ERROR: unknown option $opt"
1148 echo "Try '$0 --help' for more information"
1149 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001150 ;;
bellard7d132992003-03-06 23:23:54 +00001151 esac
1152done
1153
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001154if ! has $python; then
1155 error_exit "Python not found. Use --python=/path/to/python"
1156fi
1157
1158# Note that if the Python conditional here evaluates True we will exit
1159# with status 1 which is a shell 'false' value.
1160if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1161 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1162 "Note that Python 3 or later is not yet supported." \
1163 "Use --python=/path/to/python to specify a supported Python."
1164fi
1165
1166# The -B switch was added in Python 2.6.
1167# If it is supplied, compiled files are not written.
1168# Use it for Python versions which support it.
1169if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1170 python="$python -B"
1171fi
1172
bellard40293e52008-01-31 11:32:10 +00001173case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001174 ppc)
1175 CPU_CFLAGS="-m32"
1176 LDFLAGS="-m32 $LDFLAGS"
1177 ;;
1178 ppc64)
1179 CPU_CFLAGS="-m64"
1180 LDFLAGS="-m64 $LDFLAGS"
1181 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001182 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001183 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001184 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001185 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001186 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001187 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001188 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001189 ;;
ths76d83bd2007-11-18 21:22:10 +00001190 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001191 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001192 LDFLAGS="-m31 $LDFLAGS"
1193 ;;
1194 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001195 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001196 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001197 ;;
bellard40293e52008-01-31 11:32:10 +00001198 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001199 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001200 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001201 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001202 ;;
1203 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001204 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001205 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001206 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001207 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001208 x32)
1209 CPU_CFLAGS="-mx32"
1210 LDFLAGS="-mx32 $LDFLAGS"
1211 cc_i386='$(CC) -m32'
1212 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001213 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001214esac
1215
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001216QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1217EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1218
Peter Maydell60e0df22011-05-03 14:50:13 +01001219default_target_list=""
1220
Peter Maydell6e92f822013-05-20 16:16:15 +01001221mak_wilds=""
1222
1223if [ "$softmmu" = "yes" ]; then
1224 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001225fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001226if [ "$linux_user" = "yes" ]; then
1227 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001228fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001229if [ "$bsd_user" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001231fi
1232
Peter Maydell6e92f822013-05-20 16:16:15 +01001233for config in $mak_wilds; do
1234 default_target_list="${default_target_list} $(basename "$config" .mak)"
1235done
1236
pbrookaf5db582006-04-08 14:26:41 +00001237if test x"$show_help" = x"yes" ; then
1238cat << EOF
1239
1240Usage: configure [options]
1241Options: [defaults in brackets after descriptions]
1242
Stefan Weil08fb77e2013-12-18 22:09:39 +01001243Standard options:
1244 --help print this message
1245 --prefix=PREFIX install in PREFIX [$prefix]
1246 --interp-prefix=PREFIX where to find shared libraries, etc.
1247 use %M for cpu name [$interp_prefix]
1248 --target-list=LIST set target list (default: build everything)
1249$(echo Available targets: $default_target_list | \
1250 fold -s -w 53 | sed -e 's/^/ /')
1251
1252Advanced options (experts only):
1253 --source-path=PATH path of source code [$source_path]
1254 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1255 --cc=CC use C compiler CC [$cc]
1256 --iasl=IASL use ACPI compiler IASL [$iasl]
1257 --host-cc=CC use C compiler CC [$host_cc] for code run at
1258 build time
1259 --cxx=CXX use C++ compiler CXX [$cxx]
1260 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1261 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1262 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1263 --make=MAKE use specified make [$make]
1264 --install=INSTALL use specified install [$install]
1265 --python=PYTHON use specified python [$python]
1266 --smbd=SMBD use specified smbd [$smbd]
1267 --static enable static build [$static]
1268 --mandir=PATH install man pages in PATH
1269 --datadir=PATH install firmware in PATH$confsuffix
1270 --docdir=PATH install documentation in PATH$confsuffix
1271 --bindir=PATH install binaries in PATH
1272 --libdir=PATH install libraries in PATH
1273 --sysconfdir=PATH install config in PATH$confsuffix
1274 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001275 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001276 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001277 --disable-strip disable stripping binaries
1278 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001279 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001280 --audio-drv-list=LIST set audio drivers list:
1281 Available drivers: $audio_possible_drivers
1282 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1283 --block-drv-rw-whitelist=L
1284 set block driver read-write whitelist
1285 (affects only QEMU, not qemu-img)
1286 --block-drv-ro-whitelist=L
1287 set block driver read-only whitelist
1288 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001289 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001290 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1291 --with-trace-file=NAME Full PATH,NAME of file to store traces
1292 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001293 --disable-slirp disable SLIRP userspace network connectivity
1294 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1295 --oss-lib path to OSS library
1296 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001297 --with-coroutine=BACKEND coroutine backend. Supported options:
1298 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001299 --enable-gcov enable test coverage analysis with gcov
1300 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001301 --disable-blobs disable installing provided firmware blobs
1302 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1303 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1304
1305Optional features, enabled with --enable-FEATURE and
1306disabled with --disable-FEATURE, default is enabled if available:
1307
1308 system all system emulation targets
1309 user supported user emulation targets
1310 linux-user all linux usermode emulation targets
1311 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001312 docs build documentation
1313 guest-agent build the QEMU Guest Agent
1314 guest-agent-msi build guest agent Windows MSI installation package
1315 pie Position Independent Executables
1316 modules modules support
1317 debug-tcg TCG debugging (default is disabled)
1318 debug-info debugging information
1319 sparse sparse checker
1320
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001321 gnutls GNUTLS cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001322 sdl SDL UI
1323 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1324 gtk gtk UI
1325 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1326 vte vte support for the gtk UI
1327 curses curses UI
1328 vnc VNC UI support
1329 vnc-tls TLS encryption for VNC server
1330 vnc-sasl SASL encryption for VNC server
1331 vnc-jpeg JPEG lossy compression for VNC server
1332 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001333 cocoa Cocoa UI (Mac OS X only)
1334 virtfs VirtFS
1335 xen xen backend driver support
1336 xen-pci-passthrough
1337 brlapi BrlAPI (Braile)
1338 curl curl connectivity
1339 fdt fdt device tree
1340 bluez bluez stack connectivity
1341 kvm KVM acceleration support
1342 rdma RDMA-based migration support
1343 uuid uuid support
1344 vde support for vde network
1345 netmap support for netmap network
1346 linux-aio Linux AIO support
1347 cap-ng libcap-ng support
1348 attr attr and xattr support
1349 vhost-net vhost-net acceleration support
1350 spice spice
1351 rbd rados block device (rbd)
1352 libiscsi iscsi support
1353 libnfs nfs support
1354 smartcard-nss smartcard nss support
1355 libusb libusb (for usb passthrough)
1356 usb-redir usb network redirection support
1357 lzo support of lzo compression library
1358 snappy support of snappy compression library
1359 bzip2 support of bzip2 compression library
1360 (for reading bzip2-compressed dmg images)
1361 seccomp seccomp support
1362 coroutine-pool coroutine freelist (better performance)
1363 glusterfs GlusterFS backend
1364 archipelago Archipelago backend
1365 tpm TPM support
1366 libssh2 ssh block device support
1367 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001368 numa libnuma support
1369 tcmalloc tcmalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001370
1371NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001372EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001373exit 0
pbrookaf5db582006-04-08 14:26:41 +00001374fi
1375
Peter Maydell359bc952011-12-24 13:07:25 +00001376# Now we have handled --enable-tcg-interpreter and know we're not just
1377# printing the help message, bail out if the host CPU isn't supported.
1378if test "$ARCH" = "unknown"; then
1379 if test "$tcg_interpreter" = "yes" ; then
1380 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1381 ARCH=tci
1382 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001383 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001384 fi
1385fi
1386
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001387# Consult white-list to determine whether to enable werror
1388# by default. Only enable by default for git builds
1389z_version=`cut -f3 -d. $source_path/VERSION`
1390
1391if test -z "$werror" ; then
1392 if test -d "$source_path/.git" -a \
1393 "$linux" = "yes" ; then
1394 werror="yes"
1395 else
1396 werror="no"
1397 fi
1398fi
1399
Paolo Bonzini8d050952010-12-23 11:43:52 +01001400# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001401write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001402if compile_object ; then
1403 : C compiler works ok
1404else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001405 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001406fi
1407
Peter Maydell98b21dc2014-02-20 15:10:16 +00001408# Check that the C++ compiler exists and works with the C compiler
1409if has $cxx; then
1410 cat > $TMPC <<EOF
1411int c_function(void);
1412int main(void) { return c_function(); }
1413EOF
1414
1415 compile_object
1416
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001417 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001418extern "C" {
1419 int c_function(void);
1420}
1421int c_function(void) { return 42; }
1422EOF
1423
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001424 update_cxxflags
1425
1426 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001427 # C++ compiler $cxx works ok with C compiler $cc
1428 :
1429 else
1430 echo "C++ compiler $cxx does not work with C compiler $cc"
1431 echo "Disabling C++ specific optional code"
1432 cxx=
1433 fi
1434else
1435 echo "No C++ compiler available; disabling C++ specific optional code"
1436 cxx=
1437fi
1438
Paolo Bonzini8d050952010-12-23 11:43:52 +01001439gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1440gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1441gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001442gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001443gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001444gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001445# Note that we do not add -Werror to gcc_flags here, because that would
1446# enable it for all configure tests. If a configure test failed due
1447# to -Werror this would just silently disable some features,
1448# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001449
1450cc_has_warning_flag() {
1451 write_c_skeleton;
1452
Peter Maydella1d29d62012-10-27 22:19:07 +01001453 # Use the positive sense of the flag when testing for -Wno-wombat
1454 # support (gcc will happily accept the -Wno- form of unknown
1455 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001456 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1457 compile_prog "-Werror $optflag" ""
1458}
1459
1460for flag in $gcc_flags; do
1461 if cc_has_warning_flag $flag ; then
1462 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001463 fi
1464done
1465
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001466if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001467 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001468 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001469 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001470 # We need to check both a compile and a link, since some compiler
1471 # setups fail only on a .c->.o compile and some only at link time
1472 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1473 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001474 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1475 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001476 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001477 break
1478 fi
1479 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001480 if test "$stack_protector" = yes; then
1481 if test $sp_on = 0; then
1482 error_exit "Stack protector not supported"
1483 fi
1484 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001485fi
1486
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001487# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1488# large functions that use global variables. The bug is in all releases of
1489# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1490# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1491cat > $TMPC << EOF
1492#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1493int main(void) { return 0; }
1494#else
1495#error No bug in this compiler.
1496#endif
1497EOF
1498if compile_prog "-Werror -fno-gcse" "" ; then
1499 TRANSLATE_OPT_CFLAGS=-fno-gcse
1500fi
1501
Avi Kivity40d64442011-11-15 20:12:17 +02001502if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001503 if test "$modules" = "yes" ; then
1504 error_exit "static and modules are mutually incompatible"
1505 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001506 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001507 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001508 else
1509 pie="no"
1510 fi
1511fi
1512
Emilio G. Cota768b7852015-04-29 13:09:02 +02001513# Unconditional check for compiler __thread support
1514 cat > $TMPC << EOF
1515static __thread int tls_var;
1516int main(void) { return tls_var; }
1517EOF
1518
1519if ! compile_prog "-Werror" "" ; then
1520 error_exit "Your compiler does not support the __thread specifier for " \
1521 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1522fi
1523
Avi Kivity40d64442011-11-15 20:12:17 +02001524if test "$pie" = ""; then
1525 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001526 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001527 ;;
1528 *)
1529 pie="no"
1530 ;;
1531 esac
1532fi
1533
1534if test "$pie" != "no" ; then
1535 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001536
1537#ifdef __linux__
1538# define THREAD __thread
1539#else
1540# define THREAD
1541#endif
1542
1543static THREAD int tls_var;
1544
1545int main(void) { return tls_var; }
1546
Avi Kivity40d64442011-11-15 20:12:17 +02001547EOF
1548 if compile_prog "-fPIE -DPIE" "-pie"; then
1549 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1550 LDFLAGS="-pie $LDFLAGS"
1551 pie="yes"
1552 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1553 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1554 fi
1555 else
1556 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001557 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001558 else
1559 echo "Disabling PIE due to missing toolchain support"
1560 pie="no"
1561 fi
1562 fi
Brad46eef332013-12-10 19:49:08 -05001563
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001564 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001565 CFLAGS_NOPIE="-fno-pie"
1566 LDFLAGS_NOPIE="-nopie"
1567 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001568fi
1569
Don Slutz66518bf2014-01-02 21:12:46 -05001570# check for broken gcc and libtool in RHEL5
1571if test -n "$libtool" -a "$pie" != "no" ; then
1572 cat > $TMPC <<EOF
1573
1574void *f(unsigned char *buf, int len);
1575void *g(unsigned char *buf, int len);
1576
1577void *
1578f(unsigned char *buf, int len)
1579{
1580 return (void*)0L;
1581}
1582
1583void *
1584g(unsigned char *buf, int len)
1585{
1586 return f(buf, len);
1587}
1588
1589EOF
1590 if ! libtool_prog; then
1591 echo "Disabling libtool due to broken toolchain support"
1592 libtool=
1593 fi
1594fi
1595
Paolo Bonzini09dada42013-04-17 16:26:47 +02001596##########################################
1597# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1598# use i686 as default anyway, but for those that don't, an explicit
1599# specification is necessary
1600
1601if test "$cpu" = "i386"; then
1602 cat > $TMPC << EOF
1603static int sfaa(int *ptr)
1604{
1605 return __sync_fetch_and_and(ptr, 0);
1606}
1607
1608int main(void)
1609{
1610 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001611 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001612 sfaa(&val);
1613 return val;
1614}
1615EOF
1616 if ! compile_prog "" "" ; then
1617 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1618 fi
1619fi
1620
1621#########################################
bellardec530c82006-04-25 22:36:06 +00001622# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001623
bellardec530c82006-04-25 22:36:06 +00001624if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001625 if has $install; then
1626 :
1627 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001628 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1629 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1630 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001631 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001632 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001633 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1634 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1635 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001636 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001637 if has ar; then
1638 :
1639 else
bellardec530c82006-04-25 22:36:06 +00001640 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001641 error_exit "No path includes ar" \
1642 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001643 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001644 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001645 fi
ths5fafdf22007-09-16 21:08:06 +00001646fi
bellardec530c82006-04-25 22:36:06 +00001647
Stefan Weilafb63eb2012-09-26 22:04:38 +02001648if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001649 target_list="$default_target_list"
1650else
1651 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001652fi
Peter Maydell25b48332013-05-20 16:16:16 +01001653
1654# Check that we recognised the target name; this allows a more
1655# friendly error message than if we let it fall through.
1656for target in $target_list; do
1657 case " $default_target_list " in
1658 *" $target "*)
1659 ;;
1660 *)
1661 error_exit "Unknown target name '$target'"
1662 ;;
1663 esac
1664done
1665
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001666# see if system emulation was really requested
1667case " $target_list " in
1668 *"-softmmu "*) softmmu=yes
1669 ;;
1670 *) softmmu=no
1671 ;;
1672esac
bellard5327cf42005-01-10 23:18:50 +00001673
Juan Quintela249247c2009-08-12 18:20:25 +02001674feature_not_found() {
1675 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001676 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001677
Peter Maydell76ad07a2013-04-08 12:11:26 +01001678 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001679 "configure was not able to find it." \
1680 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001681}
1682
bellard7d132992003-03-06 23:23:54 +00001683# ---
1684# big/little endian test
1685cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001686short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1687short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1688extern int foo(short *, short *);
1689int main(int argc, char *argv[]) {
1690 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001691}
1692EOF
1693
Mike Frysinger61cc9192013-06-30 23:30:18 -04001694if compile_object ; then
1695 if grep -q BiGeNdIaN $TMPO ; then
1696 bigendian="yes"
1697 elif grep -q LiTtLeEnDiAn $TMPO ; then
1698 bigendian="no"
1699 else
1700 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001701 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001702else
1703 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001704fi
1705
Juan Quintelab0a47e72009-08-12 18:29:49 +02001706##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001707# cocoa implies not SDL or GTK
1708# (the cocoa UI code currently assumes it is always the active UI
1709# and doesn't interact well with other UI frontend code)
1710if test "$cocoa" = "yes"; then
1711 if test "$sdl" = "yes"; then
1712 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1713 fi
1714 if test "$gtk" = "yes"; then
1715 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1716 fi
1717 gtk=no
1718 sdl=no
1719fi
1720
1721##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001722# L2TPV3 probe
1723
1724cat > $TMPC <<EOF
1725#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001726#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001727int main(void) { return sizeof(struct mmsghdr); }
1728EOF
1729if compile_prog "" "" ; then
1730 l2tpv3=yes
1731else
1732 l2tpv3=no
1733fi
1734
1735##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001736# pkg-config probe
1737
1738if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001739 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001740fi
1741
1742##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001743# NPTL probe
1744
Peter Maydell24cb36a2013-07-16 18:45:00 +01001745if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001746 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001747#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001748#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001749int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001750#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1751#error bork
1752#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001753 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001754}
1755EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001756 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001757 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001758 fi
pbrookbd0c5662008-05-29 14:34:11 +00001759fi
1760
bellard11d9f692004-04-02 20:55:59 +00001761##########################################
balrogac629222008-10-11 09:56:04 +00001762# zlib check
1763
Alon Levy1ece9902011-07-26 12:30:40 +03001764if test "$zlib" != "no" ; then
1765 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001766#include <zlib.h>
1767int main(void) { zlibVersion(); return 0; }
1768EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001769 if compile_prog "" "-lz" ; then
1770 :
1771 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001772 error_exit "zlib check failed" \
1773 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001774 fi
balrogac629222008-10-11 09:56:04 +00001775fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001776LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001777
1778##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001779# lzo check
1780
1781if test "$lzo" != "no" ; then
1782 cat > $TMPC << EOF
1783#include <lzo/lzo1x.h>
1784int main(void) { lzo_version(); return 0; }
1785EOF
1786 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001787 libs_softmmu="$libs_softmmu -llzo2"
1788 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001789 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001790 if test "$lzo" = "yes"; then
1791 feature_not_found "liblzo2" "Install liblzo2 devel"
1792 fi
1793 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001794 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001795fi
1796
1797##########################################
1798# snappy check
1799
1800if test "$snappy" != "no" ; then
1801 cat > $TMPC << EOF
1802#include <snappy-c.h>
1803int main(void) { snappy_max_compressed_length(4096); return 0; }
1804EOF
1805 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001806 libs_softmmu="$libs_softmmu -lsnappy"
1807 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001808 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001809 if test "$snappy" = "yes"; then
1810 feature_not_found "libsnappy" "Install libsnappy devel"
1811 fi
1812 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001813 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001814fi
1815
1816##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001817# bzip2 check
1818
1819if test "$bzip2" != "no" ; then
1820 cat > $TMPC << EOF
1821#include <bzlib.h>
1822int main(void) { BZ2_bzlibVersion(); return 0; }
1823EOF
1824 if compile_prog "" "-lbz2" ; then
1825 bzip2="yes"
1826 else
1827 if test "$bzip2" = "yes"; then
1828 feature_not_found "libbzip2" "Install libbzip2 devel"
1829 fi
1830 bzip2="no"
1831 fi
1832fi
1833
1834##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001835# libseccomp check
1836
1837if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001838 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1839 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001840 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001841 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001842 seccomp="yes"
1843 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001844 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001845 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001846 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001847 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001848 fi
1849fi
1850##########################################
aliguorie37630c2009-04-22 15:19:10 +00001851# xen probe
1852
Juan Quintelafc321b42009-08-12 18:29:55 +02001853if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001854 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001855
Stefan Weil50ced5b2011-12-17 09:27:39 +01001856 # First we test whether Xen headers and libraries are available.
1857 # If no, we are done and there is no Xen support.
1858 # If yes, more tests are run to detect the Xen version.
1859
1860 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001861 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001862#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001863int main(void) {
1864 return 0;
1865}
1866EOF
1867 if ! compile_prog "" "$xen_libs" ; then
1868 # Xen not found
1869 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001870 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001871 fi
1872 xen=no
1873
1874 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001875 elif
1876 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001877#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001878#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001879#include <stdint.h>
1880#include <xen/hvm/hvm_info_table.h>
1881#if !defined(HVM_MAX_VCPUS)
1882# error HVM_MAX_VCPUS not defined
1883#endif
1884int main(void) {
1885 xc_interface *xc;
1886 xs_daemon_open();
1887 xc = xc_interface_open(0, 0, 0);
1888 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1889 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001890 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001891 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001892 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
1893 return 0;
1894}
1895EOF
1896 compile_prog "" "$xen_libs"
1897 then
1898 xen_ctrl_version=460
1899 xen=yes
1900
1901 # Xen 4.5
1902 elif
1903 cat > $TMPC <<EOF &&
1904#include <xenctrl.h>
1905#include <xenstore.h>
1906#include <stdint.h>
1907#include <xen/hvm/hvm_info_table.h>
1908#if !defined(HVM_MAX_VCPUS)
1909# error HVM_MAX_VCPUS not defined
1910#endif
1911int main(void) {
1912 xc_interface *xc;
1913 xs_daemon_open();
1914 xc = xc_interface_open(0, 0, 0);
1915 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1916 xc_gnttab_open(NULL, 0);
1917 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1918 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001919 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1920 return 0;
1921}
1922EOF
1923 compile_prog "" "$xen_libs"
1924 then
1925 xen_ctrl_version=450
1926 xen=yes
1927
1928 elif
1929 cat > $TMPC <<EOF &&
1930#include <xenctrl.h>
1931#include <xenstore.h>
1932#include <stdint.h>
1933#include <xen/hvm/hvm_info_table.h>
1934#if !defined(HVM_MAX_VCPUS)
1935# error HVM_MAX_VCPUS not defined
1936#endif
1937int main(void) {
1938 xc_interface *xc;
1939 xs_daemon_open();
1940 xc = xc_interface_open(0, 0, 0);
1941 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1942 xc_gnttab_open(NULL, 0);
1943 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1944 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001945 return 0;
1946}
1947EOF
1948 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001949 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00001950 xen_ctrl_version=420
1951 xen=yes
1952
Peter Maydell69deef02012-08-02 18:30:26 +01001953 elif
1954 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00001955#include <xenctrl.h>
1956#include <xs.h>
1957#include <stdint.h>
1958#include <xen/hvm/hvm_info_table.h>
1959#if !defined(HVM_MAX_VCPUS)
1960# error HVM_MAX_VCPUS not defined
1961#endif
1962int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00001963 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01001964 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001965 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1966 xc_gnttab_open(NULL, 0);
1967 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001968 return 0;
1969}
aliguorie37630c2009-04-22 15:19:10 +00001970EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01001971 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001972 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001973 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02001974 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001975
1976 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01001977 elif
1978 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001979#include <xenctrl.h>
1980#include <xs.h>
1981#include <stdint.h>
1982#include <xen/hvm/hvm_info_table.h>
1983#if !defined(HVM_MAX_VCPUS)
1984# error HVM_MAX_VCPUS not defined
1985#endif
1986int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01001987 struct xen_add_to_physmap xatp = {
1988 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1989 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001990 xs_daemon_open();
1991 xc_interface_open();
1992 xc_gnttab_open();
1993 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001994 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001995 return 0;
1996}
1997EOF
1998 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001999 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002000 xen_ctrl_version=400
2001 xen=yes
2002
Anthony PERARDb87de242011-05-24 14:34:20 +01002003 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002004 elif
2005 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002006#include <xenctrl.h>
2007#include <xs.h>
2008int main(void) {
2009 struct xen_add_to_physmap xatp = {
2010 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2011 };
2012 xs_daemon_open();
2013 xc_interface_open();
2014 xc_gnttab_open();
2015 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2016 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2017 return 0;
2018}
2019EOF
2020 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002021 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002022 xen_ctrl_version=340
2023 xen=yes
2024
2025 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002026 elif
2027 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002028#include <xenctrl.h>
2029#include <xs.h>
2030int main(void) {
2031 xs_daemon_open();
2032 xc_interface_open();
2033 xc_gnttab_open();
2034 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2035 return 0;
2036}
2037EOF
2038 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002039 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002040 xen_ctrl_version=330
2041 xen=yes
2042
Stefan Weil50ced5b2011-12-17 09:27:39 +01002043 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002044 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002045 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002046 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002047 fi
2048 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002049 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002050
2051 if test "$xen" = yes; then
2052 libs_softmmu="$xen_libs $libs_softmmu"
2053 fi
aliguorie37630c2009-04-22 15:19:10 +00002054fi
2055
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002056if test "$xen_pci_passthrough" != "no"; then
2057 if test "$xen" = "yes" && test "$linux" = "yes" &&
2058 test "$xen_ctrl_version" -ge 340; then
2059 xen_pci_passthrough=yes
2060 else
2061 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002062 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002063 error_exit "User requested feature Xen PCI Passthrough" \
2064 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002065 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002066 error_exit "User requested feature Xen PCI Passthrough" \
2067 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002068 fi
2069 xen_pci_passthrough=no
2070 fi
2071fi
2072
aliguorie37630c2009-04-22 15:19:10 +00002073##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002074# libtool probe
2075
Brad3f534582011-08-13 20:30:14 -04002076if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002077 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002078fi
2079
Peter Maydell8e515b12013-05-04 21:57:51 +01002080# MacOSX ships with a libtool which isn't the GNU one; weed this
2081# out by checking whether libtool supports the --version switch
2082if test -n "$libtool"; then
2083 if ! "$libtool" --version >/dev/null 2>&1; then
2084 libtool=
2085 fi
2086fi
2087
Alon Levy44dc0ca2011-05-15 11:51:28 +03002088##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002089# Sparse probe
2090if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002091 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002092 sparse=yes
2093 else
2094 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002095 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002096 fi
2097 sparse=no
2098 fi
2099fi
2100
2101##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002102# X11 probe
2103x11_cflags=
2104x11_libs=-lX11
2105if $pkg_config --exists "x11"; then
2106 x11_cflags=`$pkg_config --cflags x11`
2107 x11_libs=`$pkg_config --libs x11`
2108fi
2109
2110##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002111# GTK probe
2112
Stefan Weil9e04c682014-05-17 16:29:18 +02002113if test "$gtkabi" = ""; then
2114 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2115 # Use 3.0 as a fallback if that is available.
2116 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2117 gtkabi=2.0
2118 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2119 gtkabi=3.0
2120 else
2121 gtkabi=2.0
2122 fi
2123fi
2124
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002125if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002126 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002127 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002128 if test "$gtkabi" = "3.0" ; then
2129 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002130 else
2131 gtkversion="2.18.0"
2132 fi
2133 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2134 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2135 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002136 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002137 gtk_cflags="$gtk_cflags $x11_cflags"
2138 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002139 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002140 libs_softmmu="$gtk_libs $libs_softmmu"
2141 gtk="yes"
2142 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002143 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002144 else
2145 gtk="no"
2146 fi
2147fi
2148
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002149
2150##########################################
2151# GNUTLS probe
2152
Peter Maydell37371292015-07-24 18:28:08 +01002153gnutls_works() {
2154 # Unfortunately some distros have bad pkg-config information for gnutls
2155 # such that it claims to exist but you get a compiler error if you try
2156 # to use the options returned by --libs. Specifically, Ubuntu for --static
2157 # builds doesn't work:
2158 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2159 #
2160 # So sanity check the cflags/libs before assuming gnutls can be used.
2161 if ! $pkg_config --exists "gnutls"; then
2162 return 1
2163 fi
2164
2165 write_c_skeleton
2166 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2167}
2168
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002169gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002170gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002171if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002172 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002173 gnutls_cflags=`$pkg_config --cflags gnutls`
2174 gnutls_libs=`$pkg_config --libs gnutls`
2175 libs_softmmu="$gnutls_libs $libs_softmmu"
2176 libs_tools="$gnutls_libs $libs_tools"
2177 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2178 gnutls="yes"
2179
2180 # gnutls_hash_init requires >= 2.9.10
2181 if $pkg_config --exists "gnutls >= 2.9.10"; then
2182 gnutls_hash="yes"
2183 else
2184 gnutls_hash="no"
2185 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002186
2187 if $pkg_config --exists 'gnutls >= 3.0'; then
2188 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002189 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002190 elif $pkg_config --exists 'gnutls >= 2.12'; then
2191 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002192 *gcrypt*)
2193 gnutls_gcrypt=yes
2194 gnutls_nettle=no
2195 ;;
2196 *nettle*)
2197 gnutls_gcrypt=no
2198 gnutls_nettle=yes
2199 ;;
2200 *)
2201 gnutls_gcrypt=yes
2202 gnutls_nettle=no
2203 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002204 esac
2205 else
2206 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002207 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002208 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002209 elif test "$gnutls" = "yes"; then
2210 feature_not_found "gnutls" "Install gnutls devel"
2211 else
2212 gnutls="no"
2213 gnutls_hash="no"
2214 fi
2215else
2216 gnutls_hash="no"
2217fi
2218
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002219if test "$gnutls_gcrypt" != "no"; then
2220 if has "libgcrypt-config"; then
2221 gcrypt_cflags=`libgcrypt-config --cflags`
2222 gcrypt_libs=`libgcrypt-config --libs`
2223 libs_softmmu="$gcrypt_libs $libs_softmmu"
2224 libs_tools="$gcrypt_libs $libs_tools"
2225 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2226 else
2227 feature_not_found "gcrypt" "Install gcrypt devel"
2228 fi
2229fi
2230
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002231
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002232if test "$gnutls_nettle" != "no"; then
2233 if $pkg_config --exists "nettle"; then
2234 nettle_cflags=`$pkg_config --cflags nettle`
2235 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002236 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002237 libs_softmmu="$nettle_libs $libs_softmmu"
2238 libs_tools="$nettle_libs $libs_tools"
2239 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2240 else
2241 feature_not_found "nettle" "Install nettle devel"
2242 fi
2243fi
2244
2245
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002246##########################################
2247# VTE probe
2248
2249if test "$vte" != "no"; then
2250 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002251 vtepackage="vte-2.90"
2252 vteversion="0.32.0"
2253 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002254 vtepackage="vte"
2255 vteversion="0.24.0"
2256 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002257 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2258 vte_cflags=`$pkg_config --cflags $vtepackage`
2259 vte_libs=`$pkg_config --libs $vtepackage`
2260 libs_softmmu="$vte_libs $libs_softmmu"
2261 vte="yes"
2262 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002263 if test "$gtkabi" = "3.0"; then
2264 feature_not_found "vte" "Install libvte-2.90 devel"
2265 else
2266 feature_not_found "vte" "Install libvte devel"
2267 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002268 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002269 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002270 fi
2271fi
2272
2273##########################################
bellard11d9f692004-04-02 20:55:59 +00002274# SDL probe
2275
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002276# Look for sdl configuration program (pkg-config or sdl-config). Try
2277# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002278
2279if test $sdlabi = "2.0"; then
2280 sdl_config=$sdl2_config
2281 sdlname=sdl2
2282 sdlconfigname=sdl2_config
2283else
2284 sdlname=sdl
2285 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002286fi
2287
Dave Airlie47c03742013-12-10 14:05:51 +10002288if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2289 sdl_config=$sdlconfigname
2290fi
2291
2292if $pkg_config $sdlname --exists; then
2293 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002294 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002295elif has ${sdl_config}; then
2296 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002297 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002298else
2299 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002300 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002301 fi
2302 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002303fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002304if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002305 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2306fi
bellard11d9f692004-04-02 20:55:59 +00002307
Paolo Bonzini9316f802010-01-13 09:52:55 +01002308sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002309if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002310 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002311#include <SDL.h>
2312#undef main /* We don't want SDL to override our main() */
2313int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2314EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002315 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002316 if test "$static" = "yes" ; then
2317 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2318 else
2319 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2320 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002321 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002322 if test "$_sdlversion" -lt 121 ; then
2323 sdl_too_old=yes
2324 else
Peter Maydella30878e2015-08-14 16:10:52 +01002325 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002326 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002327
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002328 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002329 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002330 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002331 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2332 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002333 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002334 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002335 :
2336 else
2337 sdl=no
2338 fi
2339 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002340 else # sdl not found
2341 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002342 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002343 fi
2344 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002345 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002346fi
bellard11d9f692004-04-02 20:55:59 +00002347
aliguori5368a422009-03-03 17:37:21 +00002348if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002349 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002350#include <SDL.h>
2351#if defined(SDL_VIDEO_DRIVER_X11)
2352#include <X11/XKBlib.h>
2353#else
2354#error No x11 support
2355#endif
2356int main(void) { return 0; }
2357EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002358 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2359 sdl_cflags="$sdl_cflags $x11_cflags"
2360 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002361 fi
Juan Quintela07056672009-08-03 14:46:27 +02002362 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002363fi
2364
ths8f28f3f2007-01-05 21:25:54 +00002365##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002366# RDMA needs OpenFabrics libraries
2367if test "$rdma" != "no" ; then
2368 cat > $TMPC <<EOF
2369#include <rdma/rdma_cma.h>
2370int main(void) { return 0; }
2371EOF
2372 rdma_libs="-lrdmacm -libverbs"
2373 if compile_prog "" "$rdma_libs" ; then
2374 rdma="yes"
2375 libs_softmmu="$libs_softmmu $rdma_libs"
2376 else
2377 if test "$rdma" = "yes" ; then
2378 error_exit \
2379 " OpenFabrics librdmacm/libibverbs not present." \
2380 " Your options:" \
2381 " (1) Fast: Install infiniband packages from your distro." \
2382 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2383 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2384 fi
2385 rdma="no"
2386 fi
2387fi
2388
2389##########################################
Tim Hardeck7536ee42013-01-21 11:04:44 +01002390# VNC TLS/WS detection
Daniel P. Berrange8e9b0d22015-07-01 18:10:36 +01002391if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
Juan Quintela1be10ad2009-08-12 18:20:28 +02002392 cat > $TMPC <<EOF
aliguoriae6b5e52008-08-06 16:55:50 +00002393#include <gnutls/gnutls.h>
2394int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2395EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002396 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2397 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
Juan Quintela1be10ad2009-08-12 18:20:28 +02002398 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
Tim Hardeck7536ee42013-01-21 11:04:44 +01002399 if test "$vnc_tls" != "no" ; then
2400 vnc_tls=yes
2401 fi
Juan Quintela1be10ad2009-08-12 18:20:28 +02002402 libs_softmmu="$vnc_tls_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002403 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
Juan Quintela1be10ad2009-08-12 18:20:28 +02002404 else
2405 if test "$vnc_tls" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002406 feature_not_found "vnc-tls" "Install gnutls devel"
aliguoriae6b5e52008-08-06 16:55:50 +00002407 fi
Juan Quintela1be10ad2009-08-12 18:20:28 +02002408 vnc_tls=no
2409 fi
ths8d5d2d42007-08-25 01:37:51 +00002410fi
2411
2412##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002413# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002414if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002415 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002416#include <sasl/sasl.h>
2417#include <stdio.h>
2418int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2419EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002420 # Assuming Cyrus-SASL installed in /usr prefix
2421 vnc_sasl_cflags=""
2422 vnc_sasl_libs="-lsasl2"
2423 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2424 vnc_sasl=yes
2425 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002426 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002427 else
2428 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002429 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002430 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002431 vnc_sasl=no
2432 fi
aliguori2f9606b2009-03-06 20:27:28 +00002433fi
2434
2435##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002436# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002437if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002438cat > $TMPC <<EOF
2439#include <stdio.h>
2440#include <jpeglib.h>
2441int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2442EOF
2443 vnc_jpeg_cflags=""
2444 vnc_jpeg_libs="-ljpeg"
2445 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2446 vnc_jpeg=yes
2447 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002448 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002449 else
2450 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002451 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002452 fi
2453 vnc_jpeg=no
2454 fi
2455fi
2456
2457##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002458# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002459if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002460cat > $TMPC <<EOF
2461//#include <stdio.h>
2462#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002463#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002464int main(void) {
2465 png_structp png_ptr;
2466 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002467 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002468}
2469EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002470 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002471 vnc_png_cflags=`$pkg_config libpng --cflags`
2472 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002473 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002474 vnc_png_cflags=""
2475 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002476 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002477 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2478 vnc_png=yes
2479 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002480 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002481 else
2482 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002483 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002484 fi
2485 vnc_png=no
2486 fi
2487fi
2488
2489##########################################
aliguori76655d62009-03-06 20:27:37 +00002490# fnmatch() probe, used for ACL routines
2491fnmatch="no"
2492cat > $TMPC << EOF
2493#include <fnmatch.h>
2494int main(void)
2495{
2496 fnmatch("foo", "foo", 0);
2497 return 0;
2498}
2499EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002500if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002501 fnmatch="yes"
2502fi
2503
2504##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002505# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002506# Note that on some systems (notably MacOSX) no extra library
2507# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002508if test "$uuid" != "no" ; then
2509 uuid_libs="-luuid"
2510 cat > $TMPC << EOF
2511#include <uuid/uuid.h>
2512int main(void)
2513{
2514 uuid_t my_uuid;
2515 uuid_generate(my_uuid);
2516 return 0;
2517}
2518EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002519 if compile_prog "" "" ; then
2520 uuid="yes"
2521 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002522 uuid="yes"
2523 libs_softmmu="$uuid_libs $libs_softmmu"
2524 libs_tools="$uuid_libs $libs_tools"
2525 else
2526 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002527 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002528 fi
2529 uuid=no
2530 fi
2531fi
2532
Jeff Cody4f18b782013-10-30 10:44:39 -04002533if test "$vhdx" = "yes" ; then
2534 if test "$uuid" = "no" ; then
2535 error_exit "uuid required for VHDX support"
2536 fi
2537elif test "$vhdx" != "no" ; then
2538 if test "$uuid" = "yes" ; then
2539 vhdx=yes
2540 else
2541 vhdx=no
2542 fi
2543fi
2544
Stefan Weilee682d22009-10-01 20:10:37 +02002545##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002546# xfsctl() probe, used for raw-posix
2547if test "$xfs" != "no" ; then
2548 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002549#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002550#include <xfs/xfs.h>
2551int main(void)
2552{
2553 xfsctl(NULL, 0, 0, NULL);
2554 return 0;
2555}
2556EOF
2557 if compile_prog "" "" ; then
2558 xfs="yes"
2559 else
2560 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002561 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002562 fi
2563 xfs=no
2564 fi
2565fi
2566
2567##########################################
ths8a16d272008-07-19 09:56:24 +00002568# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002569if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002570 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002571 cat > $TMPC << EOF
2572#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002573int main(void)
2574{
2575 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002576 char s[] = "";
2577 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002578 return 0;
2579}
ths8a16d272008-07-19 09:56:24 +00002580EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002581 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002582 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002583 libs_softmmu="$vde_libs $libs_softmmu"
2584 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002585 else
2586 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002587 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002588 fi
2589 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002590 fi
ths8a16d272008-07-19 09:56:24 +00002591fi
2592
2593##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002594# netmap support probe
2595# Apart from looking for netmap headers, we make sure that the host API version
2596# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2597# a minor/major version number. Minor new features will be marked with values up
2598# to 15, and if something happens that requires a change to the backend we will
2599# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002600if test "$netmap" != "no" ; then
2601 cat > $TMPC << EOF
2602#include <inttypes.h>
2603#include <net/if.h>
2604#include <net/netmap.h>
2605#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002606#if (NETMAP_API < 11) || (NETMAP_API > 15)
2607#error
2608#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002609int main(void) { return 0; }
2610EOF
2611 if compile_prog "" "" ; then
2612 netmap=yes
2613 else
2614 if test "$netmap" = "yes" ; then
2615 feature_not_found "netmap"
2616 fi
2617 netmap=no
2618 fi
2619fi
2620
2621##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002622# libcap-ng library probe
2623if test "$cap_ng" != "no" ; then
2624 cap_libs="-lcap-ng"
2625 cat > $TMPC << EOF
2626#include <cap-ng.h>
2627int main(void)
2628{
2629 capng_capability_to_name(CAPNG_EFFECTIVE);
2630 return 0;
2631}
2632EOF
2633 if compile_prog "" "$cap_libs" ; then
2634 cap_ng=yes
2635 libs_tools="$cap_libs $libs_tools"
2636 else
2637 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002638 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002639 fi
2640 cap_ng=no
2641 fi
2642fi
2643
2644##########################################
malcc2de5c92008-06-28 19:13:06 +00002645# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002646
malcc2de5c92008-06-28 19:13:06 +00002647audio_drv_probe()
2648{
2649 drv=$1
2650 hdr=$2
2651 lib=$3
2652 exp=$4
2653 cfl=$5
2654 cat > $TMPC << EOF
2655#include <$hdr>
2656int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002657EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002658 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002659 :
2660 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002661 error_exit "$drv check failed" \
2662 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002663 fi
2664}
2665
malc2fa7d3b2008-07-29 12:58:44 +00002666audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002667for drv in $audio_drv_list; do
2668 case $drv in
2669 alsa)
2670 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002671 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002672 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002673 ;;
2674
malcb8e59f12008-07-02 21:03:08 +00002675 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002676 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2677 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2678 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002679 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002680 ;;
2681
Juan Quintela997e6902009-08-03 14:46:29 +02002682 coreaudio)
2683 libs_softmmu="-framework CoreAudio $libs_softmmu"
2684 ;;
2685
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002686 dsound)
2687 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002688 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002689 ;;
2690
2691 oss)
2692 libs_softmmu="$oss_lib $libs_softmmu"
2693 ;;
2694
2695 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002696 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2697 ;;
2698
malce4c63a62008-07-19 16:15:16 +00002699 *)
malc1c9b2a52008-07-19 16:57:30 +00002700 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002701 error_exit "Unknown driver '$drv' selected" \
2702 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002703 }
2704 ;;
malcc2de5c92008-06-28 19:13:06 +00002705 esac
2706done
ths8f28f3f2007-01-05 21:25:54 +00002707
balrog4d3b6f62008-02-10 16:33:14 +00002708##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002709# BrlAPI probe
2710
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002711if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002712 brlapi_libs="-lbrlapi"
2713 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002714#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002715#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002716int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2717EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002718 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002719 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002720 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002721 else
2722 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002723 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002724 fi
2725 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002726 fi
2727fi
aurel322e4d9fb2008-04-08 06:01:02 +00002728
2729##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002730# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002731if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002732 if test "$mingw32" = "yes" ; then
2733 curses_list="-lpdcurses"
2734 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002735 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002736 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002737 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002738 cat > $TMPC << EOF
2739#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002740int main(void) {
2741 const char *s = curses_version();
2742 resize_term(0, 0);
2743 return s != 0;
2744}
balrog4d3b6f62008-02-10 16:33:14 +00002745EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002746 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002747 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002748 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002749 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002750 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002751 libs_softmmu="$curses_lib $libs_softmmu"
2752 break
2753 fi
2754 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002755 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002756 if test "$curses_found" = "yes" ; then
2757 curses=yes
2758 else
2759 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002760 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002761 fi
2762 curses=no
2763 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002764fi
balrog4d3b6f62008-02-10 16:33:14 +00002765
blueswir1414f0da2008-08-15 18:20:52 +00002766##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002767# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002768if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002769 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002770 curlconfig="$pkg_config libcurl"
2771 else
2772 curlconfig=curl-config
2773 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002774 cat > $TMPC << EOF
2775#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002776int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002777EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002778 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2779 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002780 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002781 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002782 else
2783 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002784 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002785 fi
2786 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002787 fi
2788fi # test "$curl"
2789
2790##########################################
balrogfb599c92008-09-28 23:49:55 +00002791# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002792if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002793 cat > $TMPC << EOF
2794#include <bluetooth/bluetooth.h>
2795int main(void) { return bt_error(0); }
2796EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002797 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2798 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002799 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002800 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002801 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002802 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002803 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002804 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002805 fi
balroge820e3f2008-09-30 02:27:44 +00002806 bluez="no"
2807 fi
balrogfb599c92008-09-28 23:49:55 +00002808fi
2809
2810##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002811# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002812
John Snowf40685c2015-05-22 14:13:42 -04002813glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002814glib_modules=gthread-2.0
2815if test "$modules" = yes; then
2816 glib_modules="$glib_modules gmodule-2.0"
2817fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002818
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002819for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002820 if $pkg_config --atleast-version=$glib_req_ver $i; then
2821 glib_cflags=`$pkg_config --cflags $i`
2822 glib_libs=`$pkg_config --libs $i`
2823 CFLAGS="$glib_cflags $CFLAGS"
2824 LIBS="$glib_libs $LIBS"
2825 libs_qga="$glib_libs $libs_qga"
2826 else
2827 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2828 fi
2829done
2830
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002831# g_test_trap_subprocess added in 2.38. Used by some tests.
2832glib_subprocess=yes
2833if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2834 glib_subprocess=no
2835fi
2836
John Snowbbbf2e02015-03-25 18:57:38 -04002837# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2838cat > $TMPC << EOF
2839#include <glib.h>
2840int main(void) { return 0; }
2841EOF
2842if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2843 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2844 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2845 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2846 fi
2847fi
2848
Fam Zhenge26110c2014-02-10 14:48:57 +08002849##########################################
2850# SHA command probe for modules
2851if test "$modules" = yes; then
2852 shacmd_probe="sha1sum sha1 shasum"
2853 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002854 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002855 shacmd="$c"
2856 break
2857 fi
2858 done
2859 if test "$shacmd" = ""; then
2860 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2861 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002862fi
2863
2864##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002865# pixman support probe
2866
2867if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002868 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2869 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002870 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002871 pixman="system"
2872 else
2873 pixman="internal"
2874 fi
2875fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002876if test "$pixman" = "none"; then
2877 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002878 error_exit "pixman disabled but system emulation or tools build" \
2879 "enabled. You can turn off pixman only if you also" \
2880 "disable all system emulation targets and the tools" \
2881 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002882 fi
2883 pixman_cflags=
2884 pixman_libs=
2885elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002886 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002887 pixman_cflags=`$pkg_config --cflags pixman-1`
2888 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002889else
2890 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08002891 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01002892 " (1) Preferred: Install the pixman devel package (any recent" \
2893 " distro should have packages as Xorg needs pixman too)." \
2894 " (2) Fetch the pixman submodule, using:" \
2895 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002896 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01002897 mkdir -p pixman/pixman
2898 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2899 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002900fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002901
2902##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302903# libcap probe
2904
2905if test "$cap" != "no" ; then
2906 cat > $TMPC <<EOF
2907#include <stdio.h>
2908#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01002909int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302910EOF
2911 if compile_prog "" "-lcap" ; then
2912 cap=yes
2913 else
2914 cap=no
2915 fi
2916fi
2917
2918##########################################
aliguorie5d355d2009-04-24 18:03:15 +00002919# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04002920PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00002921
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02002922pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00002923cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00002924#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01002925static void *f(void *p) { return NULL; }
2926int main(void) {
2927 pthread_t thread;
2928 pthread_create(&thread, 0, f, 0);
2929 return 0;
2930}
blueswir1414f0da2008-08-15 18:20:52 +00002931EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02002932if compile_prog "" "" ; then
2933 pthread=yes
2934else
2935 for pthread_lib in $PTHREADLIBS_LIST; do
2936 if compile_prog "" "$pthread_lib" ; then
2937 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04002938 found=no
2939 for lib_entry in $LIBS; do
2940 if test "$lib_entry" = "$pthread_lib"; then
2941 found=yes
2942 break
2943 fi
2944 done
2945 if test "$found" = "no"; then
2946 LIBS="$pthread_lib $LIBS"
2947 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02002948 break
2949 fi
2950 done
2951fi
blueswir1414f0da2008-08-15 18:20:52 +00002952
Anthony Liguori4617e592009-08-25 17:21:56 -05002953if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002954 error_exit "pthread check failed" \
2955 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00002956fi
2957
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00002958# check for pthread_setname_np
2959pthread_setname_np=no
2960cat > $TMPC << EOF
2961#include <pthread.h>
2962
2963static void *f(void *p) { return NULL; }
2964int main(void)
2965{
2966 pthread_t thread;
2967 pthread_create(&thread, 0, f, 0);
2968 pthread_setname_np(thread, "QEMU");
2969 return 0;
2970}
2971EOF
2972if compile_prog "" "$pthread_lib" ; then
2973 pthread_setname_np=yes
2974fi
2975
aliguoribf9298b2008-12-05 20:05:26 +00002976##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002977# rbd probe
2978if test "$rbd" != "no" ; then
2979 cat > $TMPC <<EOF
2980#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07002981#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002982int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07002983 rados_t cluster;
2984 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002985 return 0;
2986}
2987EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07002988 rbd_libs="-lrbd -lrados"
2989 if compile_prog "" "$rbd_libs" ; then
2990 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002991 else
2992 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002993 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002994 fi
2995 rbd=no
2996 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002997fi
2998
2999##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003000# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003001min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003002if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003003 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003004 libssh2_cflags=`$pkg_config libssh2 --cflags`
3005 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003006 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003007 else
3008 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003009 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003010 fi
3011 libssh2=no
3012 fi
3013fi
3014
3015##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003016# libssh2_sftp_fsync probe
3017
3018if test "$libssh2" = "yes"; then
3019 cat > $TMPC <<EOF
3020#include <stdio.h>
3021#include <libssh2.h>
3022#include <libssh2_sftp.h>
3023int main(void) {
3024 LIBSSH2_SESSION *session;
3025 LIBSSH2_SFTP *sftp;
3026 LIBSSH2_SFTP_HANDLE *sftp_handle;
3027 session = libssh2_session_init ();
3028 sftp = libssh2_sftp_init (session);
3029 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3030 libssh2_sftp_fsync (sftp_handle);
3031 return 0;
3032}
3033EOF
3034 # libssh2_cflags/libssh2_libs defined in previous test.
3035 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3036 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3037 fi
3038fi
3039
3040##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003041# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003042
3043if test "$linux_aio" != "no" ; then
3044 cat > $TMPC <<EOF
3045#include <libaio.h>
3046#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003047#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003048int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3049EOF
3050 if compile_prog "" "-laio" ; then
3051 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003052 else
3053 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003054 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003055 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003056 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003057 fi
3058fi
3059
3060##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003061# TPM passthrough is only on x86 Linux
3062
3063if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3064 tpm_passthrough=$tpm
3065else
3066 tpm_passthrough=no
3067fi
3068
3069##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003070# attr probe
3071
3072if test "$attr" != "no" ; then
3073 cat > $TMPC <<EOF
3074#include <stdio.h>
3075#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003076#ifdef CONFIG_LIBATTR
3077#include <attr/xattr.h>
3078#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003079#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003080#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003081int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3082EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003083 if compile_prog "" "" ; then
3084 attr=yes
3085 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003086 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003087 attr=yes
3088 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003089 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003090 else
3091 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003092 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003093 fi
3094 attr=no
3095 fi
3096fi
3097
3098##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003099# iovec probe
3100cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003101#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003102#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003103#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003104int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003105EOF
3106iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003107if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003108 iovec=yes
3109fi
3110
aurel32f652e6a2008-12-16 10:43:48 +00003111##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003112# preadv probe
3113cat > $TMPC <<EOF
3114#include <sys/types.h>
3115#include <sys/uio.h>
3116#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003117int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003118EOF
3119preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003120if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003121 preadv=yes
3122fi
3123
3124##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003125# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003126# fdt support is mandatory for at least some target architectures,
3127# so insist on it if we're building those system emulators.
3128fdt_required=no
3129for target in $target_list; do
3130 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003131 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003132 fdt_required=yes
3133 ;;
3134 esac
3135done
3136
3137if test "$fdt_required" = "yes"; then
3138 if test "$fdt" = "no"; then
3139 error_exit "fdt disabled but some requested targets require it." \
3140 "You can turn off fdt only if you also disable all the system emulation" \
3141 "targets which need it (by specifying a cut down --target-list)."
3142 fi
3143 fdt=yes
3144fi
3145
Juan Quintela2df87df2009-08-12 18:29:54 +02003146if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003147 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003148 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003149 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003150 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003151#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003152#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003153int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003154EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003155 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003156 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003157 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003158 elif test -d ${source_path}/dtc/libfdt ; then
3159 # have submodule DTC - use it
3160 fdt=yes
3161 dtc_internal="yes"
3162 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003163 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003164 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3165 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003166 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003167 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3168 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3169 elif test "$fdt" = "yes" ; then
3170 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003171 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003172 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003173 " (2) Fetch the DTC submodule, using:" \
3174 " git submodule update --init dtc"
3175 else
3176 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003177 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003178 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003179 fi
3180fi
3181
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003182libs_softmmu="$libs_softmmu $fdt_libs"
3183
Michael Walle20ff0752011-03-07 23:32:39 +01003184##########################################
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003185# opengl probe (for sdl2, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003186
3187# GLX probe, used by milkymist-tmu2
3188# this is temporary, code will be switched to egl mid-term.
3189cat > $TMPC << EOF
3190#include <X11/Xlib.h>
3191#include <GL/gl.h>
3192#include <GL/glx.h>
3193int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3194EOF
3195if compile_prog "" "-lGL -lX11" ; then
3196 have_glx=yes
3197else
3198 have_glx=no
3199fi
3200
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003201if test "$opengl" != "no" ; then
Gerd Hoffmann7ced9e92015-01-06 15:40:00 +01003202 opengl_pkgs="gl glesv2 epoxy egl"
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003203 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003204 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3205 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003206 opengl=yes
Michael Walle20ff0752011-03-07 23:32:39 +01003207 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003208 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003209 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003210 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003211 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003212 opengl_libs=""
3213 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003214 fi
3215fi
3216
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003217
3218##########################################
3219# archipelago probe
3220if test "$archipelago" != "no" ; then
3221 cat > $TMPC <<EOF
3222#include <stdio.h>
3223#include <xseg/xseg.h>
3224#include <xseg/protocol.h>
3225int main(void) {
3226 xseg_initialize();
3227 return 0;
3228}
3229EOF
3230 archipelago_libs=-lxseg
3231 if compile_prog "" "$archipelago_libs"; then
3232 archipelago="yes"
3233 libs_tools="$archipelago_libs $libs_tools"
3234 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003235
3236 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3237 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3238 echo "license and therefore prevent redistribution."
3239 echo
3240 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003241 else
3242 if test "$archipelago" = "yes" ; then
3243 feature_not_found "Archipelago backend support" "Install libxseg devel"
3244 fi
3245 archipelago="no"
3246 fi
3247fi
3248
3249
Bharata B Raoeb100392012-09-24 14:42:45 +05303250##########################################
3251# glusterfs probe
3252if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003253 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303254 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003255 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3256 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003257 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303258 glusterfs_discard="yes"
3259 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303260 if $pkg_config --atleast-version=6 glusterfs-api; then
3261 glusterfs_zerofill="yes"
3262 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303263 else
3264 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003265 feature_not_found "GlusterFS backend support" \
3266 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303267 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303268 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303269 fi
3270fi
3271
aurel3239386ac2009-04-15 19:48:17 +00003272# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003273# emulator. This is done because older glibc versions don't
3274# have syscall stubs for these implemented. In that case we
3275# don't provide them even if kernel supports them.
3276#
3277inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003278cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003279#include <sys/inotify.h>
3280
3281int
3282main(void)
3283{
3284 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003285 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003286}
3287EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003288if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003289 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003290fi
3291
Riku Voipioc05c7a72010-03-26 15:25:11 +00003292inotify1=no
3293cat > $TMPC << EOF
3294#include <sys/inotify.h>
3295
3296int
3297main(void)
3298{
3299 /* try to start inotify */
3300 return inotify_init1(0);
3301}
3302EOF
3303if compile_prog "" "" ; then
3304 inotify1=yes
3305fi
3306
Riku Voipioebc996f2009-04-21 15:01:51 +03003307# check if utimensat and futimens are supported
3308utimens=no
3309cat > $TMPC << EOF
3310#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003311#include <stddef.h>
3312#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003313#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003314
3315int main(void)
3316{
3317 utimensat(AT_FDCWD, "foo", NULL, 0);
3318 futimens(0, NULL);
3319 return 0;
3320}
3321EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003322if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003323 utimens=yes
3324fi
3325
Riku Voipio099d6b02009-05-05 12:10:04 +03003326# check if pipe2 is there
3327pipe2=no
3328cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003329#include <unistd.h>
3330#include <fcntl.h>
3331
3332int main(void)
3333{
3334 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003335 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003336}
3337EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003338if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003339 pipe2=yes
3340fi
3341
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003342# check if accept4 is there
3343accept4=no
3344cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003345#include <sys/socket.h>
3346#include <stddef.h>
3347
3348int main(void)
3349{
3350 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3351 return 0;
3352}
3353EOF
3354if compile_prog "" "" ; then
3355 accept4=yes
3356fi
3357
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303358# check if tee/splice is there. vmsplice was added same time.
3359splice=no
3360cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303361#include <unistd.h>
3362#include <fcntl.h>
3363#include <limits.h>
3364
3365int main(void)
3366{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003367 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303368 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3369 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3370 return 0;
3371}
3372EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003373if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303374 splice=yes
3375fi
3376
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003377##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003378# libnuma probe
3379
3380if test "$numa" != "no" ; then
3381 cat > $TMPC << EOF
3382#include <numa.h>
3383int main(void) { return numa_available(); }
3384EOF
3385
3386 if compile_prog "" "-lnuma" ; then
3387 numa=yes
3388 libs_softmmu="-lnuma $libs_softmmu"
3389 else
3390 if test "$numa" = "yes" ; then
3391 feature_not_found "numa" "install numactl devel"
3392 fi
3393 numa=no
3394 fi
3395fi
3396
3397##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003398# tcmalloc probe
3399
3400if test "$tcmalloc" = "yes" ; then
3401 cat > $TMPC << EOF
3402#include <stdlib.h>
3403int main(void) { malloc(1); return 0; }
3404EOF
3405
3406 if compile_prog "" "-ltcmalloc" ; then
3407 LIBS="-ltcmalloc $LIBS"
3408 else
3409 feature_not_found "tcmalloc" "install gperftools devel"
3410 fi
3411fi
3412
3413##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003414# signalfd probe
3415signalfd="no"
3416cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003417#include <unistd.h>
3418#include <sys/syscall.h>
3419#include <signal.h>
3420int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3421EOF
3422
3423if compile_prog "" "" ; then
3424 signalfd=yes
3425fi
3426
Riku Voipioc2882b92009-08-12 15:08:24 +03003427# check if eventfd is supported
3428eventfd=no
3429cat > $TMPC << EOF
3430#include <sys/eventfd.h>
3431
3432int main(void)
3433{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003434 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003435}
3436EOF
3437if compile_prog "" "" ; then
3438 eventfd=yes
3439fi
3440
Ulrich Hechtd0927932009-09-17 20:22:14 +03003441# check for fallocate
3442fallocate=no
3443cat > $TMPC << EOF
3444#include <fcntl.h>
3445
3446int main(void)
3447{
3448 fallocate(0, 0, 0, 0);
3449 return 0;
3450}
3451EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003452if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003453 fallocate=yes
3454fi
3455
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003456# check for fallocate hole punching
3457fallocate_punch_hole=no
3458cat > $TMPC << EOF
3459#include <fcntl.h>
3460#include <linux/falloc.h>
3461
3462int main(void)
3463{
3464 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3465 return 0;
3466}
3467EOF
3468if compile_prog "" "" ; then
3469 fallocate_punch_hole=yes
3470fi
3471
Denis V. Lunevb953f072015-01-30 11:42:14 +03003472# check that fallocate supports range zeroing inside the file
3473fallocate_zero_range=no
3474cat > $TMPC << EOF
3475#include <fcntl.h>
3476#include <linux/falloc.h>
3477
3478int main(void)
3479{
3480 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3481 return 0;
3482}
3483EOF
3484if compile_prog "" "" ; then
3485 fallocate_zero_range=yes
3486fi
3487
Kevin Wolfed911432014-09-29 17:12:59 +02003488# check for posix_fallocate
3489posix_fallocate=no
3490cat > $TMPC << EOF
3491#include <fcntl.h>
3492
3493int main(void)
3494{
3495 posix_fallocate(0, 0, 0);
3496 return 0;
3497}
3498EOF
3499if compile_prog "" "" ; then
3500 posix_fallocate=yes
3501fi
3502
Peter Maydellc727f472011-01-06 11:05:10 +00003503# check for sync_file_range
3504sync_file_range=no
3505cat > $TMPC << EOF
3506#include <fcntl.h>
3507
3508int main(void)
3509{
3510 sync_file_range(0, 0, 0, 0);
3511 return 0;
3512}
3513EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003514if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003515 sync_file_range=yes
3516fi
3517
Peter Maydelldace20d2011-01-10 13:11:24 +00003518# check for linux/fiemap.h and FS_IOC_FIEMAP
3519fiemap=no
3520cat > $TMPC << EOF
3521#include <sys/ioctl.h>
3522#include <linux/fs.h>
3523#include <linux/fiemap.h>
3524
3525int main(void)
3526{
3527 ioctl(0, FS_IOC_FIEMAP, 0);
3528 return 0;
3529}
3530EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003531if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003532 fiemap=yes
3533fi
3534
Ulrich Hechtd0927932009-09-17 20:22:14 +03003535# check for dup3
3536dup3=no
3537cat > $TMPC << EOF
3538#include <unistd.h>
3539
3540int main(void)
3541{
3542 dup3(0, 0, 0);
3543 return 0;
3544}
3545EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003546if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003547 dup3=yes
3548fi
3549
Alex Bligh4e0c6522013-08-21 16:02:43 +01003550# check for ppoll support
3551ppoll=no
3552cat > $TMPC << EOF
3553#include <poll.h>
3554
3555int main(void)
3556{
3557 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3558 ppoll(&pfd, 1, 0, 0);
3559 return 0;
3560}
3561EOF
3562if compile_prog "" "" ; then
3563 ppoll=yes
3564fi
3565
Alex Blighcd758dd2013-08-21 16:02:44 +01003566# check for prctl(PR_SET_TIMERSLACK , ... ) support
3567prctl_pr_set_timerslack=no
3568cat > $TMPC << EOF
3569#include <sys/prctl.h>
3570
3571int main(void)
3572{
3573 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3574 return 0;
3575}
3576EOF
3577if compile_prog "" "" ; then
3578 prctl_pr_set_timerslack=yes
3579fi
3580
Peter Maydell3b6edd12011-02-15 18:35:05 +00003581# check for epoll support
3582epoll=no
3583cat > $TMPC << EOF
3584#include <sys/epoll.h>
3585
3586int main(void)
3587{
3588 epoll_create(0);
3589 return 0;
3590}
3591EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003592if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003593 epoll=yes
3594fi
3595
3596# epoll_create1 and epoll_pwait are later additions
3597# so we must check separately for their presence
3598epoll_create1=no
3599cat > $TMPC << EOF
3600#include <sys/epoll.h>
3601
3602int main(void)
3603{
Peter Maydell19e83f62011-04-26 16:56:40 +01003604 /* Note that we use epoll_create1 as a value, not as
3605 * a function being called. This is necessary so that on
3606 * old SPARC glibc versions where the function was present in
3607 * the library but not declared in the header file we will
3608 * fail the configure check. (Otherwise we will get a compiler
3609 * warning but not an error, and will proceed to fail the
3610 * qemu compile where we compile with -Werror.)
3611 */
Blue Swirlc075a722012-08-09 20:21:25 +00003612 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003613}
3614EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003615if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003616 epoll_create1=yes
3617fi
3618
3619epoll_pwait=no
3620cat > $TMPC << EOF
3621#include <sys/epoll.h>
3622
3623int main(void)
3624{
3625 epoll_pwait(0, 0, 0, 0, 0);
3626 return 0;
3627}
3628EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003629if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003630 epoll_pwait=yes
3631fi
3632
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003633# check for sendfile support
3634sendfile=no
3635cat > $TMPC << EOF
3636#include <sys/sendfile.h>
3637
3638int main(void)
3639{
3640 return sendfile(0, 0, 0, 0);
3641}
3642EOF
3643if compile_prog "" "" ; then
3644 sendfile=yes
3645fi
3646
Riku Voipio51834342014-06-22 11:25:42 +01003647# check for timerfd support (glibc 2.8 and newer)
3648timerfd=no
3649cat > $TMPC << EOF
3650#include <sys/timerfd.h>
3651
3652int main(void)
3653{
3654 return(timerfd_create(CLOCK_REALTIME, 0));
3655}
3656EOF
3657if compile_prog "" "" ; then
3658 timerfd=yes
3659fi
3660
Riku Voipio9af5c902014-08-12 15:58:57 +03003661# check for setns and unshare support
3662setns=no
3663cat > $TMPC << EOF
3664#include <sched.h>
3665
3666int main(void)
3667{
3668 int ret;
3669 ret = setns(0, 0);
3670 ret = unshare(0);
3671 return ret;
3672}
3673EOF
3674if compile_prog "" "" ; then
3675 setns=yes
3676fi
3677
pbrookcc8ae6d2006-04-23 17:57:59 +00003678# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003679if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003680 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003681 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003682 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003683 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003684 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003685 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003686 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003687 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003688fi
3689
Stefan Weilf514f412009-10-11 12:44:07 +02003690# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003691byteswap_h=no
3692cat > $TMPC << EOF
3693#include <byteswap.h>
3694int main(void) { return bswap_32(0); }
3695EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003696if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003697 byteswap_h=yes
3698fi
3699
Stefan Weil75f13592013-01-05 12:17:38 +01003700# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003701bswap_h=no
3702cat > $TMPC << EOF
3703#include <sys/endian.h>
3704#include <sys/types.h>
3705#include <machine/bswap.h>
3706int main(void) { return bswap32(0); }
3707EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003708if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003709 bswap_h=yes
3710fi
3711
aliguorida93a1f2008-12-12 20:02:52 +00003712##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003713# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003714if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003715 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003716 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003717 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3718 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003719 else
3720 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003721 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003722 fi
3723 libiscsi="no"
3724 fi
3725fi
3726
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003727##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003728# Do we need libm
3729cat > $TMPC << EOF
3730#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003731int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003732EOF
3733if compile_prog "" "" ; then
3734 :
3735elif compile_prog "" "-lm" ; then
3736 LIBS="-lm $LIBS"
3737 libs_qga="-lm $libs_qga"
3738else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003739 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003740fi
3741
3742##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003743# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003744# uClibc provides 2 versions of clock_gettime(), one with realtime
3745# support and one without. This means that the clock_gettime() don't
3746# need -lrt. We still need it for timer_create() so we check for this
3747# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003748cat > $TMPC <<EOF
3749#include <signal.h>
3750#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003751int main(void) {
3752 timer_create(CLOCK_REALTIME, NULL, NULL);
3753 return clock_gettime(CLOCK_REALTIME, NULL);
3754}
aliguorida93a1f2008-12-12 20:02:52 +00003755EOF
3756
Juan Quintela52166aa2009-08-03 14:46:03 +02003757if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003758 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003759# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003760elif compile_prog "" "$pthread_lib -lrt" ; then
3761 LIBS="$LIBS -lrt"
3762 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003763fi
3764
Blue Swirl31ff5042009-09-12 12:33:07 +00003765if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003766 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003767 libs_softmmu="-lutil $libs_softmmu"
3768fi
3769
Blue Swirlde5071c2009-09-12 09:58:46 +00003770##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003771# spice probe
3772if test "$spice" != "no" ; then
3773 cat > $TMPC << EOF
3774#include <spice.h>
3775int main(void) { spice_server_new(); return 0; }
3776EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003777 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3778 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003779 if $pkg_config --atleast-version=0.12.0 spice-server && \
3780 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003781 compile_prog "$spice_cflags" "$spice_libs" ; then
3782 spice="yes"
3783 libs_softmmu="$libs_softmmu $spice_libs"
3784 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003785 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3786 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003787 else
3788 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003789 feature_not_found "spice" \
3790 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003791 fi
3792 spice="no"
3793 fi
3794fi
3795
Robert Relyea111a38b2010-11-28 16:36:38 +02003796# check for libcacard for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003797smartcard_cflags=""
3798# TODO - what's the minimal nss version we support?
3799if test "$smartcard_nss" != "no"; then
3800 cat > $TMPC << EOF
Sergei Trofimovich5f01e062012-01-31 22:03:58 +03003801#include <pk11pub.h>
3802int main(void) { PK11_FreeSlot(0); return 0; }
3803EOF
Michael Tokarev9d171bd2014-05-08 16:48:27 +04003804 # FIXME: do not include $glib_* in here
3805 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3806 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3807 test_cflags="$nss_cflags"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003808 # The header files in nss < 3.13.3 have a bug which causes them to
3809 # emit a warning. If we're going to compile QEMU with -Werror, then
3810 # test that the headers don't have this bug. Otherwise we would pass
3811 # the configure test but fail to compile QEMU later.
3812 if test "$werror" = "yes"; then
3813 test_cflags="-Werror $test_cflags"
Robert Relyea111a38b2010-11-28 16:36:38 +02003814 fi
Paolo Bonzinib6fc6752012-12-20 20:40:35 +01003815 if test -n "$libtool" &&
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003816 $pkg_config --atleast-version=3.12.8 nss && \
Michael Tokarev9d171bd2014-05-08 16:48:27 +04003817 compile_prog "$test_cflags" "$nss_libs"; then
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003818 smartcard_nss="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003819 else
3820 if test "$smartcard_nss" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003821 feature_not_found "nss" "Install nss devel >= 3.12.8"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003822 fi
3823 smartcard_nss="no"
3824 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003825fi
3826
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003827# check for libusb
3828if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003829 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003830 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003831 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3832 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003833 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3834 libs_softmmu="$libs_softmmu $libusb_libs"
3835 else
3836 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003837 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003838 fi
3839 libusb="no"
3840 fi
3841fi
3842
Hans de Goede69354a82011-07-19 11:04:10 +02003843# check for usbredirparser for usb network redirection support
3844if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003845 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003846 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003847 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3848 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003849 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003850 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003851 else
3852 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003853 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003854 fi
3855 usb_redir="no"
3856 fi
3857fi
3858
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003859##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003860# check if we have VSS SDK headers for win
3861
3862if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3863 case "$vss_win32_sdk" in
3864 "") vss_win32_include="-I$source_path" ;;
3865 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3866 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3867 vss_win32_include="-I$source_path/.sdk/vss"
3868 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3869 ;;
3870 *) vss_win32_include="-I$vss_win32_sdk"
3871 esac
3872 cat > $TMPC << EOF
3873#define __MIDL_user_allocate_free_DEFINED__
3874#include <inc/win2003/vss.h>
3875int main(void) { return VSS_CTX_BACKUP; }
3876EOF
3877 if compile_prog "$vss_win32_include" "" ; then
3878 guest_agent_with_vss="yes"
3879 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3880 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05003881 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003882 else
3883 if test "$vss_win32_sdk" != "" ; then
3884 echo "ERROR: Please download and install Microsoft VSS SDK:"
3885 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3886 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3887 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3888 echo "ERROR: The headers are extracted in the directory \`inc'."
3889 feature_not_found "VSS support"
3890 fi
3891 guest_agent_with_vss="no"
3892 fi
3893fi
3894
3895##########################################
3896# lookup Windows platform SDK (if not specified)
3897# The SDK is needed only to build .tlb (type library) file of guest agent
3898# VSS provider from the source. It is usually unnecessary because the
3899# pre-compiled .tlb file is included.
3900
3901if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3902 if test -z "$win_sdk"; then
3903 programfiles="$PROGRAMFILES"
3904 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3905 if test -n "$programfiles"; then
3906 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3907 else
3908 feature_not_found "Windows SDK"
3909 fi
3910 elif test "$win_sdk" = "no"; then
3911 win_sdk=""
3912 fi
3913fi
3914
3915##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05003916# check if mingw environment provides a recent ntddscsi.h
3917if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3918 cat > $TMPC << EOF
3919#include <windows.h>
3920#include <ntddscsi.h>
3921int main(void) {
3922#if !defined(IOCTL_SCSI_GET_ADDRESS)
3923#error Missing required ioctl definitions
3924#endif
3925 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3926 return addr.Lun;
3927}
3928EOF
3929 if compile_prog "" "" ; then
3930 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05003931 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05003932 fi
3933fi
3934
3935##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003936# check if we have fdatasync
3937
3938fdatasync=no
3939cat > $TMPC << EOF
3940#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003941int main(void) {
3942#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3943return fdatasync(0);
3944#else
Stefan Weile172fe12012-04-06 21:33:20 +02003945#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003946#endif
3947}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003948EOF
3949if compile_prog "" "" ; then
3950 fdatasync=yes
3951fi
3952
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003953##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00003954# check if we have madvise
3955
3956madvise=no
3957cat > $TMPC << EOF
3958#include <sys/types.h>
3959#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003960#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003961int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3962EOF
3963if compile_prog "" "" ; then
3964 madvise=yes
3965fi
3966
3967##########################################
3968# check if we have posix_madvise
3969
3970posix_madvise=no
3971cat > $TMPC << EOF
3972#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003973#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003974int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3975EOF
3976if compile_prog "" "" ; then
3977 posix_madvise=yes
3978fi
3979
3980##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10003981# check if we have usable SIGEV_THREAD_ID
3982
3983sigev_thread_id=no
3984cat > $TMPC << EOF
3985#include <signal.h>
3986int main(void) {
3987 struct sigevent ev;
3988 ev.sigev_notify = SIGEV_THREAD_ID;
3989 ev._sigev_un._tid = 0;
3990 asm volatile("" : : "g"(&ev));
3991 return 0;
3992}
3993EOF
3994if compile_prog "" "" ; then
3995 sigev_thread_id=yes
3996fi
3997
3998##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003999# check if trace backend exists
4000
Lluís Vilanova5b808272014-05-27 15:02:14 +02004001$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004002if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004003 error_exit "invalid trace backends" \
4004 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004005fi
4006
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004007##########################################
4008# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004009if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004010 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004011#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004012int main(void) { return 0; }
4013EOF
4014 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004015 if $pkg_config lttng-ust --exists; then
4016 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4017 else
4018 lttng_ust_libs="-llttng-ust"
4019 fi
4020 if $pkg_config liburcu-bp --exists; then
4021 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4022 else
4023 urcu_bp_libs="-lurcu-bp"
4024 fi
4025
4026 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4027 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004028 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004029 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004030 fi
4031fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004032
4033##########################################
4034# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004035if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004036 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004037 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004038 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004039 trace_backend_stap="no"
4040 if has 'stap' ; then
4041 trace_backend_stap="yes"
4042 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004043fi
4044
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004045##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004046# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304047
Peter Maydell7c2acc72013-04-08 12:11:27 +01004048# We prefer ucontext, but it's not always possible. The fallback
4049# is sigcontext. gthread is not selectable except explicitly, because
4050# it is not functional enough to run QEMU proper. (It is occasionally
4051# useful for debugging purposes.) On Windows the only valid backend
4052# is the Windows-specific one.
4053
4054ucontext_works=no
4055if test "$darwin" != "yes"; then
4056 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304057#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004058#ifdef __stub_makecontext
4059#error Ignoring glibc stub makecontext which will always fail
4060#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004061int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304062EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004063 if compile_prog "" "" ; then
4064 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304065 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004066fi
4067
4068if test "$coroutine" = ""; then
4069 if test "$mingw32" = "yes"; then
4070 coroutine=win32
4071 elif test "$ucontext_works" = "yes"; then
4072 coroutine=ucontext
4073 else
4074 coroutine=sigaltstack
4075 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004076else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004077 case $coroutine in
4078 windows)
4079 if test "$mingw32" != "yes"; then
4080 error_exit "'windows' coroutine backend only valid for Windows"
4081 fi
4082 # Unfortunately the user visible backend name doesn't match the
4083 # coroutine-*.c filename for this case, so we have to adjust it here.
4084 coroutine=win32
4085 ;;
4086 ucontext)
4087 if test "$ucontext_works" != "yes"; then
4088 feature_not_found "ucontext"
4089 fi
4090 ;;
4091 gthread|sigaltstack)
4092 if test "$mingw32" = "yes"; then
4093 error_exit "only the 'windows' coroutine backend is valid for Windows"
4094 fi
4095 ;;
4096 *)
4097 error_exit "unknown coroutine backend $coroutine"
4098 ;;
4099 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304100fi
4101
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004102if test "$coroutine_pool" = ""; then
4103 if test "$coroutine" = "gthread"; then
4104 coroutine_pool=no
4105 else
4106 coroutine_pool=yes
4107 fi
4108fi
4109if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4110 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4111fi
4112
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304113##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304114# check if we have open_by_handle_at
4115
Stefan Weil4e1797f2012-06-18 22:11:06 +02004116open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304117cat > $TMPC << EOF
4118#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004119#if !defined(AT_EMPTY_PATH)
4120# error missing definition
4121#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004122int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004123#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304124EOF
4125if compile_prog "" "" ; then
4126 open_by_handle_at=yes
4127fi
4128
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304129########################################
4130# check if we have linux/magic.h
4131
4132linux_magic_h=no
4133cat > $TMPC << EOF
4134#include <linux/magic.h>
4135int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004136 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304137}
4138EOF
4139if compile_prog "" "" ; then
4140 linux_magic_h=yes
4141fi
4142
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004143########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004144# check whether we can disable warning option with a pragma (this is needed
4145# to silence warnings in the headers of some versions of external libraries).
4146# This test has to be compiled with -Werror as otherwise an unknown pragma is
4147# only a warning.
4148#
4149# If we can't selectively disable warning in the code, disable -Werror so that
4150# the build doesn't fail anyway.
4151
Peter Maydell06d71fa2012-07-30 16:13:07 +01004152pragma_disable_unused_but_set=no
4153cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004154#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004155#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004156#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004157#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004158
Peter Maydell06d71fa2012-07-30 16:13:07 +01004159int main(void) {
4160 return 0;
4161}
4162EOF
4163if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004164 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004165else
4166 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004167fi
4168
4169########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004170# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004171
4172valgrind_h=no
4173cat > $TMPC << EOF
4174#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004175int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004176 return 0;
4177}
4178EOF
4179if compile_prog "" "" ; then
4180 valgrind_h=yes
4181fi
4182
4183########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004184# check if environ is declared
4185
4186has_environ=no
4187cat > $TMPC << EOF
4188#include <unistd.h>
4189int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004190 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004191 return 0;
4192}
4193EOF
4194if compile_prog "" "" ; then
4195 has_environ=yes
4196fi
4197
Richard Henderson76a347e2012-12-28 14:17:02 -08004198########################################
4199# check if cpuid.h is usable.
4200
4201cpuid_h=no
4202cat > $TMPC << EOF
4203#include <cpuid.h>
4204int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004205 unsigned a, b, c, d;
4206 int max = __get_cpuid_max(0, 0);
4207
4208 if (max >= 1) {
4209 __cpuid(1, a, b, c, d);
4210 }
4211
4212 if (max >= 7) {
4213 __cpuid_count(7, 0, a, b, c, d);
4214 }
4215
4216 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004217}
4218EOF
4219if compile_prog "" "" ; then
4220 cpuid_h=yes
4221fi
4222
Richard Hendersonf5401662013-02-16 12:46:59 -08004223########################################
4224# check if __[u]int128_t is usable.
4225
4226int128=no
4227cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004228#if defined(__clang_major__) && defined(__clang_minor__)
4229# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4230# error __int128_t does not work in CLANG before 3.2
4231# endif
4232#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004233__int128_t a;
4234__uint128_t b;
4235int main (void) {
4236 a = a + b;
4237 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004238 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004239 return 0;
4240}
4241EOF
4242if compile_prog "" "" ; then
4243 int128=yes
4244fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004245
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004246########################################
4247# check if getauxval is available.
4248
4249getauxval=no
4250cat > $TMPC << EOF
4251#include <sys/auxv.h>
4252int main(void) {
4253 return getauxval(AT_HWCAP) == 0;
4254}
4255EOF
4256if compile_prog "" "" ; then
4257 getauxval=yes
4258fi
4259
John Snowfd0e6052015-03-25 18:57:39 -04004260########################################
4261# check if ccache is interfering with
4262# semantic analysis of macros
4263
4264ccache_cpp2=no
4265cat > $TMPC << EOF
4266static const int Z = 1;
4267#define fn() ({ Z; })
4268#define TAUT(X) ((X) == Z)
4269#define PAREN(X, Y) (X == Y)
4270#define ID(X) (X)
4271int main(int argc, char *argv[])
4272{
4273 int x = 0, y = 0;
4274 x = ID(x);
4275 x = fn();
4276 fn();
4277 if (PAREN(x, y)) return 0;
4278 if (TAUT(Z)) return 0;
4279 return 0;
4280}
4281EOF
4282
4283if ! compile_object "-Werror"; then
4284 ccache_cpp2=yes
4285fi
4286
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304287##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004288# End of CC checks
4289# After here, no more $cc or $ld runs
4290
Blue Swirl1d728c32012-05-01 18:45:39 +00004291if test "$gcov" = "yes" ; then
4292 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4293 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4294elif test "$debug" = "no" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004295 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004296fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004297
Peter Lieven6542aa92014-02-03 10:26:13 +01004298##########################################
4299# Do we have libnfs
4300if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004301 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004302 libnfs="yes"
4303 libnfs_libs=$($pkg_config --libs libnfs)
4304 LIBS="$LIBS $libnfs_libs"
4305 else
4306 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004307 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004308 fi
4309 libnfs="no"
4310 fi
4311fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004312
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004313# Disable zero malloc errors for official releases unless explicitly told to
4314# enable/disable
4315if test -z "$zero_malloc" ; then
4316 if test "$z_version" = "50" ; then
4317 zero_malloc="no"
4318 else
4319 zero_malloc="yes"
4320 fi
4321fi
4322
Peter Maydell6ca026c2012-07-18 15:10:18 +01004323# Now we've finished running tests it's OK to add -Werror to the compiler flags
4324if test "$werror" = "yes"; then
4325 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4326fi
4327
Juan Quintelae86ecd42009-08-03 14:45:59 +02004328if test "$solaris" = "no" ; then
4329 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004330 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004331 fi
4332fi
4333
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004334# test if pod2man has --utf8 option
4335if pod2man --help | grep -q utf8; then
4336 POD2MAN="pod2man --utf8"
4337else
4338 POD2MAN="pod2man"
4339fi
4340
Blue Swirl952afb72010-09-19 08:36:34 +00004341# Use ASLR, no-SEH and DEP if available
4342if test "$mingw32" = "yes" ; then
4343 for flag in --dynamicbase --no-seh --nxcompat; do
4344 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4345 LDFLAGS="-Wl,$flag $LDFLAGS"
4346 fi
4347 done
4348fi
4349
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004350qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004351qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004352qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004353qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004354
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004355tools=""
4356if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004357 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004358 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4359 tools="qemu-nbd\$(EXESUF) $tools"
4360 fi
4361fi
4362if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304363 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004364 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4365 virtfs=yes
4366 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4367 else
4368 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004369 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304370 fi
Andreas Färber17500372012-05-01 01:12:03 +02004371 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004372 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304373 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004374fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004375
4376# Probe for guest agent support/options
4377
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004378if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004379 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Roth48ff7a62011-07-20 15:19:37 -05004380 tools="qemu-ga\$(EXESUF) $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004381 guest_agent=yes
4382 elif [ "$guest_agent" != yes ]; then
4383 guest_agent=no
4384 else
4385 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004386 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004387fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004388
Michael Roth9d6bc272015-08-26 10:49:13 -05004389# Guest agent Window MSI package
4390
4391if test "$guest_agent" != yes; then
4392 if test "$guest_agent_msi" = yes; then
4393 error_exit "MSI guest agent package requires guest agent enabled"
4394 fi
4395 guest_agent_msi=no
4396elif test "$mingw32" != "yes"; then
4397 if test "$guest_agent_msi" = "yes"; then
4398 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4399 fi
4400 guest_agent_msi=no
4401elif ! has wixl; then
4402 if test "$guest_agent_msi" = "yes"; then
4403 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4404 fi
4405 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004406else
4407 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4408 # disabled explicitly
4409 if test "$guest_agent_msi" != "no"; then
4410 guest_agent_msi=yes
4411 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004412fi
4413
Michael Roth1a349042015-08-26 11:14:31 -05004414if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004415 if test "$guest_agent_with_vss" = "yes"; then
4416 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4417 fi
4418
4419 if test "$QEMU_GA_MANUFACTURER" = ""; then
4420 QEMU_GA_MANUFACTURER=QEMU
4421 fi
4422
4423 if test "$QEMU_GA_DISTRO" = ""; then
4424 QEMU_GA_DISTRO=Linux
4425 fi
4426
4427 if test "$QEMU_GA_VERSION" = ""; then
4428 QEMU_GA_VERSION=`cat $source_path/VERSION`
4429 fi
4430
4431 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4432
4433 case "$cpu" in
4434 x86_64)
4435 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4436 ;;
4437 i386)
4438 QEMU_GA_MSI_ARCH="-D Arch=32"
4439 ;;
4440 *)
4441 error_exit "CPU $cpu not supported for building installation package"
4442 ;;
4443 esac
4444fi
4445
Paolo Bonzinica35f782010-05-26 16:08:29 +02004446# Mac OS X ships with a broken assembler
4447roms=
4448if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4449 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4450 "$softmmu" = yes ; then
4451 roms="optionrom"
4452fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004453if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004454 roms="$roms spapr-rtas"
4455fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004456
Christian Borntraeger9933c302013-04-23 01:23:03 +00004457if test "$cpu" = "s390x" ; then
4458 roms="$roms s390-ccw"
4459fi
4460
Richard Henderson964c6fa2013-06-21 19:10:16 -07004461# Probe for the need for relocating the user-only binary.
4462if test "$pie" = "no" ; then
4463 textseg_addr=
4464 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004465 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4466 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004467 textseg_addr=0x60000000
4468 ;;
4469 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004470 # A 256M aligned address, high in the address space, with enough
4471 # room for the code_gen_buffer above it before the stack.
4472 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004473 ;;
4474 esac
4475 if [ -n "$textseg_addr" ]; then
4476 cat > $TMPC <<EOF
4477 int main(void) { return 0; }
4478EOF
4479 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4480 if ! compile_prog "" "$textseg_ldflags"; then
4481 # In case ld does not support -Ttext-segment, edit the default linker
4482 # script via sed to set the .text start addr. This is needed on FreeBSD
4483 # at least.
4484 $ld --verbose | sed \
4485 -e '1,/==================================================/d' \
4486 -e '/==================================================/,$d' \
4487 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4488 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4489 textseg_ldflags="-Wl,-T../config-host.ld"
4490 fi
4491 fi
4492fi
4493
Jan Kiszka50e12062014-10-02 10:03:55 +02004494# prepend pixman and ftd flags after all config tests are done
4495QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4496libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004497
bellard43ce4df2003-06-09 19:53:12 +00004498echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004499echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004500echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004501echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004502echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004503echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004504echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004505echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004506if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004507echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004508echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004509echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004510else
4511echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004512echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004513fi
bellard5a671352003-10-01 00:13:48 +00004514echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004515echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004516echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004517echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004518echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004519echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004520echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004521echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004522echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004523echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004524echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004525echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004526if test "$slirp" = "yes" ; then
4527 echo "smbd $smbd"
4528fi
Fam Zheng17969262014-02-10 14:48:56 +08004529echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004530echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004531echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004532echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004533echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004534echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004535echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004536echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004537echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004538echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004539if test "$darwin" = "yes" ; then
4540 echo "Cocoa support $cocoa"
4541fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004542echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004543echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004544echo "GTK support $gtk"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004545echo "GNUTLS support $gnutls"
4546echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004547echo "GNUTLS gcrypt $gnutls_gcrypt"
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004548echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004549echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004550echo "curses support $curses"
Alexander Graf769ce762009-05-11 17:41:42 +02004551echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004552echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004553echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004554echo "Block whitelist (rw) $block_drv_rw_whitelist"
4555echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304556echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004557echo "VNC support $vnc"
4558if test "$vnc" = "yes" ; then
4559 echo "VNC TLS support $vnc_tls"
4560 echo "VNC SASL support $vnc_sasl"
4561 echo "VNC JPEG support $vnc_jpeg"
4562 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004563fi
blueswir131422552007-04-16 18:27:06 +00004564if test -n "$sparc_cpu"; then
4565 echo "Target Sparc Arch $sparc_cpu"
4566fi
aliguorie37630c2009-04-22 15:19:10 +00004567echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004568if test "$xen" = "yes" ; then
4569 echo "xen ctrl version $xen_ctrl_version"
4570fi
aurel322e4d9fb2008-04-08 06:01:02 +00004571echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004572echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004573echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004574echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004575echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004576echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004577echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004578echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004579echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004580echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004581echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004582echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004583echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004584echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004585echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004586echo "madvise $madvise"
4587echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004588echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004589echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004590echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004591echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004592echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004593echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004594if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004595echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004596fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004597if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004598echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004599else
4600echo "spice support $spice"
4601fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004602echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004603echo "xfsctl support $xfs"
Robert Relyea111a38b2010-11-28 16:36:38 +02004604echo "nss used $smartcard_nss"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004605echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004606echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004607echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004608echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004609echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004610echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004611echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004612echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004613echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004614echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004615echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004616echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304617echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004618echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004619echo "gcov $gcov_tool"
4620echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004621echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004622echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004623echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004624echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004625echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004626echo "lzo support $lzo"
4627echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004628echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004629echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004630echo "tcmalloc support $tcmalloc"
bellard67b915a2004-03-31 23:37:16 +00004631
Stefan Weil1ba16962011-07-29 22:40:45 +02004632if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004633echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004634fi
bellard97a847b2003-08-10 21:36:04 +00004635
Juan Quintela98ec69a2009-07-16 18:34:18 +02004636config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004637
Stefan Weildbd99ae2013-01-01 18:33:44 +01004638echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4639
Juan Quintela98ec69a2009-07-16 18:34:18 +02004640echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004641echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004642
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004643echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004644echo "prefix=$prefix" >> $config_host_mak
4645echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004646echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004647echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004648echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004649echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004650echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004651echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004652echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4653echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004654echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004655if test "$mingw32" = "no" ; then
4656 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4657fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004658echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004659echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4660echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004661echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004662echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004663
Juan Quintela98ec69a2009-07-16 18:34:18 +02004664echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004665
aurel32f8393942009-04-13 18:45:38 +00004666if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004667 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004668fi
aliguori1625af82009-04-05 17:41:02 +00004669if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004670 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004671fi
bellard7d132992003-03-06 23:23:54 +00004672if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004673 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004674fi
bellard67b915a2004-03-31 23:37:16 +00004675if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004676 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004677 rc_version=`cat $source_path/VERSION`
4678 version_major=${rc_version%%.*}
4679 rc_version=${rc_version#*.}
4680 version_minor=${rc_version%%.*}
4681 rc_version=${rc_version#*.}
4682 version_subminor=${rc_version%%.*}
4683 version_micro=0
4684 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4685 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004686 if test "$guest_agent_with_vss" = "yes" ; then
4687 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004688 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004689 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4690 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004691 if test "$guest_agent_ntddscsi" = "yes" ; then
4692 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4693 fi
Michael Roth1a349042015-08-26 11:14:31 -05004694 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004695 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4696 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4697 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4698 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4699 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4700 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4701 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4702 fi
pbrook210fa552007-02-27 21:04:49 +00004703else
Juan Quintela35f4df22009-07-27 16:13:07 +02004704 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004705fi
blueswir1128ab2f2008-08-15 18:33:42 +00004706
Mark McLoughlindffcb712009-10-22 17:49:11 +01004707if test "$linux" = "yes" ; then
4708 echo "CONFIG_LINUX=y" >> $config_host_mak
4709fi
4710
bellard83fb7ad2004-07-05 21:25:26 +00004711if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004712 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004713fi
malcb29fe3e2008-11-18 01:42:22 +00004714
4715if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004716 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004717fi
4718
bellardec530c82006-04-25 22:36:06 +00004719if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004720 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004721 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004722 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004723 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004724 fi
bellardec530c82006-04-25 22:36:06 +00004725fi
Andreas Färber179cf402010-09-20 00:50:43 +02004726if test "$haiku" = "yes" ; then
4727 echo "CONFIG_HAIKU=y" >> $config_host_mak
4728fi
bellard97a847b2003-08-10 21:36:04 +00004729if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004730 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004731fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004732if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004733 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004734fi
bellardc20709a2004-04-21 23:27:19 +00004735if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004736 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004737 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004738fi
ths8a16d272008-07-19 09:56:24 +00004739if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004740 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004741fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004742if test "$netmap" = "yes" ; then
4743 echo "CONFIG_NETMAP=y" >> $config_host_mak
4744fi
Gonglei015a33b2014-07-01 20:58:08 +08004745if test "$l2tpv3" = "yes" ; then
4746 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4747fi
Corey Bryant47e98652012-01-26 09:42:26 -05004748if test "$cap_ng" = "yes" ; then
4749 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4750fi
Juan Quintela2358a492009-07-27 16:13:25 +02004751echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004752for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004753 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004754 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004755done
Juan Quintela67f86e82009-08-03 14:46:59 +02004756if test "$audio_pt_int" = "yes" ; then
4757 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4758fi
malcd5631632009-10-10 01:13:41 +04004759if test "$audio_win_int" = "yes" ; then
4760 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4761fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004762echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4763echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004764if test "$vnc" = "yes" ; then
4765 echo "CONFIG_VNC=y" >> $config_host_mak
4766fi
ths8d5d2d42007-08-25 01:37:51 +00004767if test "$vnc_tls" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004768 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
ths8d5d2d42007-08-25 01:37:51 +00004769fi
aliguori2f9606b2009-03-06 20:27:28 +00004770if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004771 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004772fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004773if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004774 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004775fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004776if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004777 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004778fi
aliguori76655d62009-03-06 20:27:37 +00004779if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004780 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004781fi
Stefan Weilee682d22009-10-01 20:10:37 +02004782if test "$uuid" = "yes" ; then
4783 echo "CONFIG_UUID=y" >> $config_host_mak
4784fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004785if test "$xfs" = "yes" ; then
4786 echo "CONFIG_XFS=y" >> $config_host_mak
4787fi
pbrookb1a550a2006-04-16 13:28:56 +00004788qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004789echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004790echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004791echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004792echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004793if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004794 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004795fi
Fam Zheng17969262014-02-10 14:48:56 +08004796if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004797 # $shacmd can generate a hash started with digit, which the compiler doesn't
4798 # like as an symbol. So prefix it with an underscore
4799 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004800 echo "CONFIG_MODULES=y" >> $config_host_mak
4801fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004802if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004803 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004804 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004805 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004806fi
4807if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004808 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004809fi
4810if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004811 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004812fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004813if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004814 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004815fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004816if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004817 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004818fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004819if test "$accept4" = "yes" ; then
4820 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4821fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304822if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004823 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304824fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004825if test "$eventfd" = "yes" ; then
4826 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4827fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004828if test "$fallocate" = "yes" ; then
4829 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4830fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004831if test "$fallocate_punch_hole" = "yes" ; then
4832 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4833fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004834if test "$fallocate_zero_range" = "yes" ; then
4835 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4836fi
Kevin Wolfed911432014-09-29 17:12:59 +02004837if test "$posix_fallocate" = "yes" ; then
4838 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4839fi
Peter Maydellc727f472011-01-06 11:05:10 +00004840if test "$sync_file_range" = "yes" ; then
4841 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4842fi
Peter Maydelldace20d2011-01-10 13:11:24 +00004843if test "$fiemap" = "yes" ; then
4844 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4845fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004846if test "$dup3" = "yes" ; then
4847 echo "CONFIG_DUP3=y" >> $config_host_mak
4848fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01004849if test "$ppoll" = "yes" ; then
4850 echo "CONFIG_PPOLL=y" >> $config_host_mak
4851fi
Alex Blighcd758dd2013-08-21 16:02:44 +01004852if test "$prctl_pr_set_timerslack" = "yes" ; then
4853 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4854fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00004855if test "$epoll" = "yes" ; then
4856 echo "CONFIG_EPOLL=y" >> $config_host_mak
4857fi
4858if test "$epoll_create1" = "yes" ; then
4859 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4860fi
4861if test "$epoll_pwait" = "yes" ; then
4862 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4863fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004864if test "$sendfile" = "yes" ; then
4865 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4866fi
Riku Voipio51834342014-06-22 11:25:42 +01004867if test "$timerfd" = "yes" ; then
4868 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4869fi
Riku Voipio9af5c902014-08-12 15:58:57 +03004870if test "$setns" = "yes" ; then
4871 echo "CONFIG_SETNS=y" >> $config_host_mak
4872fi
aurel323b3f24a2009-04-15 16:12:13 +00004873if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004874 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00004875fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00004876if test "$inotify1" = "yes" ; then
4877 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4878fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004879if test "$byteswap_h" = "yes" ; then
4880 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4881fi
4882if test "$bswap_h" = "yes" ; then
4883 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4884fi
Alexander Graf769ce762009-05-11 17:41:42 +02004885if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004886 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02004887 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004888 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02004889fi
aurel322e4d9fb2008-04-08 06:01:02 +00004890if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004891 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00004892fi
balrogfb599c92008-09-28 23:49:55 +00004893if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004894 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02004895 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00004896fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01004897if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03004898 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4899fi
Anthony Liguorie18df142011-07-19 14:50:29 -05004900echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004901if test "$gtk" = "yes" ; then
4902 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004903 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004904 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004905fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004906if test "$gnutls" = "yes" ; then
4907 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4908fi
4909if test "$gnutls_hash" = "yes" ; then
4910 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4911fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004912if test "$gnutls_gcrypt" = "yes" ; then
4913 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4914fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004915if test "$gnutls_nettle" = "yes" ; then
4916 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004917 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004918fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004919if test "$vte" = "yes" ; then
4920 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004921 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4922fi
aliguorie37630c2009-04-22 15:19:10 +00004923if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02004924 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00004925 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00004926fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004927if test "$linux_aio" = "yes" ; then
4928 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4929fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004930if test "$attr" = "yes" ; then
4931 echo "CONFIG_ATTR=y" >> $config_host_mak
4932fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02004933if test "$libattr" = "yes" ; then
4934 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4935fi
Meador Inge983eef52012-02-24 14:00:42 +05304936if test "$virtfs" = "yes" ; then
4937 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004938fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004939if test "$vhost_scsi" = "yes" ; then
4940 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4941fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03004942if test "$vhost_net" = "yes" ; then
4943 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4944fi
ths77755342008-11-27 15:45:16 +00004945if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004946 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00004947fi
aliguoribf9298b2008-12-05 20:05:26 +00004948if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004949 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00004950fi
aliguoriceb42de2009-04-07 18:43:28 +00004951if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004952 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00004953fi
aurel32f652e6a2008-12-16 10:43:48 +00004954if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02004955 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00004956fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004957if test "$signalfd" = "yes" ; then
4958 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4959fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02004960if test "$tcg_interpreter" = "yes" ; then
4961 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4962fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004963if test "$fdatasync" = "yes" ; then
4964 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4965fi
Andreas Färbere78815a2010-09-25 11:26:05 +00004966if test "$madvise" = "yes" ; then
4967 echo "CONFIG_MADVISE=y" >> $config_host_mak
4968fi
4969if test "$posix_madvise" = "yes" ; then
4970 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4971fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10004972if test "$sigev_thread_id" = "yes" ; then
4973 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4974fi
bellard97a847b2003-08-10 21:36:04 +00004975
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004976if test "$spice" = "yes" ; then
4977 echo "CONFIG_SPICE=y" >> $config_host_mak
4978fi
4979
Robert Relyea111a38b2010-11-28 16:36:38 +02004980if test "$smartcard_nss" = "yes" ; then
4981 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
Michael Tokarev9d171bd2014-05-08 16:48:27 +04004982 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4983 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02004984fi
4985
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004986if test "$libusb" = "yes" ; then
4987 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4988fi
4989
Hans de Goede69354a82011-07-19 11:04:10 +02004990if test "$usb_redir" = "yes" ; then
4991 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4992fi
4993
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004994if test "$opengl" = "yes" ; then
4995 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06004996 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004997 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01004998fi
4999
qiaonuohan607dacd2014-02-18 14:11:30 +08005000if test "$lzo" = "yes" ; then
5001 echo "CONFIG_LZO=y" >> $config_host_mak
5002fi
5003
5004if test "$snappy" = "yes" ; then
5005 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5006fi
5007
Peter Wu6b383c02015-01-06 18:48:14 +01005008if test "$bzip2" = "yes" ; then
5009 echo "CONFIG_BZIP2=y" >> $config_host_mak
5010 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5011fi
5012
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005013if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005014 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005015 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5016 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005017fi
5018
Peter Lieven6542aa92014-02-03 10:26:13 +01005019if test "$libnfs" = "yes" ; then
5020 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5021fi
5022
Eduardo Otubof7945732012-08-14 18:44:05 -03005023if test "$seccomp" = "yes"; then
5024 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5025fi
5026
bellard83fb7ad2004-07-05 21:25:26 +00005027# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005028if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005029 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005030fi
5031
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005032if test "$zero_malloc" = "yes" ; then
5033 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5034fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005035if test "$qom_cast_debug" = "yes" ; then
5036 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5037fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005038if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005039 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005040 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5041 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005042fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005043
Peter Maydell7c2acc72013-04-08 12:11:27 +01005044echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005045if test "$coroutine_pool" = "yes" ; then
5046 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5047else
5048 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5049fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305050
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305051if test "$open_by_handle_at" = "yes" ; then
5052 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5053fi
5054
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305055if test "$linux_magic_h" = "yes" ; then
5056 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5057fi
5058
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005059if test "$pragma_diagnostic_available" = "yes" ; then
5060 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005061fi
5062
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005063if test "$valgrind_h" = "yes" ; then
5064 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5065fi
5066
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005067if test "$has_environ" = "yes" ; then
5068 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5069fi
5070
Richard Henderson76a347e2012-12-28 14:17:02 -08005071if test "$cpuid_h" = "yes" ; then
5072 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5073fi
5074
Richard Hendersonf5401662013-02-16 12:46:59 -08005075if test "$int128" = "yes" ; then
5076 echo "CONFIG_INT128=y" >> $config_host_mak
5077fi
5078
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005079if test "$getauxval" = "yes" ; then
5080 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5081fi
5082
Bharata B Raoeb100392012-09-24 14:42:45 +05305083if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005084 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005085 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5086 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305087fi
5088
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305089if test "$glusterfs_discard" = "yes" ; then
5090 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5091fi
5092
Bharata B Rao7c815372013-12-21 14:51:25 +05305093if test "$glusterfs_zerofill" = "yes" ; then
5094 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5095fi
5096
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005097if test "$archipelago" = "yes" ; then
5098 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5099 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5100fi
5101
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005102if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005103 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005104 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5105 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005106fi
5107
Jeff Cody4f18b782013-10-30 10:44:39 -04005108if test "$vhdx" = "yes" ; then
5109 echo "CONFIG_VHDX=y" >> $config_host_mak
5110fi
5111
blueswir168063642008-11-22 21:03:55 +00005112# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005113if test "$libusb" = "yes"; then
5114 echo "HOST_USB=libusb legacy" >> $config_host_mak
5115else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005116 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005117fi
blueswir168063642008-11-22 21:03:55 +00005118
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005119# TPM passthrough support?
5120if test "$tpm" = "yes"; then
5121 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5122 if test "$tpm_passthrough" = "yes"; then
5123 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5124 fi
5125fi
5126
Lluís Vilanova5b808272014-05-27 15:02:14 +02005127echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5128if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005129 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305130fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005131if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005132 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5133 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005134 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005135fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005136if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005137 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5138fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005139if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005140 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5141fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005142if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005143 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5144 if test "$trace_backend_stap" = "yes" ; then
5145 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5146 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005147fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005148if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005149 if test "$linux" = "yes" ; then
5150 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005151 else
Stewart Smith21684af2014-01-24 12:39:10 +11005152 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005153 fi
5154fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005155echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5156
Michael R. Hines2da776d2013-07-22 10:01:54 -04005157if test "$rdma" = "yes" ; then
5158 echo "CONFIG_RDMA=y" >> $config_host_mak
5159fi
5160
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005161# Hold two types of flag:
5162# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5163# a thread we have a handle to
5164# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5165# platform
5166if test "$pthread_setname_np" = "yes" ; then
5167 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5168 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5169fi
5170
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005171if test "$tcg_interpreter" = "yes"; then
5172 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5173elif test "$ARCH" = "sparc64" ; then
5174 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5175elif test "$ARCH" = "s390x" ; then
5176 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005177elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005178 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005179elif test "$ARCH" = "ppc64" ; then
5180 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005181else
5182 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5183fi
5184QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5185
Juan Quintela98ec69a2009-07-16 18:34:18 +02005186echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005187echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005188echo "MAKE=$make" >> $config_host_mak
5189echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005190echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5191echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005192if test -n "$libtool"; then
5193 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5194 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5195else
5196 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5197 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5198fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005199echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005200echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005201if $iasl -h > /dev/null 2>&1; then
5202 echo "IASL=$iasl" >> $config_host_mak
5203fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005204echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005205echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005206echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005207echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005208echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005209echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005210echo "AS=$as" >> $config_host_mak
5211echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005212echo "OBJCOPY=$objcopy" >> $config_host_mak
5213echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005214echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005215echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005216echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005217echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005218echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005219echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005220echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005221if test "$sparse" = "yes" ; then
5222 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005223 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005224 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005225 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5226 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5227fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005228if test "$cross_prefix" != ""; then
5229 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5230else
5231 echo "AUTOCONF_HOST := " >> $config_host_mak
5232fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005233echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005234echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005235echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005236echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005237echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005238echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005239echo "DSOSUF=$DSOSUF" >> $config_host_mak
5240echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005241echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005242echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005243echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005244if test "$gcov" = "yes" ; then
5245 echo "CONFIG_GCOV=y" >> $config_host_mak
5246 echo "GCOV=$gcov_tool" >> $config_host_mak
5247fi
Juan Quintela804edf22009-07-27 16:12:49 +02005248
Peter Maydell6efd7512011-11-30 11:59:04 +00005249# use included Linux headers
5250if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005251 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005252 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005253 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005254 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005255 ;;
5256 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005257 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005258 ;;
5259 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005260 linux_arch=s390
5261 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005262 aarch64)
5263 linux_arch=arm64
5264 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005265 mips64)
5266 linux_arch=mips
5267 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005268 *)
5269 # For most CPUs the kernel architecture name and QEMU CPU name match.
5270 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005271 ;;
5272 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005273 # For non-KVM architectures we will not have asm headers
5274 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5275 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5276 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005277fi
5278
bellard1d14ffa2005-10-30 18:58:22 +00005279for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005280target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005281config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005282target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005283target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005284
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005285case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005286 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 +02005287 target_bigendian=yes
5288 ;;
5289esac
bellard97a847b2003-08-10 21:36:04 +00005290target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005291target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005292target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005293target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005294case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005295 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005296 target_softmmu="yes"
5297 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005298 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005299 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005300 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005301 fi
pbrook9e407a82007-05-26 16:38:53 +00005302 target_user_only="yes"
5303 target_linux_user="yes"
5304 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005305 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005306 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005307 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005308 fi
blueswir184778502008-10-26 20:33:16 +00005309 target_user_only="yes"
5310 target_bsd_user="yes"
5311 ;;
pbrook9e407a82007-05-26 16:38:53 +00005312 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005313 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005314 exit 1
5315 ;;
5316esac
ths831b7822007-01-18 20:06:33 +00005317
bellard97a847b2003-08-10 21:36:04 +00005318mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005319echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005320
pbrooke5fe0c52006-06-11 13:32:59 +00005321bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005322interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005323gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005324
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005325TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005326TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005327TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005328
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005329case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005330 i386)
aurel322408a522008-04-20 20:19:44 +00005331 ;;
5332 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005333 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005334 ;;
5335 alpha)
aurel322408a522008-04-20 20:19:44 +00005336 ;;
5337 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005338 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005339 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005340 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005341 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005342 aarch64)
5343 TARGET_BASE_ARCH=arm
5344 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005345 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 +01005346 ;;
aurel322408a522008-04-20 20:19:44 +00005347 cris)
aurel322408a522008-04-20 20:19:44 +00005348 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005349 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005350 ;;
aurel322408a522008-04-20 20:19:44 +00005351 m68k)
aurel322408a522008-04-20 20:19:44 +00005352 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005353 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005354 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005355 microblaze|microblazeel)
5356 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005357 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005358 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005359 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005360 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005361 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005362 ;;
5363 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005364 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005365 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005366 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005367 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005368 ;;
5369 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005370 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005371 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005372 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005373 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005374 moxie)
5375 ;;
Jia Liue67db062012-07-20 15:50:39 +08005376 or32)
5377 TARGET_ARCH=openrisc
5378 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005379 ;;
aurel322408a522008-04-20 20:19:44 +00005380 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005381 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005382 ;;
5383 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005384 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005385 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005386 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005387 ;;
5388 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005389 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005390 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005391 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005392 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005393 ppc64le)
5394 TARGET_ARCH=ppc64
5395 TARGET_BASE_ARCH=ppc
5396 TARGET_ABI_DIR=ppc
5397 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5398 ;;
aurel322408a522008-04-20 20:19:44 +00005399 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005400 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005401 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005402 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005403 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005404 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005405 ;;
5406 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005407 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005408 bflt="yes"
5409 ;;
5410 sparc)
aurel322408a522008-04-20 20:19:44 +00005411 ;;
5412 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005413 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005414 ;;
5415 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005416 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005417 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005418 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005419 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005420 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005421 s390x)
David Hildenbrand5b9f6342015-06-23 11:00:09 +02005422 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 +01005423 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005424 tricore)
5425 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005426 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005427 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005428 xtensa|xtensaeb)
5429 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005430 ;;
aurel322408a522008-04-20 20:19:44 +00005431 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005432 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005433 ;;
5434esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005435# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5436if [ "$TARGET_BASE_ARCH" = "" ]; then
5437 TARGET_BASE_ARCH=$TARGET_ARCH
5438fi
5439
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005440symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5441
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005442upper() {
5443 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5444}
5445
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005446target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005447echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005448echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005449echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005450if [ "$TARGET_ABI_DIR" = "" ]; then
5451 TARGET_ABI_DIR=$TARGET_ARCH
5452fi
Juan Quintela25be2102009-10-07 02:41:00 +02005453echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005454if [ "$HOST_VARIANT_DIR" != "" ]; then
5455 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5456fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005457case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005458 i386|x86_64)
5459 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005460 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005461 if test "$xen_pci_passthrough" = yes; then
5462 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5463 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005464 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005465 ;;
5466 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005467esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005468case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005469 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005470 # Make sure the target and host cpus are compatible
5471 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005472 \( "$target_name" = "$cpu" -o \
5473 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5474 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5475 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5476 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005477 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005478 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005479 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5480 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5481 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005482 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005483 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005484 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5485 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005486 fi
5487esac
bellardde83cd02003-06-15 20:25:43 +00005488if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005489 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005490fi
5491if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005492 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005493fi
bellard997344f2003-10-27 21:10:39 +00005494if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005495 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005496 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005497fi
ths831b7822007-01-18 20:06:33 +00005498if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005499 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005500fi
pbrook56aebc82008-10-11 17:55:29 +00005501list=""
5502if test ! -z "$gdb_xml_files" ; then
5503 for x in $gdb_xml_files; do
5504 list="$list $source_path/gdb-xml/$x"
5505 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005506 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005507fi
bellardde83cd02003-06-15 20:25:43 +00005508
pbrooke5fe0c52006-06-11 13:32:59 +00005509if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005510 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005511fi
blueswir184778502008-10-26 20:33:16 +00005512if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005513 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005514fi
bellard5b0753e2005-03-01 21:37:28 +00005515
Juan Quintela4afddb52009-08-03 14:46:45 +02005516# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005517
Juan Quintela4afddb52009-08-03 14:46:45 +02005518cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005519ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005520
Juan Quintela64656022009-08-03 14:46:53 +02005521for i in $ARCH $TARGET_BASE_ARCH ; do
5522 case "$i" in
5523 alpha)
Juan Quintela25be2102009-10-07 02:41:00 +02005524 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005525 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005526 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005527 aarch64)
5528 if test -n "${cxx}"; then
5529 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5530 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5531 fi
5532 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005533 arm)
Juan Quintela25be2102009-10-07 02:41:00 +02005534 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005535 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
Claudio Fontana999b53e2014-02-05 17:27:28 +00005536 if test -n "${cxx}"; then
5537 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5538 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5539 fi
Juan Quintela64656022009-08-03 14:46:53 +02005540 ;;
5541 cris)
Juan Quintela25be2102009-10-07 02:41:00 +02005542 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005543 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005544 ;;
5545 hppa)
Juan Quintela25be2102009-10-07 02:41:00 +02005546 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005547 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005548 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005549 i386|x86_64|x32)
Juan Quintela25be2102009-10-07 02:41:00 +02005550 echo "CONFIG_I386_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005551 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005552 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005553 ia64*)
5554 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005555 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
Aurelien Jarno903ec552010-03-29 02:12:51 +02005556 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005557 lm32)
5558 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005559 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
Michael Walle79368f42012-03-31 19:54:20 +02005560 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005561 m68k)
Juan Quintela25be2102009-10-07 02:41:00 +02005562 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005563 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005564 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005565 microblaze*)
Juan Quintela25be2102009-10-07 02:41:00 +02005566 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005567 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005568 ;;
5569 mips*)
Juan Quintela25be2102009-10-07 02:41:00 +02005570 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005571 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005572 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005573 moxie*)
5574 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5575 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5576 ;;
Jia Liue67db062012-07-20 15:50:39 +08005577 or32)
5578 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005579 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
Jia Liue67db062012-07-20 15:50:39 +08005580 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005581 ppc*)
Juan Quintela25be2102009-10-07 02:41:00 +02005582 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005583 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005584 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005585 s390*)
Juan Quintela25be2102009-10-07 02:41:00 +02005586 echo "CONFIG_S390_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005587 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005588 ;;
5589 sh4)
Juan Quintela25be2102009-10-07 02:41:00 +02005590 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005591 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005592 ;;
5593 sparc*)
Juan Quintela25be2102009-10-07 02:41:00 +02005594 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005595 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005596 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005597 xtensa*)
5598 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005599 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
Max Filippovcfa550c2011-09-06 03:55:26 +04005600 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005601 esac
5602done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005603if test "$tcg_interpreter" = "yes" ; then
5604 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005605 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
Stefan Weil9195b2c2011-10-19 07:07:18 +02005606fi
Juan Quintela64656022009-08-03 14:46:53 +02005607
Juan Quintela6ee71262009-08-03 14:46:47 +02005608case "$ARCH" in
5609alpha)
5610 # Ensure there's only a single GP
5611 cflags="-msmall-data $cflags"
5612;;
5613esac
5614
Juan Quintelad02c1db2009-08-03 14:46:50 +02005615if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005616 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005617 if test "$target_linux_user" = "yes" ; then
5618 cflags="-p $cflags"
5619 ldflags="-p $ldflags"
5620 fi
5621 if test "$target_softmmu" = "yes" ; then
5622 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005623 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005624 fi
5625fi
5626
Juan Quintela9b8e1112009-08-03 14:46:46 +02005627if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005628 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005629fi
Juan Quintelafa282482009-07-22 22:37:39 +02005630
Juan Quintela25be2102009-10-07 02:41:00 +02005631echo "LDFLAGS+=$ldflags" >> $config_target_mak
5632echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005633
bellard97a847b2003-08-10 21:36:04 +00005634done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005635
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005636if [ "$pixman" = "internal" ]; then
5637 echo "config-host.h: subdir-pixman" >> $config_host_mak
5638fi
5639
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005640if [ "$dtc_internal" = "yes" ]; then
5641 echo "config-host.h: subdir-dtc" >> $config_host_mak
5642fi
5643
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005644if test "$numa" = "yes"; then
5645 echo "CONFIG_NUMA=y" >> $config_host_mak
5646fi
5647
John Snowfd0e6052015-03-25 18:57:39 -04005648if test "$ccache_cpp2" = "yes"; then
5649 echo "export CCACHE_CPP2=y" >> $config_host_mak
5650fi
5651
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005652# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005653DIRS="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 +04005654DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005655DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005656DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005657DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005658FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5659FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005660FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005661FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005662FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005663FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005664FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005665FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005666for bios_file in \
5667 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005668 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005669 $source_path/pc-bios/*.rom \
5670 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005671 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005672 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005673 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005674 $source_path/pc-bios/palcode-*
5675do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005676 FILES="$FILES pc-bios/`basename $bios_file`"
5677done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005678for test_file in `find $source_path/tests/acpi-test-data -type f`
5679do
5680 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5681done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005682mkdir -p $DIRS
5683for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005684 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005685 symlink "$source_path/$f" "$f"
5686 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005687done
Paul Brook1ad21342009-05-19 16:17:58 +01005688
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005689# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005690for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005691 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005692 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005693 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005694 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005695 echo "CC=$cc" >> $config_mak
5696 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005697 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005698 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005699 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005700 echo "LD=$ld" >> $config_mak
5701done
5702
Max Reitz76c75602014-05-24 23:24:56 +02005703# set up qemu-iotests in this build directory
5704iotests_common_env="tests/qemu-iotests/common.env"
5705iotests_check="tests/qemu-iotests/check"
5706
5707echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5708echo >> "$iotests_common_env"
5709echo "export PYTHON='$python'" >> "$iotests_common_env"
5710
5711if [ ! -e "$iotests_check" ]; then
5712 symlink "$source_path/$iotests_check" "$iotests_check"
5713fi
5714
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005715# Save the configure command line for later reuse.
5716cat <<EOD >config.status
5717#!/bin/sh
5718# Generated by configure.
5719# Run this file to recreate the current configuration.
5720# Compiler output produced by configure, useful for debugging
5721# configure, is in config.log if it exists.
5722EOD
5723printf "exec" >>config.status
5724printf " '%s'" "$0" "$@" >>config.status
5725echo >>config.status
5726chmod +x config.status
5727
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005728rm -r "$TMPDIR1"