blob: d06427f57d372ff153bb7a07d7c9e86c0eef0e59 [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"
Peter Maydell30163d82012-10-09 03:16:49 +0000296guest_base="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100297aix="no"
298blobs="yes"
299pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200300pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100301zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200302qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200303trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100304trace_file="trace"
305spice=""
306rbd=""
Robert Relyea111a38b2010-11-28 16:36:38 +0200307smartcard_nss=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100308libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200309usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100310opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300311zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200312lzo=""
313snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100314bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400315guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400316guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500317guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300318guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400319vss_win32_sdk=""
320win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100321want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100322libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100323libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100324coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200325coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300326seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530327glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530328glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530329glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100330archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600331gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200332gtkabi=""
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100333gnutls=""
334gnutls_hash=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100335vte=""
Cole Robinsone91c7932014-06-16 15:32:47 -0400336tpm="yes"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +0100337libssh2=""
Jeff Cody4f18b782013-10-30 10:44:39 -0400338vhdx=""
Wanlong Gaoa99d57b2014-05-14 17:43:28 +0800339numa=""
Fam Zheng2847b462015-03-26 11:03:12 +0800340tcmalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100341
aliguoriac0df512008-12-29 17:14:15 +0000342# parse CC options first
343for opt do
344 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
345 case "$opt" in
346 --cross-prefix=*) cross_prefix="$optarg"
347 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100348 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000349 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400350 --cxx=*) CXX="$optarg"
351 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100352 --source-path=*) source_path="$optarg"
353 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200354 --cpu=*) cpu="$optarg"
355 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100356 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100357 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200358 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100359 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100360 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200361 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100362 --enable-debug-info) debug_info="yes"
363 ;;
364 --disable-debug-info) debug_info="no"
365 ;;
aliguoriac0df512008-12-29 17:14:15 +0000366 esac
367done
aliguoriac0df512008-12-29 17:14:15 +0000368# OS specific
369# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100370# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000371
Peter Maydelle49d0212012-12-07 15:39:13 +0000372# Preferred compiler:
373# ${CC} (if set)
374# ${cross_prefix}gcc (if cross-prefix specified)
375# system compiler
376if test -z "${CC}${cross_prefix}"; then
377 cc="$host_cc"
378else
379 cc="${CC-${cross_prefix}gcc}"
380fi
381
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400382if test -z "${CXX}${cross_prefix}"; then
383 cxx="c++"
384else
385 cxx="${CXX-${cross_prefix}g++}"
386fi
387
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500388ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000389as="${AS-${cross_prefix}as}"
390cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500391objcopy="${OBJCOPY-${cross_prefix}objcopy}"
392ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400393libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200394nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500395strip="${STRIP-${cross_prefix}strip}"
396windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300397pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
398query_pkg_config() {
399 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
400}
401pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500402sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000403sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000404
Peter Maydell45d285a2013-10-21 21:03:06 +0100405# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
406ARFLAGS="${ARFLAGS-rv}"
407
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200408# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000409QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400410QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100411QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200412QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200413QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100414if test "$debug_info" = "yes"; then
415 CFLAGS="-g $CFLAGS"
416 LDFLAGS="-g $LDFLAGS"
417fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200418
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100419# make source path absolute
420source_path=`cd "$source_path"; pwd`
421
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300422# running configure in the source tree?
423# we know that's the case if configure is there.
424if test -f "./configure"; then
425 pwd_is_source_path="y"
426else
427 pwd_is_source_path="n"
428fi
429
aliguoriac0df512008-12-29 17:14:15 +0000430check_define() {
431cat > $TMPC <<EOF
432#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000433#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000434#endif
435int main(void) { return 0; }
436EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200437 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000438}
439
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200440check_include() {
441cat > $TMPC <<EOF
442#include <$1>
443int main(void) { return 0; }
444EOF
445 compile_object
446}
447
John Snow93b25862015-03-25 18:57:37 -0400448write_c_skeleton() {
449 cat > $TMPC <<EOF
450int main(void) { return 0; }
451EOF
452}
453
Peter Maydellbbea4052012-08-14 15:35:34 +0100454if check_define __linux__ ; then
455 targetos="Linux"
456elif check_define _WIN32 ; then
457 targetos='MINGW32'
458elif check_define __OpenBSD__ ; then
459 targetos='OpenBSD'
460elif check_define __sun__ ; then
461 targetos='SunOS'
462elif check_define __HAIKU__ ; then
463 targetos='Haiku'
464else
465 targetos=`uname -s`
466fi
467
468# Some host OSes need non-standard checks for which CPU to use.
469# Note that these checks are broken for cross-compilation: if you're
470# cross-compiling to one of these OSes then you'll need to specify
471# the correct CPU with the --cpu option.
472case $targetos in
473Darwin)
474 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
475 # run 64-bit userspace code.
476 # If the user didn't specify a CPU explicitly and the kernel says this is
477 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
478 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
479 cpu="x86_64"
480 fi
481 ;;
482SunOS)
483 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
484 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
485 cpu="x86_64"
486 fi
487esac
488
Juan Quintela2ff6b912009-08-03 14:45:55 +0200489if test ! -z "$cpu" ; then
490 # command line argument
491 :
492elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000493 cpu="i386"
494elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700495 if check_define __ILP32__ ; then
496 cpu="x32"
497 else
498 cpu="x86_64"
499 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000500elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000501 if check_define __arch64__ ; then
502 cpu="sparc64"
503 else
504 cpu="sparc"
505 fi
malcfdf7ed92009-01-14 18:39:52 +0000506elif check_define _ARCH_PPC ; then
507 if check_define _ARCH_PPC64 ; then
508 cpu="ppc64"
509 else
510 cpu="ppc"
511 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200512elif check_define __mips__ ; then
513 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200514elif check_define __ia64__ ; then
515 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200516elif check_define __s390__ ; then
517 if check_define __s390x__ ; then
518 cpu="s390x"
519 else
520 cpu="s390"
521 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100522elif check_define __arm__ ; then
523 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100524elif check_define __aarch64__ ; then
525 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400526elif check_define __hppa__ ; then
527 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000528else
malcfdf7ed92009-01-14 18:39:52 +0000529 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000530fi
531
Peter Maydell359bc952011-12-24 13:07:25 +0000532ARCH=
533# Normalise host CPU name and set ARCH.
534# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000535case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700536 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200537 cpu="$cpu"
538 ;;
bellard7d132992003-03-06 23:23:54 +0000539 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000540 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000541 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000542 x86_64|amd64)
543 cpu="x86_64"
544 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100545 armv*b|armv*l|arm)
546 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000547 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100548 aarch64)
549 cpu="aarch64"
550 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200551 mips*)
552 cpu="mips"
553 ;;
blueswir131422552007-04-16 18:27:06 +0000554 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000555 cpu="sparc"
556 ;;
bellard7d132992003-03-06 23:23:54 +0000557 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000558 # This will result in either an error or falling back to TCI later
559 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000560 ;;
561esac
Peter Maydell359bc952011-12-24 13:07:25 +0000562if test -z "$ARCH"; then
563 ARCH="$cpu"
564fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200565
bellard7d132992003-03-06 23:23:54 +0000566# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200567
Stacey Sonadfc3e92014-06-08 09:57:22 -0700568# host *BSD for user mode
569HOST_VARIANT_DIR=""
570
bellard7d132992003-03-06 23:23:54 +0000571case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000572CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200573 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200574 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200575 audio_possible_drivers="sdl"
576 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000577;;
bellard67b915a2004-03-31 23:37:16 +0000578MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200579 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200580 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200581 if check_include dsound.h; then
582 audio_drv_list="dsound"
583 else
584 audio_drv_list=""
585 fi
bellard67b915a2004-03-31 23:37:16 +0000586;;
ths5c40d2b2007-06-23 16:03:36 +0000587GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100588 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200589 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200590 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000591;;
bellard7d3505c2004-05-12 19:32:15 +0000592FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200593 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100594 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200595 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200596 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100597 # needed for kinfo_getvmmap(3) in libutil.h
598 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100599 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700600 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000601;;
blueswir1c5e97232009-03-07 20:06:23 +0000602DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200603 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100604 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200605 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200606 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700607 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000608;;
bellard7d3505c2004-05-12 19:32:15 +0000609NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200610 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100611 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200612 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200613 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200614 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700615 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000616;;
617OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200618 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100619 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400620 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200621 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700622 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000623;;
bellard83fb7ad2004-07-05 21:25:26 +0000624Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200625 bsd="yes"
626 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800627 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200628 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200629 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200630 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200631 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200632 cocoa="yes"
633 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200634 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200635 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200636 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100637 # Disable attempts to use ObjectiveC features in os/object.h since they
638 # won't work when we're compiling with gcc as a C compiler.
639 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700640 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000641;;
bellardec530c82006-04-25 22:36:06 +0000642SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200643 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100644 make="${MAKE-gmake}"
645 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000646 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400647 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200648 needs_libsunmath="no"
649 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200650 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
651 if test "$solarisrev" -le 9 ; then
652 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
653 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200654 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
655 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
656 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200657 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100658 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
659 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
660 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
661 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200662 fi
thsef18c882007-09-16 22:12:39 +0000663 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200664 fi
665 if test -f /usr/include/sys/soundcard.h ; then
666 audio_drv_list="oss"
667 fi
668 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000669# needed for CMSG_ macros in sys/socket.h
670 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
671# needed for TIOCWIN* defines in termios.h
672 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200673 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200674 solarisnetlibs="-lsocket -lnsl -lresolv"
675 LIBS="$solarisnetlibs $LIBS"
676 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000677;;
malcb29fe3e2008-11-18 01:42:22 +0000678AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200679 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100680 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000681;;
Andreas Färber179cf402010-09-20 00:50:43 +0200682Haiku)
683 haiku="yes"
684 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
685 LIBS="-lposix_error_mapper -lnetwork $LIBS"
686;;
bellard1d14ffa2005-10-30 18:58:22 +0000687*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200688 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200689 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200690 linux="yes"
691 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200692 kvm="yes"
693 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000694 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000695 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000696;;
bellard7d132992003-03-06 23:23:54 +0000697esac
698
bellard7d3505c2004-05-12 19:32:15 +0000699if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000700 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200701 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000702 fi
bellard7d3505c2004-05-12 19:32:15 +0000703fi
704
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100705: ${make=${MAKE-make}}
706: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100707: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400708: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100709
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100710# Default objcc to clang if available, otherwise use CC
711if has clang; then
712 objcc=clang
713else
714 objcc="$cc"
715fi
716
Juan Quintela3457a3f2009-08-03 14:46:07 +0200717if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200718 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800719 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200720 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100721 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
722 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100723 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400724 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100725 if compile_prog "" "-liberty" ; then
726 LIBS="-liberty $LIBS"
727 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200728 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200729 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300730 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300731 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200732 bindir="\${prefix}"
733 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200734 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200735 confsuffix=""
Kirk Allan601e5a02015-06-02 11:41:06 -0600736 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200737fi
738
Anthony Liguori487fefd2009-06-11 13:28:25 -0500739werror=""
bellard85aa5182007-11-11 20:17:03 +0000740
bellard7d132992003-03-06 23:23:54 +0000741for opt do
pbrooka46e4032006-04-29 23:05:22 +0000742 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000743 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000744 --help|-h) show_help=yes
745 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400746 --version|-V) exec cat $source_path/VERSION
747 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000748 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000749 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000750 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000751 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100752 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000753 ;;
aliguoriac0df512008-12-29 17:14:15 +0000754 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000755 ;;
aliguoriac0df512008-12-29 17:14:15 +0000756 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000757 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000758 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000759 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400760 --cxx=*)
761 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200762 --iasl=*) iasl="$optarg"
763 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100764 --objcc=*) objcc="$optarg"
765 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000766 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000767 ;;
pbrook6a882642006-04-17 13:57:12 +0000768 --install=*) install="$optarg"
769 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000770 --python=*) python="$optarg"
771 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000772 --gcov=*) gcov_tool="$optarg"
773 ;;
Brade2d88302011-09-02 16:53:28 -0400774 --smbd=*) smbd="$optarg"
775 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200776 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000777 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200778 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000779 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100780 --enable-debug-info)
781 ;;
782 --disable-debug-info)
783 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800784 --enable-modules)
785 modules="yes"
786 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200787 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000788 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000789 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000790 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200791 --enable-trace-backends=*) trace_backends="$optarg"
792 ;;
793 # XXX: backwards compatibility
794 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100795 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100796 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100797 ;;
bellard7d132992003-03-06 23:23:54 +0000798 --enable-gprof) gprof="yes"
799 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000800 --enable-gcov) gcov="yes"
801 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100802 --static)
803 static="yes"
804 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300805 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000806 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200807 --mandir=*) mandir="$optarg"
808 ;;
809 --bindir=*) bindir="$optarg"
810 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300811 --libdir=*) libdir="$optarg"
812 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400813 --libexecdir=*) libexecdir="$optarg"
814 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200815 --includedir=*) includedir="$optarg"
816 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300817 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200818 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300819 --with-confsuffix=*) confsuffix="$optarg"
820 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300821 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200822 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100823 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600824 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300825 --localstatedir=*) local_statedir="$optarg"
826 ;;
827 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400828 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
829 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
830 # These switches are silently ignored, for compatibility with
831 # autoconf-generated configure scripts. This allows QEMU's
832 # configure to be used by RPM and similar macros that set
833 # lots of directory switches by default.
834 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200835 --with-system-pixman) pixman="system"
836 ;;
837 --without-system-pixman) pixman="internal"
838 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100839 --without-pixman) pixman="none"
840 ;;
bellard97a847b2003-08-10 21:36:04 +0000841 --disable-sdl) sdl="no"
842 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200843 --enable-sdl) sdl="yes"
844 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000845 --with-sdlabi=*) sdlabi="$optarg"
846 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200847 --disable-qom-cast-debug) qom_cast_debug="no"
848 ;;
849 --enable-qom-cast-debug) qom_cast_debug="yes"
850 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530851 --disable-virtfs) virtfs="no"
852 ;;
853 --enable-virtfs) virtfs="yes"
854 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100855 --disable-vnc) vnc="no"
856 ;;
857 --enable-vnc) vnc="yes"
858 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000859 --oss-lib=*) oss_lib="$optarg"
860 ;;
malc0c58ac12008-06-25 21:04:05 +0000861 --audio-drv-list=*) audio_drv_list="$optarg"
862 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800863 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
864 ;;
865 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100866 ;;
aurel32f8393942009-04-13 18:45:38 +0000867 --enable-debug-tcg) debug_tcg="yes"
868 ;;
869 --disable-debug-tcg) debug_tcg="no"
870 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100871 --enable-debug)
872 # Enable debugging options that aren't excessively noisy
873 debug_tcg="yes"
874 debug="yes"
875 strip_opt="no"
876 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000877 --enable-sparse) sparse="yes"
878 ;;
879 --disable-sparse) sparse="no"
880 ;;
aliguori1625af82009-04-05 17:41:02 +0000881 --disable-strip) strip_opt="no"
882 ;;
ths8d5d2d42007-08-25 01:37:51 +0000883 --disable-vnc-tls) vnc_tls="no"
884 ;;
Juan Quintela1be10ad2009-08-12 18:20:28 +0200885 --enable-vnc-tls) vnc_tls="yes"
886 ;;
aliguori2f9606b2009-03-06 20:27:28 +0000887 --disable-vnc-sasl) vnc_sasl="no"
888 ;;
Juan Quintelaea784e32009-08-12 18:20:29 +0200889 --enable-vnc-sasl) vnc_sasl="yes"
890 ;;
Corentin Chary2f6f5c72010-07-07 20:57:49 +0200891 --disable-vnc-jpeg) vnc_jpeg="no"
892 ;;
893 --enable-vnc-jpeg) vnc_jpeg="yes"
894 ;;
Corentin Charyefe556a2010-07-07 20:57:56 +0200895 --disable-vnc-png) vnc_png="no"
896 ;;
897 --enable-vnc-png) vnc_png="yes"
898 ;;
bellard443f1372004-06-04 11:13:20 +0000899 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000900 ;;
Stefan Weilee682d22009-10-01 20:10:37 +0200901 --disable-uuid) uuid="no"
902 ;;
903 --enable-uuid) uuid="yes"
904 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000905 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000906 ;;
Juan Quinteladfb278b2009-08-12 18:20:27 +0200907 --enable-vde) vde="yes"
908 ;;
Vincenzo Maffione58952132013-11-06 11:44:06 +0100909 --disable-netmap) netmap="no"
910 ;;
911 --enable-netmap) netmap="yes"
912 ;;
aliguorie37630c2009-04-22 15:19:10 +0000913 --disable-xen) xen="no"
914 ;;
Juan Quintelafc321b42009-08-12 18:29:55 +0200915 --enable-xen) xen="yes"
916 ;;
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000917 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
918 ;;
919 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
920 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000921 --disable-brlapi) brlapi="no"
922 ;;
Juan Quintela4ffcedb2009-08-12 18:20:26 +0200923 --enable-brlapi) brlapi="yes"
924 ;;
balrogfb599c92008-09-28 23:49:55 +0000925 --disable-bluez) bluez="no"
926 ;;
Juan Quintelaa20a6f42009-08-12 18:29:50 +0200927 --enable-bluez) bluez="yes"
928 ;;
aliguori7ba1e612008-11-05 16:04:33 +0000929 --disable-kvm) kvm="no"
930 ;;
Juan Quintelab31a0272009-08-12 18:29:56 +0200931 --enable-kvm) kvm="yes"
932 ;;
Stefan Weil9195b2c2011-10-19 07:07:18 +0200933 --disable-tcg-interpreter) tcg_interpreter="no"
934 ;;
935 --enable-tcg-interpreter) tcg_interpreter="yes"
936 ;;
Corey Bryant47e98652012-01-26 09:42:26 -0500937 --disable-cap-ng) cap_ng="no"
938 ;;
939 --enable-cap-ng) cap_ng="yes"
940 ;;
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +0100941 --disable-spice) spice="no"
942 ;;
943 --enable-spice) spice="yes"
944 ;;
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100945 --disable-libiscsi) libiscsi="no"
946 ;;
947 --enable-libiscsi) libiscsi="yes"
948 ;;
Peter Lieven6542aa92014-02-03 10:26:13 +0100949 --disable-libnfs) libnfs="no"
950 ;;
951 --enable-libnfs) libnfs="yes"
952 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000953 --enable-profiler) profiler="yes"
954 ;;
Pavel Borzenkov14821032011-11-10 22:40:07 +0400955 --disable-cocoa) cocoa="no"
956 ;;
malcc2de5c92008-06-28 19:13:06 +0000957 --enable-cocoa)
958 cocoa="yes" ;
959 sdl="no" ;
960 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000961 ;;
pbrookcad25d62006-03-19 16:31:11 +0000962 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000963 ;;
pbrookcad25d62006-03-19 16:31:11 +0000964 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000965 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000966 --disable-user)
967 linux_user="no" ;
968 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000969 ;;
970 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000971 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000972 ;;
ths831b7822007-01-18 20:06:33 +0000973 --enable-linux-user) linux_user="yes"
974 ;;
blueswir184778502008-10-26 20:33:16 +0000975 --disable-bsd-user) bsd_user="no"
976 ;;
977 --enable-bsd-user) bsd_user="yes"
978 ;;
Paul Brook379f6692009-07-17 12:48:08 +0100979 --enable-guest-base) guest_base="yes"
980 ;;
981 --disable-guest-base) guest_base="no"
982 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200983 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300984 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200985 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300986 ;;
bellard85aa5182007-11-11 20:17:03 +0000987 --enable-werror) werror="yes"
988 ;;
989 --disable-werror) werror="no"
990 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100991 --enable-stack-protector) stack_protector="yes"
992 ;;
993 --disable-stack-protector) stack_protector="no"
994 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000995 --disable-curses) curses="no"
996 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200997 --enable-curses) curses="yes"
998 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200999 --disable-curl) curl="no"
1000 ;;
Juan Quintela788c8192009-08-12 18:29:47 +02001001 --enable-curl) curl="yes"
1002 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +02001003 --disable-fdt) fdt="no"
1004 ;;
1005 --enable-fdt) fdt="yes"
1006 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001007 --disable-linux-aio) linux_aio="no"
1008 ;;
1009 --enable-linux-aio) linux_aio="yes"
1010 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001011 --disable-attr) attr="no"
1012 ;;
1013 --enable-attr) attr="yes"
1014 ;;
ths77755342008-11-27 15:45:16 +00001015 --disable-blobs) blobs="no"
1016 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001017 --with-pkgversion=*) pkgversion=" ($optarg)"
1018 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001019 --with-coroutine=*) coroutine="$optarg"
1020 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001021 --disable-coroutine-pool) coroutine_pool="no"
1022 ;;
1023 --enable-coroutine-pool) coroutine_pool="yes"
1024 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001025 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001026 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001027 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001028 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001029 --disable-vhost-net) vhost_net="no"
1030 ;;
1031 --enable-vhost-net) vhost_net="yes"
1032 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001033 --disable-vhost-scsi) vhost_scsi="no"
1034 ;;
1035 --enable-vhost-scsi) vhost_scsi="yes"
1036 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001037 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001038 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001039 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001040 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001041 --disable-rbd) rbd="no"
1042 ;;
1043 --enable-rbd) rbd="yes"
1044 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001045 --disable-xfsctl) xfs="no"
1046 ;;
1047 --enable-xfsctl) xfs="yes"
1048 ;;
Robert Relyea111a38b2010-11-28 16:36:38 +02001049 --disable-smartcard-nss) smartcard_nss="no"
1050 ;;
1051 --enable-smartcard-nss) smartcard_nss="yes"
1052 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001053 --disable-libusb) libusb="no"
1054 ;;
1055 --enable-libusb) libusb="yes"
1056 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001057 --disable-usb-redir) usb_redir="no"
1058 ;;
1059 --enable-usb-redir) usb_redir="yes"
1060 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001061 --disable-zlib-test) zlib="no"
1062 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001063 --disable-lzo) lzo="no"
1064 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001065 --enable-lzo) lzo="yes"
1066 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001067 --disable-snappy) snappy="no"
1068 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001069 --enable-snappy) snappy="yes"
1070 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001071 --disable-bzip2) bzip2="no"
1072 ;;
1073 --enable-bzip2) bzip2="yes"
1074 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001075 --enable-guest-agent) guest_agent="yes"
1076 ;;
1077 --disable-guest-agent) guest_agent="no"
1078 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001079 --enable-guest-agent-msi) guest_agent_msi="yes"
1080 ;;
1081 --disable-guest-agent-msi) guest_agent_msi="no"
1082 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001083 --with-vss-sdk) vss_win32_sdk=""
1084 ;;
1085 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1086 ;;
1087 --without-vss-sdk) vss_win32_sdk="no"
1088 ;;
1089 --with-win-sdk) win_sdk=""
1090 ;;
1091 --with-win-sdk=*) win_sdk="$optarg"
1092 ;;
1093 --without-win-sdk) win_sdk="no"
1094 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001095 --enable-tools) want_tools="yes"
1096 ;;
1097 --disable-tools) want_tools="no"
1098 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001099 --enable-seccomp) seccomp="yes"
1100 ;;
1101 --disable-seccomp) seccomp="no"
1102 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301103 --disable-glusterfs) glusterfs="no"
1104 ;;
1105 --enable-glusterfs) glusterfs="yes"
1106 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001107 --disable-archipelago) archipelago="no"
1108 ;;
1109 --enable-archipelago) archipelago="yes"
1110 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001111 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1112 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001113 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001114 --disable-gtk) gtk="no"
1115 ;;
1116 --enable-gtk) gtk="yes"
1117 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001118 --disable-gnutls) gnutls="no"
1119 ;;
1120 --enable-gnutls) gnutls="yes"
1121 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001122 --enable-rdma) rdma="yes"
1123 ;;
1124 --disable-rdma) rdma="no"
1125 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001126 --with-gtkabi=*) gtkabi="$optarg"
1127 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001128 --disable-vte) vte="no"
1129 ;;
1130 --enable-vte) vte="yes"
1131 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001132 --disable-tpm) tpm="no"
1133 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001134 --enable-tpm) tpm="yes"
1135 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001136 --disable-libssh2) libssh2="no"
1137 ;;
1138 --enable-libssh2) libssh2="yes"
1139 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001140 --enable-vhdx) vhdx="yes"
1141 ;;
1142 --disable-vhdx) vhdx="no"
1143 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001144 --disable-numa) numa="no"
1145 ;;
1146 --enable-numa) numa="yes"
1147 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001148 --disable-tcmalloc) tcmalloc="no"
1149 ;;
1150 --enable-tcmalloc) tcmalloc="yes"
1151 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001152 *)
1153 echo "ERROR: unknown option $opt"
1154 echo "Try '$0 --help' for more information"
1155 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001156 ;;
bellard7d132992003-03-06 23:23:54 +00001157 esac
1158done
1159
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001160if ! has $python; then
1161 error_exit "Python not found. Use --python=/path/to/python"
1162fi
1163
1164# Note that if the Python conditional here evaluates True we will exit
1165# with status 1 which is a shell 'false' value.
1166if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1167 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1168 "Note that Python 3 or later is not yet supported." \
1169 "Use --python=/path/to/python to specify a supported Python."
1170fi
1171
1172# The -B switch was added in Python 2.6.
1173# If it is supplied, compiled files are not written.
1174# Use it for Python versions which support it.
1175if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1176 python="$python -B"
1177fi
1178
bellard40293e52008-01-31 11:32:10 +00001179case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001180 ppc)
1181 CPU_CFLAGS="-m32"
1182 LDFLAGS="-m32 $LDFLAGS"
1183 ;;
1184 ppc64)
1185 CPU_CFLAGS="-m64"
1186 LDFLAGS="-m64 $LDFLAGS"
1187 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001188 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001189 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001190 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001191 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001192 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001193 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001194 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001195 ;;
ths76d83bd2007-11-18 21:22:10 +00001196 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001197 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001198 LDFLAGS="-m31 $LDFLAGS"
1199 ;;
1200 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001201 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001202 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001203 ;;
bellard40293e52008-01-31 11:32:10 +00001204 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001205 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001206 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001207 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001208 ;;
1209 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001210 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001211 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001212 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001213 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001214 x32)
1215 CPU_CFLAGS="-mx32"
1216 LDFLAGS="-mx32 $LDFLAGS"
1217 cc_i386='$(CC) -m32'
1218 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001219 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001220esac
1221
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001222QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1223EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1224
Peter Maydell60e0df22011-05-03 14:50:13 +01001225default_target_list=""
1226
Peter Maydell6e92f822013-05-20 16:16:15 +01001227mak_wilds=""
1228
1229if [ "$softmmu" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001231fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001232if [ "$linux_user" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001234fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001235if [ "$bsd_user" = "yes" ]; then
1236 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001237fi
1238
Peter Maydell6e92f822013-05-20 16:16:15 +01001239for config in $mak_wilds; do
1240 default_target_list="${default_target_list} $(basename "$config" .mak)"
1241done
1242
pbrookaf5db582006-04-08 14:26:41 +00001243if test x"$show_help" = x"yes" ; then
1244cat << EOF
1245
1246Usage: configure [options]
1247Options: [defaults in brackets after descriptions]
1248
Stefan Weil08fb77e2013-12-18 22:09:39 +01001249Standard options:
1250 --help print this message
1251 --prefix=PREFIX install in PREFIX [$prefix]
1252 --interp-prefix=PREFIX where to find shared libraries, etc.
1253 use %M for cpu name [$interp_prefix]
1254 --target-list=LIST set target list (default: build everything)
1255$(echo Available targets: $default_target_list | \
1256 fold -s -w 53 | sed -e 's/^/ /')
1257
1258Advanced options (experts only):
1259 --source-path=PATH path of source code [$source_path]
1260 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1261 --cc=CC use C compiler CC [$cc]
1262 --iasl=IASL use ACPI compiler IASL [$iasl]
1263 --host-cc=CC use C compiler CC [$host_cc] for code run at
1264 build time
1265 --cxx=CXX use C++ compiler CXX [$cxx]
1266 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1267 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1268 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1269 --make=MAKE use specified make [$make]
1270 --install=INSTALL use specified install [$install]
1271 --python=PYTHON use specified python [$python]
1272 --smbd=SMBD use specified smbd [$smbd]
1273 --static enable static build [$static]
1274 --mandir=PATH install man pages in PATH
1275 --datadir=PATH install firmware in PATH$confsuffix
1276 --docdir=PATH install documentation in PATH$confsuffix
1277 --bindir=PATH install binaries in PATH
1278 --libdir=PATH install libraries in PATH
1279 --sysconfdir=PATH install config in PATH$confsuffix
1280 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001281 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001282 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001283 --disable-strip disable stripping binaries
1284 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001285 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001286 --audio-drv-list=LIST set audio drivers list:
1287 Available drivers: $audio_possible_drivers
1288 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1289 --block-drv-rw-whitelist=L
1290 set block driver read-write whitelist
1291 (affects only QEMU, not qemu-img)
1292 --block-drv-ro-whitelist=L
1293 set block driver read-only whitelist
1294 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001295 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001296 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1297 --with-trace-file=NAME Full PATH,NAME of file to store traces
1298 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001299 --disable-slirp disable SLIRP userspace network connectivity
1300 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1301 --oss-lib path to OSS library
1302 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001303 --with-coroutine=BACKEND coroutine backend. Supported options:
1304 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001305 --enable-gcov enable test coverage analysis with gcov
1306 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001307 --disable-blobs disable installing provided firmware blobs
1308 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1309 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1310
1311Optional features, enabled with --enable-FEATURE and
1312disabled with --disable-FEATURE, default is enabled if available:
1313
1314 system all system emulation targets
1315 user supported user emulation targets
1316 linux-user all linux usermode emulation targets
1317 bsd-user all BSD usermode emulation targets
1318 guest-base GUEST_BASE support for usermode emulation targets
1319 docs build documentation
1320 guest-agent build the QEMU Guest Agent
1321 guest-agent-msi build guest agent Windows MSI installation package
1322 pie Position Independent Executables
1323 modules modules support
1324 debug-tcg TCG debugging (default is disabled)
1325 debug-info debugging information
1326 sparse sparse checker
1327
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001328 gnutls GNUTLS cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001329 sdl SDL UI
1330 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1331 gtk gtk UI
1332 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1333 vte vte support for the gtk UI
1334 curses curses UI
1335 vnc VNC UI support
1336 vnc-tls TLS encryption for VNC server
1337 vnc-sasl SASL encryption for VNC server
1338 vnc-jpeg JPEG lossy compression for VNC server
1339 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001340 cocoa Cocoa UI (Mac OS X only)
1341 virtfs VirtFS
1342 xen xen backend driver support
1343 xen-pci-passthrough
1344 brlapi BrlAPI (Braile)
1345 curl curl connectivity
1346 fdt fdt device tree
1347 bluez bluez stack connectivity
1348 kvm KVM acceleration support
1349 rdma RDMA-based migration support
1350 uuid uuid support
1351 vde support for vde network
1352 netmap support for netmap network
1353 linux-aio Linux AIO support
1354 cap-ng libcap-ng support
1355 attr attr and xattr support
1356 vhost-net vhost-net acceleration support
1357 spice spice
1358 rbd rados block device (rbd)
1359 libiscsi iscsi support
1360 libnfs nfs support
1361 smartcard-nss smartcard nss support
1362 libusb libusb (for usb passthrough)
1363 usb-redir usb network redirection support
1364 lzo support of lzo compression library
1365 snappy support of snappy compression library
1366 bzip2 support of bzip2 compression library
1367 (for reading bzip2-compressed dmg images)
1368 seccomp seccomp support
1369 coroutine-pool coroutine freelist (better performance)
1370 glusterfs GlusterFS backend
1371 archipelago Archipelago backend
1372 tpm TPM support
1373 libssh2 ssh block device support
1374 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001375 numa libnuma support
1376 tcmalloc tcmalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001377
1378NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001379EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001380exit 0
pbrookaf5db582006-04-08 14:26:41 +00001381fi
1382
Peter Maydell359bc952011-12-24 13:07:25 +00001383# Now we have handled --enable-tcg-interpreter and know we're not just
1384# printing the help message, bail out if the host CPU isn't supported.
1385if test "$ARCH" = "unknown"; then
1386 if test "$tcg_interpreter" = "yes" ; then
1387 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1388 ARCH=tci
1389 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001390 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001391 fi
1392fi
1393
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001394# Consult white-list to determine whether to enable werror
1395# by default. Only enable by default for git builds
1396z_version=`cut -f3 -d. $source_path/VERSION`
1397
1398if test -z "$werror" ; then
1399 if test -d "$source_path/.git" -a \
1400 "$linux" = "yes" ; then
1401 werror="yes"
1402 else
1403 werror="no"
1404 fi
1405fi
1406
Paolo Bonzini8d050952010-12-23 11:43:52 +01001407# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001408write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001409if compile_object ; then
1410 : C compiler works ok
1411else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001412 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001413fi
1414
Peter Maydell98b21dc2014-02-20 15:10:16 +00001415# Check that the C++ compiler exists and works with the C compiler
1416if has $cxx; then
1417 cat > $TMPC <<EOF
1418int c_function(void);
1419int main(void) { return c_function(); }
1420EOF
1421
1422 compile_object
1423
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001424 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001425extern "C" {
1426 int c_function(void);
1427}
1428int c_function(void) { return 42; }
1429EOF
1430
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001431 update_cxxflags
1432
1433 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001434 # C++ compiler $cxx works ok with C compiler $cc
1435 :
1436 else
1437 echo "C++ compiler $cxx does not work with C compiler $cc"
1438 echo "Disabling C++ specific optional code"
1439 cxx=
1440 fi
1441else
1442 echo "No C++ compiler available; disabling C++ specific optional code"
1443 cxx=
1444fi
1445
Paolo Bonzini8d050952010-12-23 11:43:52 +01001446gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1447gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1448gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001449gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001450gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001451gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001452# Note that we do not add -Werror to gcc_flags here, because that would
1453# enable it for all configure tests. If a configure test failed due
1454# to -Werror this would just silently disable some features,
1455# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001456
1457cc_has_warning_flag() {
1458 write_c_skeleton;
1459
Peter Maydella1d29d62012-10-27 22:19:07 +01001460 # Use the positive sense of the flag when testing for -Wno-wombat
1461 # support (gcc will happily accept the -Wno- form of unknown
1462 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001463 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1464 compile_prog "-Werror $optflag" ""
1465}
1466
1467for flag in $gcc_flags; do
1468 if cc_has_warning_flag $flag ; then
1469 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001470 fi
1471done
1472
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001473if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001474 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001475 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001476 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001477 # We need to check both a compile and a link, since some compiler
1478 # setups fail only on a .c->.o compile and some only at link time
1479 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1480 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001481 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1482 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001483 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001484 break
1485 fi
1486 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001487 if test "$stack_protector" = yes; then
1488 if test $sp_on = 0; then
1489 error_exit "Stack protector not supported"
1490 fi
1491 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001492fi
1493
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001494# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1495# large functions that use global variables. The bug is in all releases of
1496# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1497# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1498cat > $TMPC << EOF
1499#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1500int main(void) { return 0; }
1501#else
1502#error No bug in this compiler.
1503#endif
1504EOF
1505if compile_prog "-Werror -fno-gcse" "" ; then
1506 TRANSLATE_OPT_CFLAGS=-fno-gcse
1507fi
1508
Avi Kivity40d64442011-11-15 20:12:17 +02001509if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001510 if test "$modules" = "yes" ; then
1511 error_exit "static and modules are mutually incompatible"
1512 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001513 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001514 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001515 else
1516 pie="no"
1517 fi
1518fi
1519
Emilio G. Cota768b7852015-04-29 13:09:02 +02001520# Unconditional check for compiler __thread support
1521 cat > $TMPC << EOF
1522static __thread int tls_var;
1523int main(void) { return tls_var; }
1524EOF
1525
1526if ! compile_prog "-Werror" "" ; then
1527 error_exit "Your compiler does not support the __thread specifier for " \
1528 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1529fi
1530
Avi Kivity40d64442011-11-15 20:12:17 +02001531if test "$pie" = ""; then
1532 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001533 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001534 ;;
1535 *)
1536 pie="no"
1537 ;;
1538 esac
1539fi
1540
1541if test "$pie" != "no" ; then
1542 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001543
1544#ifdef __linux__
1545# define THREAD __thread
1546#else
1547# define THREAD
1548#endif
1549
1550static THREAD int tls_var;
1551
1552int main(void) { return tls_var; }
1553
Avi Kivity40d64442011-11-15 20:12:17 +02001554EOF
1555 if compile_prog "-fPIE -DPIE" "-pie"; then
1556 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1557 LDFLAGS="-pie $LDFLAGS"
1558 pie="yes"
1559 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1560 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1561 fi
1562 else
1563 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001564 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001565 else
1566 echo "Disabling PIE due to missing toolchain support"
1567 pie="no"
1568 fi
1569 fi
Brad46eef332013-12-10 19:49:08 -05001570
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001571 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001572 CFLAGS_NOPIE="-fno-pie"
1573 LDFLAGS_NOPIE="-nopie"
1574 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001575fi
1576
Don Slutz66518bf2014-01-02 21:12:46 -05001577# check for broken gcc and libtool in RHEL5
1578if test -n "$libtool" -a "$pie" != "no" ; then
1579 cat > $TMPC <<EOF
1580
1581void *f(unsigned char *buf, int len);
1582void *g(unsigned char *buf, int len);
1583
1584void *
1585f(unsigned char *buf, int len)
1586{
1587 return (void*)0L;
1588}
1589
1590void *
1591g(unsigned char *buf, int len)
1592{
1593 return f(buf, len);
1594}
1595
1596EOF
1597 if ! libtool_prog; then
1598 echo "Disabling libtool due to broken toolchain support"
1599 libtool=
1600 fi
1601fi
1602
Paolo Bonzini09dada42013-04-17 16:26:47 +02001603##########################################
1604# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1605# use i686 as default anyway, but for those that don't, an explicit
1606# specification is necessary
1607
1608if test "$cpu" = "i386"; then
1609 cat > $TMPC << EOF
1610static int sfaa(int *ptr)
1611{
1612 return __sync_fetch_and_and(ptr, 0);
1613}
1614
1615int main(void)
1616{
1617 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001618 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001619 sfaa(&val);
1620 return val;
1621}
1622EOF
1623 if ! compile_prog "" "" ; then
1624 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1625 fi
1626fi
1627
1628#########################################
bellardec530c82006-04-25 22:36:06 +00001629# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001630
bellardec530c82006-04-25 22:36:06 +00001631if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001632 if has $install; then
1633 :
1634 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001635 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1636 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1637 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001638 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001639 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001640 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1641 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1642 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001643 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001644 if has ar; then
1645 :
1646 else
bellardec530c82006-04-25 22:36:06 +00001647 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001648 error_exit "No path includes ar" \
1649 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001650 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001651 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001652 fi
ths5fafdf22007-09-16 21:08:06 +00001653fi
bellardec530c82006-04-25 22:36:06 +00001654
Stefan Weilafb63eb2012-09-26 22:04:38 +02001655if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001656 target_list="$default_target_list"
1657else
1658 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001659fi
Peter Maydell25b48332013-05-20 16:16:16 +01001660
1661# Check that we recognised the target name; this allows a more
1662# friendly error message than if we let it fall through.
1663for target in $target_list; do
1664 case " $default_target_list " in
1665 *" $target "*)
1666 ;;
1667 *)
1668 error_exit "Unknown target name '$target'"
1669 ;;
1670 esac
1671done
1672
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001673# see if system emulation was really requested
1674case " $target_list " in
1675 *"-softmmu "*) softmmu=yes
1676 ;;
1677 *) softmmu=no
1678 ;;
1679esac
bellard5327cf42005-01-10 23:18:50 +00001680
Juan Quintela249247c2009-08-12 18:20:25 +02001681feature_not_found() {
1682 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001683 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001684
Peter Maydell76ad07a2013-04-08 12:11:26 +01001685 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001686 "configure was not able to find it." \
1687 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001688}
1689
bellard7d132992003-03-06 23:23:54 +00001690# ---
1691# big/little endian test
1692cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001693short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1694short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1695extern int foo(short *, short *);
1696int main(int argc, char *argv[]) {
1697 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001698}
1699EOF
1700
Mike Frysinger61cc9192013-06-30 23:30:18 -04001701if compile_object ; then
1702 if grep -q BiGeNdIaN $TMPO ; then
1703 bigendian="yes"
1704 elif grep -q LiTtLeEnDiAn $TMPO ; then
1705 bigendian="no"
1706 else
1707 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001708 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001709else
1710 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001711fi
1712
Juan Quintelab0a47e72009-08-12 18:29:49 +02001713##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001714# L2TPV3 probe
1715
1716cat > $TMPC <<EOF
1717#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001718#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001719int main(void) { return sizeof(struct mmsghdr); }
1720EOF
1721if compile_prog "" "" ; then
1722 l2tpv3=yes
1723else
1724 l2tpv3=no
1725fi
1726
1727##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001728# pkg-config probe
1729
1730if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001731 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001732fi
1733
1734##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001735# NPTL probe
1736
Peter Maydell24cb36a2013-07-16 18:45:00 +01001737if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001738 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001739#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001740#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001741int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001742#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1743#error bork
1744#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001745 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001746}
1747EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001748 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001749 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001750 fi
pbrookbd0c5662008-05-29 14:34:11 +00001751fi
1752
bellard11d9f692004-04-02 20:55:59 +00001753##########################################
balrogac629222008-10-11 09:56:04 +00001754# zlib check
1755
Alon Levy1ece9902011-07-26 12:30:40 +03001756if test "$zlib" != "no" ; then
1757 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001758#include <zlib.h>
1759int main(void) { zlibVersion(); return 0; }
1760EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001761 if compile_prog "" "-lz" ; then
1762 :
1763 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001764 error_exit "zlib check failed" \
1765 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001766 fi
balrogac629222008-10-11 09:56:04 +00001767fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001768LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001769
1770##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001771# lzo check
1772
1773if test "$lzo" != "no" ; then
1774 cat > $TMPC << EOF
1775#include <lzo/lzo1x.h>
1776int main(void) { lzo_version(); return 0; }
1777EOF
1778 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001779 libs_softmmu="$libs_softmmu -llzo2"
1780 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001781 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001782 if test "$lzo" = "yes"; then
1783 feature_not_found "liblzo2" "Install liblzo2 devel"
1784 fi
1785 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001786 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001787fi
1788
1789##########################################
1790# snappy check
1791
1792if test "$snappy" != "no" ; then
1793 cat > $TMPC << EOF
1794#include <snappy-c.h>
1795int main(void) { snappy_max_compressed_length(4096); return 0; }
1796EOF
1797 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001798 libs_softmmu="$libs_softmmu -lsnappy"
1799 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001800 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001801 if test "$snappy" = "yes"; then
1802 feature_not_found "libsnappy" "Install libsnappy devel"
1803 fi
1804 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001805 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001806fi
1807
1808##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001809# bzip2 check
1810
1811if test "$bzip2" != "no" ; then
1812 cat > $TMPC << EOF
1813#include <bzlib.h>
1814int main(void) { BZ2_bzlibVersion(); return 0; }
1815EOF
1816 if compile_prog "" "-lbz2" ; then
1817 bzip2="yes"
1818 else
1819 if test "$bzip2" = "yes"; then
1820 feature_not_found "libbzip2" "Install libbzip2 devel"
1821 fi
1822 bzip2="no"
1823 fi
1824fi
1825
1826##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001827# libseccomp check
1828
1829if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001830 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1831 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001832 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001833 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001834 seccomp="yes"
1835 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001836 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001837 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001838 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001839 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001840 fi
1841fi
1842##########################################
aliguorie37630c2009-04-22 15:19:10 +00001843# xen probe
1844
Juan Quintelafc321b42009-08-12 18:29:55 +02001845if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001846 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001847
Stefan Weil50ced5b2011-12-17 09:27:39 +01001848 # First we test whether Xen headers and libraries are available.
1849 # If no, we are done and there is no Xen support.
1850 # If yes, more tests are run to detect the Xen version.
1851
1852 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001853 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001854#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001855int main(void) {
1856 return 0;
1857}
1858EOF
1859 if ! compile_prog "" "$xen_libs" ; then
1860 # Xen not found
1861 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001862 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001863 fi
1864 xen=no
1865
1866 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001867 elif
1868 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001869#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001870#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001871#include <stdint.h>
1872#include <xen/hvm/hvm_info_table.h>
1873#if !defined(HVM_MAX_VCPUS)
1874# error HVM_MAX_VCPUS not defined
1875#endif
1876int main(void) {
1877 xc_interface *xc;
1878 xs_daemon_open();
1879 xc = xc_interface_open(0, 0, 0);
1880 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1881 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001882 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001883 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001884 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1885 return 0;
1886}
1887EOF
1888 compile_prog "" "$xen_libs"
1889 then
1890 xen_ctrl_version=450
1891 xen=yes
1892
1893 elif
1894 cat > $TMPC <<EOF &&
1895#include <xenctrl.h>
1896#include <xenstore.h>
1897#include <stdint.h>
1898#include <xen/hvm/hvm_info_table.h>
1899#if !defined(HVM_MAX_VCPUS)
1900# error HVM_MAX_VCPUS not defined
1901#endif
1902int main(void) {
1903 xc_interface *xc;
1904 xs_daemon_open();
1905 xc = xc_interface_open(0, 0, 0);
1906 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1907 xc_gnttab_open(NULL, 0);
1908 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1909 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001910 return 0;
1911}
1912EOF
1913 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001914 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00001915 xen_ctrl_version=420
1916 xen=yes
1917
Peter Maydell69deef02012-08-02 18:30:26 +01001918 elif
1919 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00001920#include <xenctrl.h>
1921#include <xs.h>
1922#include <stdint.h>
1923#include <xen/hvm/hvm_info_table.h>
1924#if !defined(HVM_MAX_VCPUS)
1925# error HVM_MAX_VCPUS not defined
1926#endif
1927int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00001928 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01001929 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001930 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1931 xc_gnttab_open(NULL, 0);
1932 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001933 return 0;
1934}
aliguorie37630c2009-04-22 15:19:10 +00001935EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01001936 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001937 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001938 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02001939 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001940
1941 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01001942 elif
1943 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001944#include <xenctrl.h>
1945#include <xs.h>
1946#include <stdint.h>
1947#include <xen/hvm/hvm_info_table.h>
1948#if !defined(HVM_MAX_VCPUS)
1949# error HVM_MAX_VCPUS not defined
1950#endif
1951int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01001952 struct xen_add_to_physmap xatp = {
1953 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1954 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001955 xs_daemon_open();
1956 xc_interface_open();
1957 xc_gnttab_open();
1958 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001959 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001960 return 0;
1961}
1962EOF
1963 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001964 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001965 xen_ctrl_version=400
1966 xen=yes
1967
Anthony PERARDb87de242011-05-24 14:34:20 +01001968 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01001969 elif
1970 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01001971#include <xenctrl.h>
1972#include <xs.h>
1973int main(void) {
1974 struct xen_add_to_physmap xatp = {
1975 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1976 };
1977 xs_daemon_open();
1978 xc_interface_open();
1979 xc_gnttab_open();
1980 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1981 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1982 return 0;
1983}
1984EOF
1985 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001986 then
Anthony PERARDb87de242011-05-24 14:34:20 +01001987 xen_ctrl_version=340
1988 xen=yes
1989
1990 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01001991 elif
1992 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001993#include <xenctrl.h>
1994#include <xs.h>
1995int main(void) {
1996 xs_daemon_open();
1997 xc_interface_open();
1998 xc_gnttab_open();
1999 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2000 return 0;
2001}
2002EOF
2003 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002004 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002005 xen_ctrl_version=330
2006 xen=yes
2007
Stefan Weil50ced5b2011-12-17 09:27:39 +01002008 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002009 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002010 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002011 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002012 fi
2013 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002014 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002015
2016 if test "$xen" = yes; then
2017 libs_softmmu="$xen_libs $libs_softmmu"
2018 fi
aliguorie37630c2009-04-22 15:19:10 +00002019fi
2020
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002021if test "$xen_pci_passthrough" != "no"; then
2022 if test "$xen" = "yes" && test "$linux" = "yes" &&
2023 test "$xen_ctrl_version" -ge 340; then
2024 xen_pci_passthrough=yes
2025 else
2026 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002027 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002028 error_exit "User requested feature Xen PCI Passthrough" \
2029 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002030 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002031 error_exit "User requested feature Xen PCI Passthrough" \
2032 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002033 fi
2034 xen_pci_passthrough=no
2035 fi
2036fi
2037
aliguorie37630c2009-04-22 15:19:10 +00002038##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002039# libtool probe
2040
Brad3f534582011-08-13 20:30:14 -04002041if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002042 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002043fi
2044
Peter Maydell8e515b12013-05-04 21:57:51 +01002045# MacOSX ships with a libtool which isn't the GNU one; weed this
2046# out by checking whether libtool supports the --version switch
2047if test -n "$libtool"; then
2048 if ! "$libtool" --version >/dev/null 2>&1; then
2049 libtool=
2050 fi
2051fi
2052
Alon Levy44dc0ca2011-05-15 11:51:28 +03002053##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002054# Sparse probe
2055if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002056 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002057 sparse=yes
2058 else
2059 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002060 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002061 fi
2062 sparse=no
2063 fi
2064fi
2065
2066##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002067# X11 probe
2068x11_cflags=
2069x11_libs=-lX11
2070if $pkg_config --exists "x11"; then
2071 x11_cflags=`$pkg_config --cflags x11`
2072 x11_libs=`$pkg_config --libs x11`
2073fi
2074
2075##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002076# GTK probe
2077
Stefan Weil9e04c682014-05-17 16:29:18 +02002078if test "$gtkabi" = ""; then
2079 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2080 # Use 3.0 as a fallback if that is available.
2081 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2082 gtkabi=2.0
2083 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2084 gtkabi=3.0
2085 else
2086 gtkabi=2.0
2087 fi
2088fi
2089
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002090if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002091 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002092 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002093 if test "$gtkabi" = "3.0" ; then
2094 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002095 else
2096 gtkversion="2.18.0"
2097 fi
2098 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2099 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2100 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002101 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002102 gtk_cflags="$gtk_cflags $x11_cflags"
2103 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002104 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002105 libs_softmmu="$gtk_libs $libs_softmmu"
2106 gtk="yes"
2107 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002108 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002109 else
2110 gtk="no"
2111 fi
2112fi
2113
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002114
2115##########################################
2116# GNUTLS probe
2117
Peter Maydell37371292015-07-24 18:28:08 +01002118gnutls_works() {
2119 # Unfortunately some distros have bad pkg-config information for gnutls
2120 # such that it claims to exist but you get a compiler error if you try
2121 # to use the options returned by --libs. Specifically, Ubuntu for --static
2122 # builds doesn't work:
2123 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2124 #
2125 # So sanity check the cflags/libs before assuming gnutls can be used.
2126 if ! $pkg_config --exists "gnutls"; then
2127 return 1
2128 fi
2129
2130 write_c_skeleton
2131 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2132}
2133
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002134gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002135gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002136if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002137 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002138 gnutls_cflags=`$pkg_config --cflags gnutls`
2139 gnutls_libs=`$pkg_config --libs gnutls`
2140 libs_softmmu="$gnutls_libs $libs_softmmu"
2141 libs_tools="$gnutls_libs $libs_tools"
2142 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2143 gnutls="yes"
2144
2145 # gnutls_hash_init requires >= 2.9.10
2146 if $pkg_config --exists "gnutls >= 2.9.10"; then
2147 gnutls_hash="yes"
2148 else
2149 gnutls_hash="no"
2150 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002151
2152 if $pkg_config --exists 'gnutls >= 3.0'; then
2153 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002154 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002155 elif $pkg_config --exists 'gnutls >= 2.12'; then
2156 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002157 *gcrypt*)
2158 gnutls_gcrypt=yes
2159 gnutls_nettle=no
2160 ;;
2161 *nettle*)
2162 gnutls_gcrypt=no
2163 gnutls_nettle=yes
2164 ;;
2165 *)
2166 gnutls_gcrypt=yes
2167 gnutls_nettle=no
2168 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002169 esac
2170 else
2171 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002172 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002173 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002174 elif test "$gnutls" = "yes"; then
2175 feature_not_found "gnutls" "Install gnutls devel"
2176 else
2177 gnutls="no"
2178 gnutls_hash="no"
2179 fi
2180else
2181 gnutls_hash="no"
2182fi
2183
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002184if test "$gnutls_gcrypt" != "no"; then
2185 if has "libgcrypt-config"; then
2186 gcrypt_cflags=`libgcrypt-config --cflags`
2187 gcrypt_libs=`libgcrypt-config --libs`
2188 libs_softmmu="$gcrypt_libs $libs_softmmu"
2189 libs_tools="$gcrypt_libs $libs_tools"
2190 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2191 else
2192 feature_not_found "gcrypt" "Install gcrypt devel"
2193 fi
2194fi
2195
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002196
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002197if test "$gnutls_nettle" != "no"; then
2198 if $pkg_config --exists "nettle"; then
2199 nettle_cflags=`$pkg_config --cflags nettle`
2200 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002201 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002202 libs_softmmu="$nettle_libs $libs_softmmu"
2203 libs_tools="$nettle_libs $libs_tools"
2204 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2205 else
2206 feature_not_found "nettle" "Install nettle devel"
2207 fi
2208fi
2209
2210
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002211##########################################
2212# VTE probe
2213
2214if test "$vte" != "no"; then
2215 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002216 vtepackage="vte-2.90"
2217 vteversion="0.32.0"
2218 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002219 vtepackage="vte"
2220 vteversion="0.24.0"
2221 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002222 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2223 vte_cflags=`$pkg_config --cflags $vtepackage`
2224 vte_libs=`$pkg_config --libs $vtepackage`
2225 libs_softmmu="$vte_libs $libs_softmmu"
2226 vte="yes"
2227 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002228 if test "$gtkabi" = "3.0"; then
2229 feature_not_found "vte" "Install libvte-2.90 devel"
2230 else
2231 feature_not_found "vte" "Install libvte devel"
2232 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002233 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002234 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002235 fi
2236fi
2237
2238##########################################
bellard11d9f692004-04-02 20:55:59 +00002239# SDL probe
2240
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002241# Look for sdl configuration program (pkg-config or sdl-config). Try
2242# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002243
2244if test $sdlabi = "2.0"; then
2245 sdl_config=$sdl2_config
2246 sdlname=sdl2
2247 sdlconfigname=sdl2_config
2248else
2249 sdlname=sdl
2250 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002251fi
2252
Dave Airlie47c03742013-12-10 14:05:51 +10002253if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2254 sdl_config=$sdlconfigname
2255fi
2256
2257if $pkg_config $sdlname --exists; then
2258 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002259 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002260elif has ${sdl_config}; then
2261 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002262 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002263else
2264 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002265 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002266 fi
2267 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002268fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002269if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002270 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2271fi
bellard11d9f692004-04-02 20:55:59 +00002272
Paolo Bonzini9316f802010-01-13 09:52:55 +01002273sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002274if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002275 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002276#include <SDL.h>
2277#undef main /* We don't want SDL to override our main() */
2278int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2279EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002280 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002281 if test "$static" = "yes" ; then
2282 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2283 else
2284 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2285 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002286 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002287 if test "$_sdlversion" -lt 121 ; then
2288 sdl_too_old=yes
2289 else
2290 if test "$cocoa" = "no" ; then
2291 sdl=yes
2292 fi
2293 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002294
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002295 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002296 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002297 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002298 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2299 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002300 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002301 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002302 :
2303 else
2304 sdl=no
2305 fi
2306 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002307 else # sdl not found
2308 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002309 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002310 fi
2311 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002312 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002313fi
bellard11d9f692004-04-02 20:55:59 +00002314
aliguori5368a422009-03-03 17:37:21 +00002315if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002316 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002317#include <SDL.h>
2318#if defined(SDL_VIDEO_DRIVER_X11)
2319#include <X11/XKBlib.h>
2320#else
2321#error No x11 support
2322#endif
2323int main(void) { return 0; }
2324EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002325 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2326 sdl_cflags="$sdl_cflags $x11_cflags"
2327 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002328 fi
Juan Quintela07056672009-08-03 14:46:27 +02002329 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002330fi
2331
ths8f28f3f2007-01-05 21:25:54 +00002332##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002333# RDMA needs OpenFabrics libraries
2334if test "$rdma" != "no" ; then
2335 cat > $TMPC <<EOF
2336#include <rdma/rdma_cma.h>
2337int main(void) { return 0; }
2338EOF
2339 rdma_libs="-lrdmacm -libverbs"
2340 if compile_prog "" "$rdma_libs" ; then
2341 rdma="yes"
2342 libs_softmmu="$libs_softmmu $rdma_libs"
2343 else
2344 if test "$rdma" = "yes" ; then
2345 error_exit \
2346 " OpenFabrics librdmacm/libibverbs not present." \
2347 " Your options:" \
2348 " (1) Fast: Install infiniband packages from your distro." \
2349 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2350 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2351 fi
2352 rdma="no"
2353 fi
2354fi
2355
2356##########################################
Tim Hardeck7536ee42013-01-21 11:04:44 +01002357# VNC TLS/WS detection
Daniel P. Berrange8e9b0d22015-07-01 18:10:36 +01002358if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
Juan Quintela1be10ad2009-08-12 18:20:28 +02002359 cat > $TMPC <<EOF
aliguoriae6b5e52008-08-06 16:55:50 +00002360#include <gnutls/gnutls.h>
2361int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2362EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002363 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2364 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
Juan Quintela1be10ad2009-08-12 18:20:28 +02002365 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
Tim Hardeck7536ee42013-01-21 11:04:44 +01002366 if test "$vnc_tls" != "no" ; then
2367 vnc_tls=yes
2368 fi
Juan Quintela1be10ad2009-08-12 18:20:28 +02002369 libs_softmmu="$vnc_tls_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002370 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
Juan Quintela1be10ad2009-08-12 18:20:28 +02002371 else
2372 if test "$vnc_tls" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002373 feature_not_found "vnc-tls" "Install gnutls devel"
aliguoriae6b5e52008-08-06 16:55:50 +00002374 fi
Juan Quintela1be10ad2009-08-12 18:20:28 +02002375 vnc_tls=no
2376 fi
ths8d5d2d42007-08-25 01:37:51 +00002377fi
2378
2379##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002380# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002381if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002382 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002383#include <sasl/sasl.h>
2384#include <stdio.h>
2385int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2386EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002387 # Assuming Cyrus-SASL installed in /usr prefix
2388 vnc_sasl_cflags=""
2389 vnc_sasl_libs="-lsasl2"
2390 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2391 vnc_sasl=yes
2392 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002393 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002394 else
2395 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002396 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002397 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002398 vnc_sasl=no
2399 fi
aliguori2f9606b2009-03-06 20:27:28 +00002400fi
2401
2402##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002403# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002404if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002405cat > $TMPC <<EOF
2406#include <stdio.h>
2407#include <jpeglib.h>
2408int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2409EOF
2410 vnc_jpeg_cflags=""
2411 vnc_jpeg_libs="-ljpeg"
2412 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2413 vnc_jpeg=yes
2414 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002415 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002416 else
2417 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002418 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002419 fi
2420 vnc_jpeg=no
2421 fi
2422fi
2423
2424##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002425# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002426if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002427cat > $TMPC <<EOF
2428//#include <stdio.h>
2429#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002430#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002431int main(void) {
2432 png_structp png_ptr;
2433 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002434 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002435}
2436EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002437 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002438 vnc_png_cflags=`$pkg_config libpng --cflags`
2439 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002440 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002441 vnc_png_cflags=""
2442 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002443 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002444 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2445 vnc_png=yes
2446 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002447 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002448 else
2449 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002450 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002451 fi
2452 vnc_png=no
2453 fi
2454fi
2455
2456##########################################
aliguori76655d62009-03-06 20:27:37 +00002457# fnmatch() probe, used for ACL routines
2458fnmatch="no"
2459cat > $TMPC << EOF
2460#include <fnmatch.h>
2461int main(void)
2462{
2463 fnmatch("foo", "foo", 0);
2464 return 0;
2465}
2466EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002467if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002468 fnmatch="yes"
2469fi
2470
2471##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002472# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002473# Note that on some systems (notably MacOSX) no extra library
2474# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002475if test "$uuid" != "no" ; then
2476 uuid_libs="-luuid"
2477 cat > $TMPC << EOF
2478#include <uuid/uuid.h>
2479int main(void)
2480{
2481 uuid_t my_uuid;
2482 uuid_generate(my_uuid);
2483 return 0;
2484}
2485EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002486 if compile_prog "" "" ; then
2487 uuid="yes"
2488 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002489 uuid="yes"
2490 libs_softmmu="$uuid_libs $libs_softmmu"
2491 libs_tools="$uuid_libs $libs_tools"
2492 else
2493 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002494 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002495 fi
2496 uuid=no
2497 fi
2498fi
2499
Jeff Cody4f18b782013-10-30 10:44:39 -04002500if test "$vhdx" = "yes" ; then
2501 if test "$uuid" = "no" ; then
2502 error_exit "uuid required for VHDX support"
2503 fi
2504elif test "$vhdx" != "no" ; then
2505 if test "$uuid" = "yes" ; then
2506 vhdx=yes
2507 else
2508 vhdx=no
2509 fi
2510fi
2511
Stefan Weilee682d22009-10-01 20:10:37 +02002512##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002513# xfsctl() probe, used for raw-posix
2514if test "$xfs" != "no" ; then
2515 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002516#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002517#include <xfs/xfs.h>
2518int main(void)
2519{
2520 xfsctl(NULL, 0, 0, NULL);
2521 return 0;
2522}
2523EOF
2524 if compile_prog "" "" ; then
2525 xfs="yes"
2526 else
2527 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002528 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002529 fi
2530 xfs=no
2531 fi
2532fi
2533
2534##########################################
ths8a16d272008-07-19 09:56:24 +00002535# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002536if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002537 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002538 cat > $TMPC << EOF
2539#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002540int main(void)
2541{
2542 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002543 char s[] = "";
2544 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002545 return 0;
2546}
ths8a16d272008-07-19 09:56:24 +00002547EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002548 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002549 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002550 libs_softmmu="$vde_libs $libs_softmmu"
2551 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002552 else
2553 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002554 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002555 fi
2556 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002557 fi
ths8a16d272008-07-19 09:56:24 +00002558fi
2559
2560##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002561# netmap support probe
2562# Apart from looking for netmap headers, we make sure that the host API version
2563# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2564# a minor/major version number. Minor new features will be marked with values up
2565# to 15, and if something happens that requires a change to the backend we will
2566# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002567if test "$netmap" != "no" ; then
2568 cat > $TMPC << EOF
2569#include <inttypes.h>
2570#include <net/if.h>
2571#include <net/netmap.h>
2572#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002573#if (NETMAP_API < 11) || (NETMAP_API > 15)
2574#error
2575#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002576int main(void) { return 0; }
2577EOF
2578 if compile_prog "" "" ; then
2579 netmap=yes
2580 else
2581 if test "$netmap" = "yes" ; then
2582 feature_not_found "netmap"
2583 fi
2584 netmap=no
2585 fi
2586fi
2587
2588##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002589# libcap-ng library probe
2590if test "$cap_ng" != "no" ; then
2591 cap_libs="-lcap-ng"
2592 cat > $TMPC << EOF
2593#include <cap-ng.h>
2594int main(void)
2595{
2596 capng_capability_to_name(CAPNG_EFFECTIVE);
2597 return 0;
2598}
2599EOF
2600 if compile_prog "" "$cap_libs" ; then
2601 cap_ng=yes
2602 libs_tools="$cap_libs $libs_tools"
2603 else
2604 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002605 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002606 fi
2607 cap_ng=no
2608 fi
2609fi
2610
2611##########################################
malcc2de5c92008-06-28 19:13:06 +00002612# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002613
malcc2de5c92008-06-28 19:13:06 +00002614audio_drv_probe()
2615{
2616 drv=$1
2617 hdr=$2
2618 lib=$3
2619 exp=$4
2620 cfl=$5
2621 cat > $TMPC << EOF
2622#include <$hdr>
2623int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002624EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002625 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002626 :
2627 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002628 error_exit "$drv check failed" \
2629 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002630 fi
2631}
2632
malc2fa7d3b2008-07-29 12:58:44 +00002633audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002634for drv in $audio_drv_list; do
2635 case $drv in
2636 alsa)
2637 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002638 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002639 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002640 ;;
2641
malcb8e59f12008-07-02 21:03:08 +00002642 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002643 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2644 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2645 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002646 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002647 ;;
2648
Juan Quintela997e6902009-08-03 14:46:29 +02002649 coreaudio)
2650 libs_softmmu="-framework CoreAudio $libs_softmmu"
2651 ;;
2652
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002653 dsound)
2654 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002655 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002656 ;;
2657
2658 oss)
2659 libs_softmmu="$oss_lib $libs_softmmu"
2660 ;;
2661
2662 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002663 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2664 ;;
2665
malce4c63a62008-07-19 16:15:16 +00002666 *)
malc1c9b2a52008-07-19 16:57:30 +00002667 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002668 error_exit "Unknown driver '$drv' selected" \
2669 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002670 }
2671 ;;
malcc2de5c92008-06-28 19:13:06 +00002672 esac
2673done
ths8f28f3f2007-01-05 21:25:54 +00002674
balrog4d3b6f62008-02-10 16:33:14 +00002675##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002676# BrlAPI probe
2677
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002678if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002679 brlapi_libs="-lbrlapi"
2680 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002681#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002682#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002683int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2684EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002685 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002686 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002687 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002688 else
2689 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002690 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002691 fi
2692 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002693 fi
2694fi
aurel322e4d9fb2008-04-08 06:01:02 +00002695
2696##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002697# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002698if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002699 if test "$mingw32" = "yes" ; then
2700 curses_list="-lpdcurses"
2701 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002702 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002703 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002704 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002705 cat > $TMPC << EOF
2706#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002707int main(void) {
2708 const char *s = curses_version();
2709 resize_term(0, 0);
2710 return s != 0;
2711}
balrog4d3b6f62008-02-10 16:33:14 +00002712EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002713 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002714 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002715 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002716 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002717 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002718 libs_softmmu="$curses_lib $libs_softmmu"
2719 break
2720 fi
2721 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002722 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002723 if test "$curses_found" = "yes" ; then
2724 curses=yes
2725 else
2726 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002727 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002728 fi
2729 curses=no
2730 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002731fi
balrog4d3b6f62008-02-10 16:33:14 +00002732
blueswir1414f0da2008-08-15 18:20:52 +00002733##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002734# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002735if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002736 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002737 curlconfig="$pkg_config libcurl"
2738 else
2739 curlconfig=curl-config
2740 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002741 cat > $TMPC << EOF
2742#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002743int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002744EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002745 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2746 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002747 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002748 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002749 else
2750 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002751 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002752 fi
2753 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002754 fi
2755fi # test "$curl"
2756
2757##########################################
balrogfb599c92008-09-28 23:49:55 +00002758# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002759if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002760 cat > $TMPC << EOF
2761#include <bluetooth/bluetooth.h>
2762int main(void) { return bt_error(0); }
2763EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002764 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2765 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002766 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002767 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002768 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002769 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002770 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002771 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002772 fi
balroge820e3f2008-09-30 02:27:44 +00002773 bluez="no"
2774 fi
balrogfb599c92008-09-28 23:49:55 +00002775fi
2776
2777##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002778# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002779
John Snowf40685c2015-05-22 14:13:42 -04002780glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002781glib_modules=gthread-2.0
2782if test "$modules" = yes; then
2783 glib_modules="$glib_modules gmodule-2.0"
2784fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002785
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002786for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002787 if $pkg_config --atleast-version=$glib_req_ver $i; then
2788 glib_cflags=`$pkg_config --cflags $i`
2789 glib_libs=`$pkg_config --libs $i`
2790 CFLAGS="$glib_cflags $CFLAGS"
2791 LIBS="$glib_libs $LIBS"
2792 libs_qga="$glib_libs $libs_qga"
2793 else
2794 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2795 fi
2796done
2797
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002798# g_test_trap_subprocess added in 2.38. Used by some tests.
2799glib_subprocess=yes
2800if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2801 glib_subprocess=no
2802fi
2803
John Snowbbbf2e02015-03-25 18:57:38 -04002804# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2805cat > $TMPC << EOF
2806#include <glib.h>
2807int main(void) { return 0; }
2808EOF
2809if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2810 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2811 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2812 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2813 fi
2814fi
2815
Fam Zhenge26110c2014-02-10 14:48:57 +08002816##########################################
2817# SHA command probe for modules
2818if test "$modules" = yes; then
2819 shacmd_probe="sha1sum sha1 shasum"
2820 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002821 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002822 shacmd="$c"
2823 break
2824 fi
2825 done
2826 if test "$shacmd" = ""; then
2827 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2828 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002829fi
2830
2831##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002832# pixman support probe
2833
2834if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002835 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2836 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002837 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002838 pixman="system"
2839 else
2840 pixman="internal"
2841 fi
2842fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002843if test "$pixman" = "none"; then
2844 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002845 error_exit "pixman disabled but system emulation or tools build" \
2846 "enabled. You can turn off pixman only if you also" \
2847 "disable all system emulation targets and the tools" \
2848 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002849 fi
2850 pixman_cflags=
2851 pixman_libs=
2852elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002853 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002854 pixman_cflags=`$pkg_config --cflags pixman-1`
2855 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002856else
2857 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08002858 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01002859 " (1) Preferred: Install the pixman devel package (any recent" \
2860 " distro should have packages as Xorg needs pixman too)." \
2861 " (2) Fetch the pixman submodule, using:" \
2862 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002863 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01002864 mkdir -p pixman/pixman
2865 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2866 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002867fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002868
2869##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302870# libcap probe
2871
2872if test "$cap" != "no" ; then
2873 cat > $TMPC <<EOF
2874#include <stdio.h>
2875#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01002876int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302877EOF
2878 if compile_prog "" "-lcap" ; then
2879 cap=yes
2880 else
2881 cap=no
2882 fi
2883fi
2884
2885##########################################
aliguorie5d355d2009-04-24 18:03:15 +00002886# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04002887PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00002888
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02002889pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00002890cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00002891#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01002892static void *f(void *p) { return NULL; }
2893int main(void) {
2894 pthread_t thread;
2895 pthread_create(&thread, 0, f, 0);
2896 return 0;
2897}
blueswir1414f0da2008-08-15 18:20:52 +00002898EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02002899if compile_prog "" "" ; then
2900 pthread=yes
2901else
2902 for pthread_lib in $PTHREADLIBS_LIST; do
2903 if compile_prog "" "$pthread_lib" ; then
2904 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04002905 found=no
2906 for lib_entry in $LIBS; do
2907 if test "$lib_entry" = "$pthread_lib"; then
2908 found=yes
2909 break
2910 fi
2911 done
2912 if test "$found" = "no"; then
2913 LIBS="$pthread_lib $LIBS"
2914 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02002915 break
2916 fi
2917 done
2918fi
blueswir1414f0da2008-08-15 18:20:52 +00002919
Anthony Liguori4617e592009-08-25 17:21:56 -05002920if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002921 error_exit "pthread check failed" \
2922 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00002923fi
2924
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00002925# check for pthread_setname_np
2926pthread_setname_np=no
2927cat > $TMPC << EOF
2928#include <pthread.h>
2929
2930static void *f(void *p) { return NULL; }
2931int main(void)
2932{
2933 pthread_t thread;
2934 pthread_create(&thread, 0, f, 0);
2935 pthread_setname_np(thread, "QEMU");
2936 return 0;
2937}
2938EOF
2939if compile_prog "" "$pthread_lib" ; then
2940 pthread_setname_np=yes
2941fi
2942
aliguoribf9298b2008-12-05 20:05:26 +00002943##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002944# rbd probe
2945if test "$rbd" != "no" ; then
2946 cat > $TMPC <<EOF
2947#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07002948#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002949int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07002950 rados_t cluster;
2951 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002952 return 0;
2953}
2954EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07002955 rbd_libs="-lrbd -lrados"
2956 if compile_prog "" "$rbd_libs" ; then
2957 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002958 else
2959 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002960 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002961 fi
2962 rbd=no
2963 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01002964fi
2965
2966##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002967# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01002968min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002969if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002970 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002971 libssh2_cflags=`$pkg_config libssh2 --cflags`
2972 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002973 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002974 else
2975 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01002976 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01002977 fi
2978 libssh2=no
2979 fi
2980fi
2981
2982##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01002983# libssh2_sftp_fsync probe
2984
2985if test "$libssh2" = "yes"; then
2986 cat > $TMPC <<EOF
2987#include <stdio.h>
2988#include <libssh2.h>
2989#include <libssh2_sftp.h>
2990int main(void) {
2991 LIBSSH2_SESSION *session;
2992 LIBSSH2_SFTP *sftp;
2993 LIBSSH2_SFTP_HANDLE *sftp_handle;
2994 session = libssh2_session_init ();
2995 sftp = libssh2_sftp_init (session);
2996 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2997 libssh2_sftp_fsync (sftp_handle);
2998 return 0;
2999}
3000EOF
3001 # libssh2_cflags/libssh2_libs defined in previous test.
3002 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3003 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3004 fi
3005fi
3006
3007##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003008# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003009
3010if test "$linux_aio" != "no" ; then
3011 cat > $TMPC <<EOF
3012#include <libaio.h>
3013#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003014#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003015int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3016EOF
3017 if compile_prog "" "-laio" ; then
3018 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003019 else
3020 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003021 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003022 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003023 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003024 fi
3025fi
3026
3027##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003028# TPM passthrough is only on x86 Linux
3029
3030if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3031 tpm_passthrough=$tpm
3032else
3033 tpm_passthrough=no
3034fi
3035
3036##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003037# attr probe
3038
3039if test "$attr" != "no" ; then
3040 cat > $TMPC <<EOF
3041#include <stdio.h>
3042#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003043#ifdef CONFIG_LIBATTR
3044#include <attr/xattr.h>
3045#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003046#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003047#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003048int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3049EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003050 if compile_prog "" "" ; then
3051 attr=yes
3052 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003053 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003054 attr=yes
3055 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003056 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003057 else
3058 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003059 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003060 fi
3061 attr=no
3062 fi
3063fi
3064
3065##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003066# iovec probe
3067cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003068#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003069#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003070#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003071int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003072EOF
3073iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003074if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003075 iovec=yes
3076fi
3077
aurel32f652e6a2008-12-16 10:43:48 +00003078##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003079# preadv probe
3080cat > $TMPC <<EOF
3081#include <sys/types.h>
3082#include <sys/uio.h>
3083#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003084int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003085EOF
3086preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003087if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003088 preadv=yes
3089fi
3090
3091##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003092# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003093# fdt support is mandatory for at least some target architectures,
3094# so insist on it if we're building those system emulators.
3095fdt_required=no
3096for target in $target_list; do
3097 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003098 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003099 fdt_required=yes
3100 ;;
3101 esac
3102done
3103
3104if test "$fdt_required" = "yes"; then
3105 if test "$fdt" = "no"; then
3106 error_exit "fdt disabled but some requested targets require it." \
3107 "You can turn off fdt only if you also disable all the system emulation" \
3108 "targets which need it (by specifying a cut down --target-list)."
3109 fi
3110 fdt=yes
3111fi
3112
Juan Quintela2df87df2009-08-12 18:29:54 +02003113if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003114 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003115 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003116 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003117 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003118#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003119#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003120int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003121EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003122 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003123 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003124 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003125 elif test -d ${source_path}/dtc/libfdt ; then
3126 # have submodule DTC - use it
3127 fdt=yes
3128 dtc_internal="yes"
3129 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003130 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003131 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3132 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003133 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003134 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3135 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3136 elif test "$fdt" = "yes" ; then
3137 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003138 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003139 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003140 " (2) Fetch the DTC submodule, using:" \
3141 " git submodule update --init dtc"
3142 else
3143 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003144 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003145 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003146 fi
3147fi
3148
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003149libs_softmmu="$libs_softmmu $fdt_libs"
3150
Michael Walle20ff0752011-03-07 23:32:39 +01003151##########################################
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003152# opengl probe (for sdl2, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003153
3154# GLX probe, used by milkymist-tmu2
3155# this is temporary, code will be switched to egl mid-term.
3156cat > $TMPC << EOF
3157#include <X11/Xlib.h>
3158#include <GL/gl.h>
3159#include <GL/glx.h>
3160int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3161EOF
3162if compile_prog "" "-lGL -lX11" ; then
3163 have_glx=yes
3164else
3165 have_glx=no
3166fi
3167
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003168if test "$opengl" != "no" ; then
Gerd Hoffmann7ced9e92015-01-06 15:40:00 +01003169 opengl_pkgs="gl glesv2 epoxy egl"
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003170 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003171 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3172 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003173 opengl=yes
Michael Walle20ff0752011-03-07 23:32:39 +01003174 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003175 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003176 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003177 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003178 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003179 opengl_libs=""
3180 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003181 fi
3182fi
3183
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003184
3185##########################################
3186# archipelago probe
3187if test "$archipelago" != "no" ; then
3188 cat > $TMPC <<EOF
3189#include <stdio.h>
3190#include <xseg/xseg.h>
3191#include <xseg/protocol.h>
3192int main(void) {
3193 xseg_initialize();
3194 return 0;
3195}
3196EOF
3197 archipelago_libs=-lxseg
3198 if compile_prog "" "$archipelago_libs"; then
3199 archipelago="yes"
3200 libs_tools="$archipelago_libs $libs_tools"
3201 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003202
3203 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3204 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3205 echo "license and therefore prevent redistribution."
3206 echo
3207 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003208 else
3209 if test "$archipelago" = "yes" ; then
3210 feature_not_found "Archipelago backend support" "Install libxseg devel"
3211 fi
3212 archipelago="no"
3213 fi
3214fi
3215
3216
Bharata B Raoeb100392012-09-24 14:42:45 +05303217##########################################
3218# glusterfs probe
3219if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003220 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303221 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003222 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3223 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003224 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303225 glusterfs_discard="yes"
3226 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303227 if $pkg_config --atleast-version=6 glusterfs-api; then
3228 glusterfs_zerofill="yes"
3229 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303230 else
3231 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003232 feature_not_found "GlusterFS backend support" \
3233 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303234 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303235 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303236 fi
3237fi
3238
aurel3239386ac2009-04-15 19:48:17 +00003239# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003240# emulator. This is done because older glibc versions don't
3241# have syscall stubs for these implemented. In that case we
3242# don't provide them even if kernel supports them.
3243#
3244inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003245cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003246#include <sys/inotify.h>
3247
3248int
3249main(void)
3250{
3251 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003252 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003253}
3254EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003255if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003256 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003257fi
3258
Riku Voipioc05c7a72010-03-26 15:25:11 +00003259inotify1=no
3260cat > $TMPC << EOF
3261#include <sys/inotify.h>
3262
3263int
3264main(void)
3265{
3266 /* try to start inotify */
3267 return inotify_init1(0);
3268}
3269EOF
3270if compile_prog "" "" ; then
3271 inotify1=yes
3272fi
3273
Riku Voipioebc996f2009-04-21 15:01:51 +03003274# check if utimensat and futimens are supported
3275utimens=no
3276cat > $TMPC << EOF
3277#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003278#include <stddef.h>
3279#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003280#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003281
3282int main(void)
3283{
3284 utimensat(AT_FDCWD, "foo", NULL, 0);
3285 futimens(0, NULL);
3286 return 0;
3287}
3288EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003289if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003290 utimens=yes
3291fi
3292
Riku Voipio099d6b02009-05-05 12:10:04 +03003293# check if pipe2 is there
3294pipe2=no
3295cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003296#include <unistd.h>
3297#include <fcntl.h>
3298
3299int main(void)
3300{
3301 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003302 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003303}
3304EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003305if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003306 pipe2=yes
3307fi
3308
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003309# check if accept4 is there
3310accept4=no
3311cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003312#include <sys/socket.h>
3313#include <stddef.h>
3314
3315int main(void)
3316{
3317 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3318 return 0;
3319}
3320EOF
3321if compile_prog "" "" ; then
3322 accept4=yes
3323fi
3324
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303325# check if tee/splice is there. vmsplice was added same time.
3326splice=no
3327cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303328#include <unistd.h>
3329#include <fcntl.h>
3330#include <limits.h>
3331
3332int main(void)
3333{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003334 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303335 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3336 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3337 return 0;
3338}
3339EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003340if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303341 splice=yes
3342fi
3343
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003344##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003345# libnuma probe
3346
3347if test "$numa" != "no" ; then
3348 cat > $TMPC << EOF
3349#include <numa.h>
3350int main(void) { return numa_available(); }
3351EOF
3352
3353 if compile_prog "" "-lnuma" ; then
3354 numa=yes
3355 libs_softmmu="-lnuma $libs_softmmu"
3356 else
3357 if test "$numa" = "yes" ; then
3358 feature_not_found "numa" "install numactl devel"
3359 fi
3360 numa=no
3361 fi
3362fi
3363
3364##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003365# tcmalloc probe
3366
3367if test "$tcmalloc" = "yes" ; then
3368 cat > $TMPC << EOF
3369#include <stdlib.h>
3370int main(void) { malloc(1); return 0; }
3371EOF
3372
3373 if compile_prog "" "-ltcmalloc" ; then
3374 LIBS="-ltcmalloc $LIBS"
3375 else
3376 feature_not_found "tcmalloc" "install gperftools devel"
3377 fi
3378fi
3379
3380##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003381# signalfd probe
3382signalfd="no"
3383cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003384#include <unistd.h>
3385#include <sys/syscall.h>
3386#include <signal.h>
3387int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3388EOF
3389
3390if compile_prog "" "" ; then
3391 signalfd=yes
3392fi
3393
Riku Voipioc2882b92009-08-12 15:08:24 +03003394# check if eventfd is supported
3395eventfd=no
3396cat > $TMPC << EOF
3397#include <sys/eventfd.h>
3398
3399int main(void)
3400{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003401 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003402}
3403EOF
3404if compile_prog "" "" ; then
3405 eventfd=yes
3406fi
3407
Ulrich Hechtd0927932009-09-17 20:22:14 +03003408# check for fallocate
3409fallocate=no
3410cat > $TMPC << EOF
3411#include <fcntl.h>
3412
3413int main(void)
3414{
3415 fallocate(0, 0, 0, 0);
3416 return 0;
3417}
3418EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003419if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003420 fallocate=yes
3421fi
3422
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003423# check for fallocate hole punching
3424fallocate_punch_hole=no
3425cat > $TMPC << EOF
3426#include <fcntl.h>
3427#include <linux/falloc.h>
3428
3429int main(void)
3430{
3431 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3432 return 0;
3433}
3434EOF
3435if compile_prog "" "" ; then
3436 fallocate_punch_hole=yes
3437fi
3438
Denis V. Lunevb953f072015-01-30 11:42:14 +03003439# check that fallocate supports range zeroing inside the file
3440fallocate_zero_range=no
3441cat > $TMPC << EOF
3442#include <fcntl.h>
3443#include <linux/falloc.h>
3444
3445int main(void)
3446{
3447 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3448 return 0;
3449}
3450EOF
3451if compile_prog "" "" ; then
3452 fallocate_zero_range=yes
3453fi
3454
Kevin Wolfed911432014-09-29 17:12:59 +02003455# check for posix_fallocate
3456posix_fallocate=no
3457cat > $TMPC << EOF
3458#include <fcntl.h>
3459
3460int main(void)
3461{
3462 posix_fallocate(0, 0, 0);
3463 return 0;
3464}
3465EOF
3466if compile_prog "" "" ; then
3467 posix_fallocate=yes
3468fi
3469
Peter Maydellc727f472011-01-06 11:05:10 +00003470# check for sync_file_range
3471sync_file_range=no
3472cat > $TMPC << EOF
3473#include <fcntl.h>
3474
3475int main(void)
3476{
3477 sync_file_range(0, 0, 0, 0);
3478 return 0;
3479}
3480EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003481if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003482 sync_file_range=yes
3483fi
3484
Peter Maydelldace20d2011-01-10 13:11:24 +00003485# check for linux/fiemap.h and FS_IOC_FIEMAP
3486fiemap=no
3487cat > $TMPC << EOF
3488#include <sys/ioctl.h>
3489#include <linux/fs.h>
3490#include <linux/fiemap.h>
3491
3492int main(void)
3493{
3494 ioctl(0, FS_IOC_FIEMAP, 0);
3495 return 0;
3496}
3497EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003498if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003499 fiemap=yes
3500fi
3501
Ulrich Hechtd0927932009-09-17 20:22:14 +03003502# check for dup3
3503dup3=no
3504cat > $TMPC << EOF
3505#include <unistd.h>
3506
3507int main(void)
3508{
3509 dup3(0, 0, 0);
3510 return 0;
3511}
3512EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003513if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003514 dup3=yes
3515fi
3516
Alex Bligh4e0c6522013-08-21 16:02:43 +01003517# check for ppoll support
3518ppoll=no
3519cat > $TMPC << EOF
3520#include <poll.h>
3521
3522int main(void)
3523{
3524 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3525 ppoll(&pfd, 1, 0, 0);
3526 return 0;
3527}
3528EOF
3529if compile_prog "" "" ; then
3530 ppoll=yes
3531fi
3532
Alex Blighcd758dd2013-08-21 16:02:44 +01003533# check for prctl(PR_SET_TIMERSLACK , ... ) support
3534prctl_pr_set_timerslack=no
3535cat > $TMPC << EOF
3536#include <sys/prctl.h>
3537
3538int main(void)
3539{
3540 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3541 return 0;
3542}
3543EOF
3544if compile_prog "" "" ; then
3545 prctl_pr_set_timerslack=yes
3546fi
3547
Peter Maydell3b6edd12011-02-15 18:35:05 +00003548# check for epoll support
3549epoll=no
3550cat > $TMPC << EOF
3551#include <sys/epoll.h>
3552
3553int main(void)
3554{
3555 epoll_create(0);
3556 return 0;
3557}
3558EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003559if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003560 epoll=yes
3561fi
3562
3563# epoll_create1 and epoll_pwait are later additions
3564# so we must check separately for their presence
3565epoll_create1=no
3566cat > $TMPC << EOF
3567#include <sys/epoll.h>
3568
3569int main(void)
3570{
Peter Maydell19e83f62011-04-26 16:56:40 +01003571 /* Note that we use epoll_create1 as a value, not as
3572 * a function being called. This is necessary so that on
3573 * old SPARC glibc versions where the function was present in
3574 * the library but not declared in the header file we will
3575 * fail the configure check. (Otherwise we will get a compiler
3576 * warning but not an error, and will proceed to fail the
3577 * qemu compile where we compile with -Werror.)
3578 */
Blue Swirlc075a722012-08-09 20:21:25 +00003579 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003580}
3581EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003582if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003583 epoll_create1=yes
3584fi
3585
3586epoll_pwait=no
3587cat > $TMPC << EOF
3588#include <sys/epoll.h>
3589
3590int main(void)
3591{
3592 epoll_pwait(0, 0, 0, 0, 0);
3593 return 0;
3594}
3595EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003596if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003597 epoll_pwait=yes
3598fi
3599
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003600# check for sendfile support
3601sendfile=no
3602cat > $TMPC << EOF
3603#include <sys/sendfile.h>
3604
3605int main(void)
3606{
3607 return sendfile(0, 0, 0, 0);
3608}
3609EOF
3610if compile_prog "" "" ; then
3611 sendfile=yes
3612fi
3613
Riku Voipio51834342014-06-22 11:25:42 +01003614# check for timerfd support (glibc 2.8 and newer)
3615timerfd=no
3616cat > $TMPC << EOF
3617#include <sys/timerfd.h>
3618
3619int main(void)
3620{
3621 return(timerfd_create(CLOCK_REALTIME, 0));
3622}
3623EOF
3624if compile_prog "" "" ; then
3625 timerfd=yes
3626fi
3627
Riku Voipio9af5c902014-08-12 15:58:57 +03003628# check for setns and unshare support
3629setns=no
3630cat > $TMPC << EOF
3631#include <sched.h>
3632
3633int main(void)
3634{
3635 int ret;
3636 ret = setns(0, 0);
3637 ret = unshare(0);
3638 return ret;
3639}
3640EOF
3641if compile_prog "" "" ; then
3642 setns=yes
3643fi
3644
pbrookcc8ae6d2006-04-23 17:57:59 +00003645# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003646if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003647 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003648 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003649 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003650 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003651 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003652 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003653 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003654 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003655fi
3656
Stefan Weilf514f412009-10-11 12:44:07 +02003657# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003658byteswap_h=no
3659cat > $TMPC << EOF
3660#include <byteswap.h>
3661int main(void) { return bswap_32(0); }
3662EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003663if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003664 byteswap_h=yes
3665fi
3666
Stefan Weil75f13592013-01-05 12:17:38 +01003667# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003668bswap_h=no
3669cat > $TMPC << EOF
3670#include <sys/endian.h>
3671#include <sys/types.h>
3672#include <machine/bswap.h>
3673int main(void) { return bswap32(0); }
3674EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003675if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003676 bswap_h=yes
3677fi
3678
aliguorida93a1f2008-12-12 20:02:52 +00003679##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003680# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003681if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003682 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003683 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003684 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3685 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003686 else
3687 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003688 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003689 fi
3690 libiscsi="no"
3691 fi
3692fi
3693
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003694##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003695# Do we need libm
3696cat > $TMPC << EOF
3697#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003698int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003699EOF
3700if compile_prog "" "" ; then
3701 :
3702elif compile_prog "" "-lm" ; then
3703 LIBS="-lm $LIBS"
3704 libs_qga="-lm $libs_qga"
3705else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003706 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003707fi
3708
3709##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003710# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003711# uClibc provides 2 versions of clock_gettime(), one with realtime
3712# support and one without. This means that the clock_gettime() don't
3713# need -lrt. We still need it for timer_create() so we check for this
3714# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003715cat > $TMPC <<EOF
3716#include <signal.h>
3717#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003718int main(void) {
3719 timer_create(CLOCK_REALTIME, NULL, NULL);
3720 return clock_gettime(CLOCK_REALTIME, NULL);
3721}
aliguorida93a1f2008-12-12 20:02:52 +00003722EOF
3723
Juan Quintela52166aa2009-08-03 14:46:03 +02003724if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003725 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003726# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003727elif compile_prog "" "$pthread_lib -lrt" ; then
3728 LIBS="$LIBS -lrt"
3729 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003730fi
3731
Blue Swirl31ff5042009-09-12 12:33:07 +00003732if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003733 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003734 libs_softmmu="-lutil $libs_softmmu"
3735fi
3736
Blue Swirlde5071c2009-09-12 09:58:46 +00003737##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003738# spice probe
3739if test "$spice" != "no" ; then
3740 cat > $TMPC << EOF
3741#include <spice.h>
3742int main(void) { spice_server_new(); return 0; }
3743EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003744 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3745 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003746 if $pkg_config --atleast-version=0.12.0 spice-server && \
3747 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003748 compile_prog "$spice_cflags" "$spice_libs" ; then
3749 spice="yes"
3750 libs_softmmu="$libs_softmmu $spice_libs"
3751 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003752 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3753 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003754 else
3755 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003756 feature_not_found "spice" \
3757 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003758 fi
3759 spice="no"
3760 fi
3761fi
3762
Robert Relyea111a38b2010-11-28 16:36:38 +02003763# check for libcacard for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003764smartcard_cflags=""
3765# TODO - what's the minimal nss version we support?
3766if test "$smartcard_nss" != "no"; then
3767 cat > $TMPC << EOF
Sergei Trofimovich5f01e062012-01-31 22:03:58 +03003768#include <pk11pub.h>
3769int main(void) { PK11_FreeSlot(0); return 0; }
3770EOF
Michael Tokarev9d171bd2014-05-08 16:48:27 +04003771 # FIXME: do not include $glib_* in here
3772 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3773 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3774 test_cflags="$nss_cflags"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003775 # The header files in nss < 3.13.3 have a bug which causes them to
3776 # emit a warning. If we're going to compile QEMU with -Werror, then
3777 # test that the headers don't have this bug. Otherwise we would pass
3778 # the configure test but fail to compile QEMU later.
3779 if test "$werror" = "yes"; then
3780 test_cflags="-Werror $test_cflags"
Robert Relyea111a38b2010-11-28 16:36:38 +02003781 fi
Paolo Bonzinib6fc6752012-12-20 20:40:35 +01003782 if test -n "$libtool" &&
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003783 $pkg_config --atleast-version=3.12.8 nss && \
Michael Tokarev9d171bd2014-05-08 16:48:27 +04003784 compile_prog "$test_cflags" "$nss_libs"; then
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003785 smartcard_nss="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003786 else
3787 if test "$smartcard_nss" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003788 feature_not_found "nss" "Install nss devel >= 3.12.8"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003789 fi
3790 smartcard_nss="no"
3791 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003792fi
3793
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003794# check for libusb
3795if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003796 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003797 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003798 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3799 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003800 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3801 libs_softmmu="$libs_softmmu $libusb_libs"
3802 else
3803 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003804 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003805 fi
3806 libusb="no"
3807 fi
3808fi
3809
Hans de Goede69354a82011-07-19 11:04:10 +02003810# check for usbredirparser for usb network redirection support
3811if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003812 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003813 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003814 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3815 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003816 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003817 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003818 else
3819 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003820 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003821 fi
3822 usb_redir="no"
3823 fi
3824fi
3825
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003826##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003827# check if we have VSS SDK headers for win
3828
3829if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3830 case "$vss_win32_sdk" in
3831 "") vss_win32_include="-I$source_path" ;;
3832 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3833 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3834 vss_win32_include="-I$source_path/.sdk/vss"
3835 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3836 ;;
3837 *) vss_win32_include="-I$vss_win32_sdk"
3838 esac
3839 cat > $TMPC << EOF
3840#define __MIDL_user_allocate_free_DEFINED__
3841#include <inc/win2003/vss.h>
3842int main(void) { return VSS_CTX_BACKUP; }
3843EOF
3844 if compile_prog "$vss_win32_include" "" ; then
3845 guest_agent_with_vss="yes"
3846 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3847 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3848 else
3849 if test "$vss_win32_sdk" != "" ; then
3850 echo "ERROR: Please download and install Microsoft VSS SDK:"
3851 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3852 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3853 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3854 echo "ERROR: The headers are extracted in the directory \`inc'."
3855 feature_not_found "VSS support"
3856 fi
3857 guest_agent_with_vss="no"
3858 fi
3859fi
3860
3861##########################################
3862# lookup Windows platform SDK (if not specified)
3863# The SDK is needed only to build .tlb (type library) file of guest agent
3864# VSS provider from the source. It is usually unnecessary because the
3865# pre-compiled .tlb file is included.
3866
3867if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3868 if test -z "$win_sdk"; then
3869 programfiles="$PROGRAMFILES"
3870 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3871 if test -n "$programfiles"; then
3872 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3873 else
3874 feature_not_found "Windows SDK"
3875 fi
3876 elif test "$win_sdk" = "no"; then
3877 win_sdk=""
3878 fi
3879fi
3880
3881##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05003882# check if mingw environment provides a recent ntddscsi.h
3883if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3884 cat > $TMPC << EOF
3885#include <windows.h>
3886#include <ntddscsi.h>
3887int main(void) {
3888#if !defined(IOCTL_SCSI_GET_ADDRESS)
3889#error Missing required ioctl definitions
3890#endif
3891 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3892 return addr.Lun;
3893}
3894EOF
3895 if compile_prog "" "" ; then
3896 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05003897 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05003898 fi
3899fi
3900
3901##########################################
Yossi Hindin9dacf322015-05-06 14:57:40 +03003902# Guest agent Window MSI package
3903
3904if test "$guest_agent" != yes; then
3905 if test "$guest_agent_msi" = yes; then
3906 error_exit "MSI guest agent package requires guest agent enabled"
3907 fi
3908 guest_agent_msi=no
3909elif test "$mingw32" != "yes"; then
3910 if test "$guest_agent_msi" = "yes"; then
3911 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
3912 fi
3913 guest_agent_msi=no
3914elif ! has wixl; then
3915 if test "$guest_agent_msi" = "yes"; then
3916 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3917 fi
3918 guest_agent_msi=no
3919fi
3920
3921if test "$guest_agent_msi" != "no"; then
3922 if test "$guest_agent_with_vss" = "yes"; then
3923 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
3924 fi
3925
3926 if test "$QEMU_GA_MANUFACTURER" = ""; then
3927 QEMU_GA_MANUFACTURER=QEMU
3928 fi
3929
3930 if test "$QEMU_GA_DISTRO" = ""; then
3931 QEMU_GA_DISTRO=Linux
3932 fi
3933
3934 if test "$QEMU_GA_VERSION" = ""; then
3935 QEMU_GA_VERSION=`cat $source_path/VERSION`
3936 fi
3937
3938 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3939
3940 case "$cpu" in
3941 x86_64)
3942 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
3943 ;;
3944 i386)
3945 QEMU_GA_MSI_ARCH="-D Arch=32"
3946 ;;
3947 *)
3948 error_exit "CPU $cpu not supported for building installation package"
3949 ;;
3950 esac
3951fi
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003952
Blue Swirl747bbdf2009-10-18 16:26:06 +00003953##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003954# check if we have fdatasync
3955
3956fdatasync=no
3957cat > $TMPC << EOF
3958#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003959int main(void) {
3960#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3961return fdatasync(0);
3962#else
Stefan Weile172fe12012-04-06 21:33:20 +02003963#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04003964#endif
3965}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00003966EOF
3967if compile_prog "" "" ; then
3968 fdatasync=yes
3969fi
3970
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01003971##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00003972# check if we have madvise
3973
3974madvise=no
3975cat > $TMPC << EOF
3976#include <sys/types.h>
3977#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003978#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003979int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3980EOF
3981if compile_prog "" "" ; then
3982 madvise=yes
3983fi
3984
3985##########################################
3986# check if we have posix_madvise
3987
3988posix_madvise=no
3989cat > $TMPC << EOF
3990#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003991#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00003992int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3993EOF
3994if compile_prog "" "" ; then
3995 posix_madvise=yes
3996fi
3997
3998##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10003999# check if we have usable SIGEV_THREAD_ID
4000
4001sigev_thread_id=no
4002cat > $TMPC << EOF
4003#include <signal.h>
4004int main(void) {
4005 struct sigevent ev;
4006 ev.sigev_notify = SIGEV_THREAD_ID;
4007 ev._sigev_un._tid = 0;
4008 asm volatile("" : : "g"(&ev));
4009 return 0;
4010}
4011EOF
4012if compile_prog "" "" ; then
4013 sigev_thread_id=yes
4014fi
4015
4016##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004017# check if trace backend exists
4018
Lluís Vilanova5b808272014-05-27 15:02:14 +02004019$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004020if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004021 error_exit "invalid trace backends" \
4022 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004023fi
4024
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004025##########################################
4026# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004027if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004028 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004029#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004030int main(void) { return 0; }
4031EOF
4032 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004033 if $pkg_config lttng-ust --exists; then
4034 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4035 else
4036 lttng_ust_libs="-llttng-ust"
4037 fi
4038 if $pkg_config liburcu-bp --exists; then
4039 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4040 else
4041 urcu_bp_libs="-lurcu-bp"
4042 fi
4043
4044 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4045 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004046 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004047 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004048 fi
4049fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004050
4051##########################################
4052# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004053if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004054 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004055 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004056 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004057 trace_backend_stap="no"
4058 if has 'stap' ; then
4059 trace_backend_stap="yes"
4060 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004061fi
4062
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004063##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004064# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304065
Peter Maydell7c2acc72013-04-08 12:11:27 +01004066# We prefer ucontext, but it's not always possible. The fallback
4067# is sigcontext. gthread is not selectable except explicitly, because
4068# it is not functional enough to run QEMU proper. (It is occasionally
4069# useful for debugging purposes.) On Windows the only valid backend
4070# is the Windows-specific one.
4071
4072ucontext_works=no
4073if test "$darwin" != "yes"; then
4074 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304075#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004076#ifdef __stub_makecontext
4077#error Ignoring glibc stub makecontext which will always fail
4078#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004079int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304080EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004081 if compile_prog "" "" ; then
4082 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304083 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004084fi
4085
4086if test "$coroutine" = ""; then
4087 if test "$mingw32" = "yes"; then
4088 coroutine=win32
4089 elif test "$ucontext_works" = "yes"; then
4090 coroutine=ucontext
4091 else
4092 coroutine=sigaltstack
4093 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004094else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004095 case $coroutine in
4096 windows)
4097 if test "$mingw32" != "yes"; then
4098 error_exit "'windows' coroutine backend only valid for Windows"
4099 fi
4100 # Unfortunately the user visible backend name doesn't match the
4101 # coroutine-*.c filename for this case, so we have to adjust it here.
4102 coroutine=win32
4103 ;;
4104 ucontext)
4105 if test "$ucontext_works" != "yes"; then
4106 feature_not_found "ucontext"
4107 fi
4108 ;;
4109 gthread|sigaltstack)
4110 if test "$mingw32" = "yes"; then
4111 error_exit "only the 'windows' coroutine backend is valid for Windows"
4112 fi
4113 ;;
4114 *)
4115 error_exit "unknown coroutine backend $coroutine"
4116 ;;
4117 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304118fi
4119
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004120if test "$coroutine_pool" = ""; then
4121 if test "$coroutine" = "gthread"; then
4122 coroutine_pool=no
4123 else
4124 coroutine_pool=yes
4125 fi
4126fi
4127if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4128 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4129fi
4130
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304131##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304132# check if we have open_by_handle_at
4133
Stefan Weil4e1797f2012-06-18 22:11:06 +02004134open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304135cat > $TMPC << EOF
4136#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004137#if !defined(AT_EMPTY_PATH)
4138# error missing definition
4139#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004140int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004141#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304142EOF
4143if compile_prog "" "" ; then
4144 open_by_handle_at=yes
4145fi
4146
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304147########################################
4148# check if we have linux/magic.h
4149
4150linux_magic_h=no
4151cat > $TMPC << EOF
4152#include <linux/magic.h>
4153int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004154 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304155}
4156EOF
4157if compile_prog "" "" ; then
4158 linux_magic_h=yes
4159fi
4160
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004161########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004162# check whether we can disable warning option with a pragma (this is needed
4163# to silence warnings in the headers of some versions of external libraries).
4164# This test has to be compiled with -Werror as otherwise an unknown pragma is
4165# only a warning.
4166#
4167# If we can't selectively disable warning in the code, disable -Werror so that
4168# the build doesn't fail anyway.
4169
Peter Maydell06d71fa2012-07-30 16:13:07 +01004170pragma_disable_unused_but_set=no
4171cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004172#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004173#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004174#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004175#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004176
Peter Maydell06d71fa2012-07-30 16:13:07 +01004177int main(void) {
4178 return 0;
4179}
4180EOF
4181if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004182 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004183else
4184 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004185fi
4186
4187########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004188# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004189
4190valgrind_h=no
4191cat > $TMPC << EOF
4192#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004193int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004194 return 0;
4195}
4196EOF
4197if compile_prog "" "" ; then
4198 valgrind_h=yes
4199fi
4200
4201########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004202# check if environ is declared
4203
4204has_environ=no
4205cat > $TMPC << EOF
4206#include <unistd.h>
4207int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004208 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004209 return 0;
4210}
4211EOF
4212if compile_prog "" "" ; then
4213 has_environ=yes
4214fi
4215
Richard Henderson76a347e2012-12-28 14:17:02 -08004216########################################
4217# check if cpuid.h is usable.
4218
4219cpuid_h=no
4220cat > $TMPC << EOF
4221#include <cpuid.h>
4222int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004223 unsigned a, b, c, d;
4224 int max = __get_cpuid_max(0, 0);
4225
4226 if (max >= 1) {
4227 __cpuid(1, a, b, c, d);
4228 }
4229
4230 if (max >= 7) {
4231 __cpuid_count(7, 0, a, b, c, d);
4232 }
4233
4234 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004235}
4236EOF
4237if compile_prog "" "" ; then
4238 cpuid_h=yes
4239fi
4240
Richard Hendersonf5401662013-02-16 12:46:59 -08004241########################################
4242# check if __[u]int128_t is usable.
4243
4244int128=no
4245cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004246#if defined(__clang_major__) && defined(__clang_minor__)
4247# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4248# error __int128_t does not work in CLANG before 3.2
4249# endif
4250#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004251__int128_t a;
4252__uint128_t b;
4253int main (void) {
4254 a = a + b;
4255 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004256 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004257 return 0;
4258}
4259EOF
4260if compile_prog "" "" ; then
4261 int128=yes
4262fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004263
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004264########################################
4265# check if getauxval is available.
4266
4267getauxval=no
4268cat > $TMPC << EOF
4269#include <sys/auxv.h>
4270int main(void) {
4271 return getauxval(AT_HWCAP) == 0;
4272}
4273EOF
4274if compile_prog "" "" ; then
4275 getauxval=yes
4276fi
4277
John Snowfd0e6052015-03-25 18:57:39 -04004278########################################
4279# check if ccache is interfering with
4280# semantic analysis of macros
4281
4282ccache_cpp2=no
4283cat > $TMPC << EOF
4284static const int Z = 1;
4285#define fn() ({ Z; })
4286#define TAUT(X) ((X) == Z)
4287#define PAREN(X, Y) (X == Y)
4288#define ID(X) (X)
4289int main(int argc, char *argv[])
4290{
4291 int x = 0, y = 0;
4292 x = ID(x);
4293 x = fn();
4294 fn();
4295 if (PAREN(x, y)) return 0;
4296 if (TAUT(Z)) return 0;
4297 return 0;
4298}
4299EOF
4300
4301if ! compile_object "-Werror"; then
4302 ccache_cpp2=yes
4303fi
4304
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304305##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004306# End of CC checks
4307# After here, no more $cc or $ld runs
4308
Blue Swirl1d728c32012-05-01 18:45:39 +00004309if test "$gcov" = "yes" ; then
4310 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4311 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4312elif test "$debug" = "no" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004313 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004314fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004315
Peter Lieven6542aa92014-02-03 10:26:13 +01004316##########################################
4317# Do we have libnfs
4318if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004319 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004320 libnfs="yes"
4321 libnfs_libs=$($pkg_config --libs libnfs)
4322 LIBS="$LIBS $libnfs_libs"
4323 else
4324 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004325 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004326 fi
4327 libnfs="no"
4328 fi
4329fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004330
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004331# Disable zero malloc errors for official releases unless explicitly told to
4332# enable/disable
4333if test -z "$zero_malloc" ; then
4334 if test "$z_version" = "50" ; then
4335 zero_malloc="no"
4336 else
4337 zero_malloc="yes"
4338 fi
4339fi
4340
Peter Maydell6ca026c2012-07-18 15:10:18 +01004341# Now we've finished running tests it's OK to add -Werror to the compiler flags
4342if test "$werror" = "yes"; then
4343 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4344fi
4345
Juan Quintelae86ecd42009-08-03 14:45:59 +02004346if test "$solaris" = "no" ; then
4347 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004348 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004349 fi
4350fi
4351
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004352# test if pod2man has --utf8 option
4353if pod2man --help | grep -q utf8; then
4354 POD2MAN="pod2man --utf8"
4355else
4356 POD2MAN="pod2man"
4357fi
4358
Blue Swirl952afb72010-09-19 08:36:34 +00004359# Use ASLR, no-SEH and DEP if available
4360if test "$mingw32" = "yes" ; then
4361 for flag in --dynamicbase --no-seh --nxcompat; do
4362 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4363 LDFLAGS="-Wl,$flag $LDFLAGS"
4364 fi
4365 done
4366fi
4367
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004368qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004369qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004370qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004371qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004372
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004373tools=""
4374if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004375 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004376 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4377 tools="qemu-nbd\$(EXESUF) $tools"
4378 fi
4379fi
4380if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304381 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004382 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4383 virtfs=yes
4384 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4385 else
4386 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004387 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304388 fi
Andreas Färber17500372012-05-01 01:12:03 +02004389 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004390 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304391 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004392fi
4393if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004394 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Roth48ff7a62011-07-20 15:19:37 -05004395 tools="qemu-ga\$(EXESUF) $tools"
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004396 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4397 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4398 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004399 guest_agent=yes
4400 elif [ "$guest_agent" != yes ]; then
4401 guest_agent=no
4402 else
4403 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004404 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004405fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004406
4407# Mac OS X ships with a broken assembler
4408roms=
4409if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4410 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4411 "$softmmu" = yes ; then
4412 roms="optionrom"
4413fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004414if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004415 roms="$roms spapr-rtas"
4416fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004417
Christian Borntraeger9933c302013-04-23 01:23:03 +00004418if test "$cpu" = "s390x" ; then
4419 roms="$roms s390-ccw"
4420fi
4421
Richard Henderson964c6fa2013-06-21 19:10:16 -07004422# Probe for the need for relocating the user-only binary.
4423if test "$pie" = "no" ; then
4424 textseg_addr=
4425 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004426 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4427 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004428 textseg_addr=0x60000000
4429 ;;
4430 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004431 # A 256M aligned address, high in the address space, with enough
4432 # room for the code_gen_buffer above it before the stack.
4433 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004434 ;;
4435 esac
4436 if [ -n "$textseg_addr" ]; then
4437 cat > $TMPC <<EOF
4438 int main(void) { return 0; }
4439EOF
4440 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4441 if ! compile_prog "" "$textseg_ldflags"; then
4442 # In case ld does not support -Ttext-segment, edit the default linker
4443 # script via sed to set the .text start addr. This is needed on FreeBSD
4444 # at least.
4445 $ld --verbose | sed \
4446 -e '1,/==================================================/d' \
4447 -e '/==================================================/,$d' \
4448 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4449 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4450 textseg_ldflags="-Wl,-T../config-host.ld"
4451 fi
4452 fi
4453fi
4454
Jan Kiszka50e12062014-10-02 10:03:55 +02004455# prepend pixman and ftd flags after all config tests are done
4456QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4457libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004458
bellard43ce4df2003-06-09 19:53:12 +00004459echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004460echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004461echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004462echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004463echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004464echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004465echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004466echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004467if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004468echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004469echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004470echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004471else
4472echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004473echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004474fi
bellard5a671352003-10-01 00:13:48 +00004475echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004476echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004477echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004478echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004479echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004480echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004481echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004482echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004483echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004484echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004485echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004486echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004487if test "$slirp" = "yes" ; then
4488 echo "smbd $smbd"
4489fi
Fam Zheng17969262014-02-10 14:48:56 +08004490echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004491echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004492echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004493echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004494echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004495echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004496echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004497echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004498echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004499echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004500if test "$darwin" = "yes" ; then
4501 echo "Cocoa support $cocoa"
4502fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004503echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004504echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004505echo "GTK support $gtk"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004506echo "GNUTLS support $gnutls"
4507echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004508echo "GNUTLS gcrypt $gnutls_gcrypt"
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004509echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004510echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004511echo "curses support $curses"
Alexander Graf769ce762009-05-11 17:41:42 +02004512echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004513echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004514echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004515echo "Block whitelist (rw) $block_drv_rw_whitelist"
4516echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304517echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004518echo "VNC support $vnc"
4519if test "$vnc" = "yes" ; then
4520 echo "VNC TLS support $vnc_tls"
4521 echo "VNC SASL support $vnc_sasl"
4522 echo "VNC JPEG support $vnc_jpeg"
4523 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004524fi
blueswir131422552007-04-16 18:27:06 +00004525if test -n "$sparc_cpu"; then
4526 echo "Target Sparc Arch $sparc_cpu"
4527fi
aliguorie37630c2009-04-22 15:19:10 +00004528echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004529if test "$xen" = "yes" ; then
4530 echo "xen ctrl version $xen_ctrl_version"
4531fi
aurel322e4d9fb2008-04-08 06:01:02 +00004532echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004533echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004534echo "Documentation $docs"
Paul Brook379f6692009-07-17 12:48:08 +01004535echo "GUEST_BASE $guest_base"
Avi Kivity40d64442011-11-15 20:12:17 +02004536echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004537echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004538echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004539echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004540echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004541echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004542echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004543echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004544echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004545echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004546echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004547echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004548echo "madvise $madvise"
4549echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004550echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004551echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004552echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004553echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004554echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004555echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004556if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004557echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004558fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004559if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004560echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004561else
4562echo "spice support $spice"
4563fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004564echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004565echo "xfsctl support $xfs"
Robert Relyea111a38b2010-11-28 16:36:38 +02004566echo "nss used $smartcard_nss"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004567echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004568echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004569echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004570echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004571echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004572echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004573echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004574echo "QGA w32 disk info $guest_agent_ntddscsi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004575echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004576echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004577echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304578echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004579echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004580echo "gcov $gcov_tool"
4581echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004582echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004583echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004584echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004585echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004586echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004587echo "lzo support $lzo"
4588echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004589echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004590echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004591echo "tcmalloc support $tcmalloc"
bellard67b915a2004-03-31 23:37:16 +00004592
Stefan Weil1ba16962011-07-29 22:40:45 +02004593if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004594echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004595fi
bellard97a847b2003-08-10 21:36:04 +00004596
Juan Quintela98ec69a2009-07-16 18:34:18 +02004597config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004598
Stefan Weildbd99ae2013-01-01 18:33:44 +01004599echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4600
Juan Quintela98ec69a2009-07-16 18:34:18 +02004601echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004602echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004603
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004604echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004605echo "prefix=$prefix" >> $config_host_mak
4606echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004607echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004608echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004609echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004610echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004611echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004612echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004613echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4614echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004615echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004616if test "$mingw32" = "no" ; then
4617 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4618fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004619echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004620echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4621echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004622echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004623echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004624
Juan Quintela98ec69a2009-07-16 18:34:18 +02004625echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004626
aurel32f8393942009-04-13 18:45:38 +00004627if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004628 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004629fi
aliguori1625af82009-04-05 17:41:02 +00004630if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004631 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004632fi
bellard7d132992003-03-06 23:23:54 +00004633if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004634 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004635fi
bellard67b915a2004-03-31 23:37:16 +00004636if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004637 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004638 rc_version=`cat $source_path/VERSION`
4639 version_major=${rc_version%%.*}
4640 rc_version=${rc_version#*.}
4641 version_minor=${rc_version%%.*}
4642 rc_version=${rc_version#*.}
4643 version_subminor=${rc_version%%.*}
4644 version_micro=0
4645 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4646 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004647 if test "$guest_agent_with_vss" = "yes" ; then
4648 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4649 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4650 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004651 if test "$guest_agent_ntddscsi" = "yes" ; then
4652 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4653 fi
Yossi Hindin9dacf322015-05-06 14:57:40 +03004654 if test "$guest_agent_msi" != "no"; then
4655 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4656 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4657 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4658 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4659 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4660 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4661 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4662 fi
pbrook210fa552007-02-27 21:04:49 +00004663else
Juan Quintela35f4df22009-07-27 16:13:07 +02004664 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004665fi
blueswir1128ab2f2008-08-15 18:33:42 +00004666
Mark McLoughlindffcb712009-10-22 17:49:11 +01004667if test "$linux" = "yes" ; then
4668 echo "CONFIG_LINUX=y" >> $config_host_mak
4669fi
4670
bellard83fb7ad2004-07-05 21:25:26 +00004671if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004672 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004673fi
malcb29fe3e2008-11-18 01:42:22 +00004674
4675if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004676 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004677fi
4678
bellardec530c82006-04-25 22:36:06 +00004679if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004680 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004681 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004682 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004683 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004684 fi
bellardec530c82006-04-25 22:36:06 +00004685fi
Andreas Färber179cf402010-09-20 00:50:43 +02004686if test "$haiku" = "yes" ; then
4687 echo "CONFIG_HAIKU=y" >> $config_host_mak
4688fi
bellard97a847b2003-08-10 21:36:04 +00004689if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004690 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004691fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004692if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004693 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004694fi
bellardc20709a2004-04-21 23:27:19 +00004695if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004696 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004697 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004698fi
ths8a16d272008-07-19 09:56:24 +00004699if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004700 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004701fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004702if test "$netmap" = "yes" ; then
4703 echo "CONFIG_NETMAP=y" >> $config_host_mak
4704fi
Gonglei015a33b2014-07-01 20:58:08 +08004705if test "$l2tpv3" = "yes" ; then
4706 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4707fi
Corey Bryant47e98652012-01-26 09:42:26 -05004708if test "$cap_ng" = "yes" ; then
4709 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4710fi
Juan Quintela2358a492009-07-27 16:13:25 +02004711echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004712for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004713 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004714 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004715done
Juan Quintela67f86e82009-08-03 14:46:59 +02004716if test "$audio_pt_int" = "yes" ; then
4717 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4718fi
malcd5631632009-10-10 01:13:41 +04004719if test "$audio_win_int" = "yes" ; then
4720 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4721fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004722echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4723echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004724if test "$vnc" = "yes" ; then
4725 echo "CONFIG_VNC=y" >> $config_host_mak
4726fi
ths8d5d2d42007-08-25 01:37:51 +00004727if test "$vnc_tls" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004728 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
ths8d5d2d42007-08-25 01:37:51 +00004729fi
aliguori2f9606b2009-03-06 20:27:28 +00004730if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004731 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004732fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004733if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004734 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004735fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004736if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004737 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004738fi
aliguori76655d62009-03-06 20:27:37 +00004739if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004740 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004741fi
Stefan Weilee682d22009-10-01 20:10:37 +02004742if test "$uuid" = "yes" ; then
4743 echo "CONFIG_UUID=y" >> $config_host_mak
4744fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004745if test "$xfs" = "yes" ; then
4746 echo "CONFIG_XFS=y" >> $config_host_mak
4747fi
pbrookb1a550a2006-04-16 13:28:56 +00004748qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004749echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004750echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004751echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004752echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004753if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004754 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004755fi
Fam Zheng17969262014-02-10 14:48:56 +08004756if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004757 # $shacmd can generate a hash started with digit, which the compiler doesn't
4758 # like as an symbol. So prefix it with an underscore
4759 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004760 echo "CONFIG_MODULES=y" >> $config_host_mak
4761fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004762if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004763 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004764 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004765 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004766fi
4767if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004768 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004769fi
4770if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004771 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004772fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004773if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004774 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004775fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004776if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004777 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004778fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004779if test "$accept4" = "yes" ; then
4780 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4781fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304782if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004783 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304784fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004785if test "$eventfd" = "yes" ; then
4786 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4787fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004788if test "$fallocate" = "yes" ; then
4789 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4790fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004791if test "$fallocate_punch_hole" = "yes" ; then
4792 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4793fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004794if test "$fallocate_zero_range" = "yes" ; then
4795 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4796fi
Kevin Wolfed911432014-09-29 17:12:59 +02004797if test "$posix_fallocate" = "yes" ; then
4798 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4799fi
Peter Maydellc727f472011-01-06 11:05:10 +00004800if test "$sync_file_range" = "yes" ; then
4801 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4802fi
Peter Maydelldace20d2011-01-10 13:11:24 +00004803if test "$fiemap" = "yes" ; then
4804 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4805fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004806if test "$dup3" = "yes" ; then
4807 echo "CONFIG_DUP3=y" >> $config_host_mak
4808fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01004809if test "$ppoll" = "yes" ; then
4810 echo "CONFIG_PPOLL=y" >> $config_host_mak
4811fi
Alex Blighcd758dd2013-08-21 16:02:44 +01004812if test "$prctl_pr_set_timerslack" = "yes" ; then
4813 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4814fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00004815if test "$epoll" = "yes" ; then
4816 echo "CONFIG_EPOLL=y" >> $config_host_mak
4817fi
4818if test "$epoll_create1" = "yes" ; then
4819 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4820fi
4821if test "$epoll_pwait" = "yes" ; then
4822 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4823fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004824if test "$sendfile" = "yes" ; then
4825 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4826fi
Riku Voipio51834342014-06-22 11:25:42 +01004827if test "$timerfd" = "yes" ; then
4828 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4829fi
Riku Voipio9af5c902014-08-12 15:58:57 +03004830if test "$setns" = "yes" ; then
4831 echo "CONFIG_SETNS=y" >> $config_host_mak
4832fi
aurel323b3f24a2009-04-15 16:12:13 +00004833if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004834 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00004835fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00004836if test "$inotify1" = "yes" ; then
4837 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4838fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004839if test "$byteswap_h" = "yes" ; then
4840 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4841fi
4842if test "$bswap_h" = "yes" ; then
4843 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4844fi
Alexander Graf769ce762009-05-11 17:41:42 +02004845if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004846 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02004847 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004848 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02004849fi
aurel322e4d9fb2008-04-08 06:01:02 +00004850if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004851 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00004852fi
balrogfb599c92008-09-28 23:49:55 +00004853if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004854 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02004855 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00004856fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01004857if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03004858 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4859fi
Anthony Liguorie18df142011-07-19 14:50:29 -05004860echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004861if test "$gtk" = "yes" ; then
4862 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004863 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004864 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004865fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004866if test "$gnutls" = "yes" ; then
4867 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4868fi
4869if test "$gnutls_hash" = "yes" ; then
4870 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4871fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004872if test "$gnutls_gcrypt" = "yes" ; then
4873 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4874fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004875if test "$gnutls_nettle" = "yes" ; then
4876 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004877 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004878fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004879if test "$vte" = "yes" ; then
4880 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004881 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4882fi
aliguorie37630c2009-04-22 15:19:10 +00004883if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02004884 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00004885 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00004886fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004887if test "$linux_aio" = "yes" ; then
4888 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4889fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004890if test "$attr" = "yes" ; then
4891 echo "CONFIG_ATTR=y" >> $config_host_mak
4892fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02004893if test "$libattr" = "yes" ; then
4894 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4895fi
Meador Inge983eef52012-02-24 14:00:42 +05304896if test "$virtfs" = "yes" ; then
4897 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004898fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004899if test "$vhost_scsi" = "yes" ; then
4900 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4901fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03004902if test "$vhost_net" = "yes" ; then
4903 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4904fi
ths77755342008-11-27 15:45:16 +00004905if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004906 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00004907fi
aliguoribf9298b2008-12-05 20:05:26 +00004908if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004909 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00004910fi
aliguoriceb42de2009-04-07 18:43:28 +00004911if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004912 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00004913fi
aurel32f652e6a2008-12-16 10:43:48 +00004914if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02004915 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00004916fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03004917if test "$signalfd" = "yes" ; then
4918 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4919fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02004920if test "$tcg_interpreter" = "yes" ; then
4921 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4922fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004923if test "$fdatasync" = "yes" ; then
4924 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4925fi
Andreas Färbere78815a2010-09-25 11:26:05 +00004926if test "$madvise" = "yes" ; then
4927 echo "CONFIG_MADVISE=y" >> $config_host_mak
4928fi
4929if test "$posix_madvise" = "yes" ; then
4930 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4931fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10004932if test "$sigev_thread_id" = "yes" ; then
4933 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4934fi
bellard97a847b2003-08-10 21:36:04 +00004935
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01004936if test "$spice" = "yes" ; then
4937 echo "CONFIG_SPICE=y" >> $config_host_mak
4938fi
4939
Robert Relyea111a38b2010-11-28 16:36:38 +02004940if test "$smartcard_nss" = "yes" ; then
4941 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
Michael Tokarev9d171bd2014-05-08 16:48:27 +04004942 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4943 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02004944fi
4945
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004946if test "$libusb" = "yes" ; then
4947 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4948fi
4949
Hans de Goede69354a82011-07-19 11:04:10 +02004950if test "$usb_redir" = "yes" ; then
4951 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4952fi
4953
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004954if test "$opengl" = "yes" ; then
4955 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06004956 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004957 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01004958fi
4959
qiaonuohan607dacd2014-02-18 14:11:30 +08004960if test "$lzo" = "yes" ; then
4961 echo "CONFIG_LZO=y" >> $config_host_mak
4962fi
4963
4964if test "$snappy" = "yes" ; then
4965 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4966fi
4967
Peter Wu6b383c02015-01-06 18:48:14 +01004968if test "$bzip2" = "yes" ; then
4969 echo "CONFIG_BZIP2=y" >> $config_host_mak
4970 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4971fi
4972
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004973if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004974 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004975 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4976 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004977fi
4978
Peter Lieven6542aa92014-02-03 10:26:13 +01004979if test "$libnfs" = "yes" ; then
4980 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4981fi
4982
Eduardo Otubof7945732012-08-14 18:44:05 -03004983if test "$seccomp" = "yes"; then
4984 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4985fi
4986
bellard83fb7ad2004-07-05 21:25:26 +00004987# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00004988if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004989 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00004990fi
4991
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004992if test "$zero_malloc" = "yes" ; then
4993 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4994fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02004995if test "$qom_cast_debug" = "yes" ; then
4996 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4997fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004998if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004999 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005000 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5001 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005002fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005003
Peter Maydell7c2acc72013-04-08 12:11:27 +01005004echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005005if test "$coroutine_pool" = "yes" ; then
5006 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5007else
5008 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5009fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305010
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305011if test "$open_by_handle_at" = "yes" ; then
5012 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5013fi
5014
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305015if test "$linux_magic_h" = "yes" ; then
5016 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5017fi
5018
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005019if test "$pragma_diagnostic_available" = "yes" ; then
5020 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005021fi
5022
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005023if test "$valgrind_h" = "yes" ; then
5024 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5025fi
5026
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005027if test "$has_environ" = "yes" ; then
5028 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5029fi
5030
Richard Henderson76a347e2012-12-28 14:17:02 -08005031if test "$cpuid_h" = "yes" ; then
5032 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5033fi
5034
Richard Hendersonf5401662013-02-16 12:46:59 -08005035if test "$int128" = "yes" ; then
5036 echo "CONFIG_INT128=y" >> $config_host_mak
5037fi
5038
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005039if test "$getauxval" = "yes" ; then
5040 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5041fi
5042
Bharata B Raoeb100392012-09-24 14:42:45 +05305043if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005044 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005045 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5046 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305047fi
5048
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305049if test "$glusterfs_discard" = "yes" ; then
5050 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5051fi
5052
Bharata B Rao7c815372013-12-21 14:51:25 +05305053if test "$glusterfs_zerofill" = "yes" ; then
5054 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5055fi
5056
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005057if test "$archipelago" = "yes" ; then
5058 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5059 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5060fi
5061
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005062if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005063 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005064 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5065 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005066fi
5067
Jeff Cody4f18b782013-10-30 10:44:39 -04005068if test "$vhdx" = "yes" ; then
5069 echo "CONFIG_VHDX=y" >> $config_host_mak
5070fi
5071
blueswir168063642008-11-22 21:03:55 +00005072# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005073if test "$libusb" = "yes"; then
5074 echo "HOST_USB=libusb legacy" >> $config_host_mak
5075else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005076 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005077fi
blueswir168063642008-11-22 21:03:55 +00005078
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005079# TPM passthrough support?
5080if test "$tpm" = "yes"; then
5081 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5082 if test "$tpm_passthrough" = "yes"; then
5083 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5084 fi
5085fi
5086
Lluís Vilanova5b808272014-05-27 15:02:14 +02005087echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5088if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005089 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305090fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005091if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005092 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5093 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005094 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005095fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005096if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005097 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5098fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005099if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005100 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5101fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005102if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005103 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5104 if test "$trace_backend_stap" = "yes" ; then
5105 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5106 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005107fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005108if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005109 if test "$linux" = "yes" ; then
5110 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005111 else
Stewart Smith21684af2014-01-24 12:39:10 +11005112 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005113 fi
5114fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005115echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5116
Michael R. Hines2da776d2013-07-22 10:01:54 -04005117if test "$rdma" = "yes" ; then
5118 echo "CONFIG_RDMA=y" >> $config_host_mak
5119fi
5120
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005121# Hold two types of flag:
5122# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5123# a thread we have a handle to
5124# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5125# platform
5126if test "$pthread_setname_np" = "yes" ; then
5127 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5128 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5129fi
5130
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005131if test "$tcg_interpreter" = "yes"; then
5132 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5133elif test "$ARCH" = "sparc64" ; then
5134 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5135elif test "$ARCH" = "s390x" ; then
5136 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005137elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005138 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005139elif test "$ARCH" = "ppc64" ; then
5140 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005141else
5142 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5143fi
5144QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5145
Juan Quintela98ec69a2009-07-16 18:34:18 +02005146echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005147echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005148echo "MAKE=$make" >> $config_host_mak
5149echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005150echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5151echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005152if test -n "$libtool"; then
5153 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5154 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5155else
5156 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5157 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5158fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005159echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005160echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005161if $iasl -h > /dev/null 2>&1; then
5162 echo "IASL=$iasl" >> $config_host_mak
5163fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005164echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005165echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005166echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005167echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005168echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005169echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005170echo "AS=$as" >> $config_host_mak
5171echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005172echo "OBJCOPY=$objcopy" >> $config_host_mak
5173echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005174echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005175echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005176echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005177echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005178echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005179echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005180echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005181if test "$sparse" = "yes" ; then
5182 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005183 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005184 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005185 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5186 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5187fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005188if test "$cross_prefix" != ""; then
5189 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5190else
5191 echo "AUTOCONF_HOST := " >> $config_host_mak
5192fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005193echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005194echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005195echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005196echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005197echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005198echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005199echo "DSOSUF=$DSOSUF" >> $config_host_mak
5200echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005201echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005202echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005203echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005204if test "$gcov" = "yes" ; then
5205 echo "CONFIG_GCOV=y" >> $config_host_mak
5206 echo "GCOV=$gcov_tool" >> $config_host_mak
5207fi
Juan Quintela804edf22009-07-27 16:12:49 +02005208
Peter Maydell6efd7512011-11-30 11:59:04 +00005209# use included Linux headers
5210if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005211 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005212 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005213 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005214 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005215 ;;
5216 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005217 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005218 ;;
5219 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005220 linux_arch=s390
5221 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005222 aarch64)
5223 linux_arch=arm64
5224 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005225 mips64)
5226 linux_arch=mips
5227 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005228 *)
5229 # For most CPUs the kernel architecture name and QEMU CPU name match.
5230 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005231 ;;
5232 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005233 # For non-KVM architectures we will not have asm headers
5234 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5235 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5236 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005237fi
5238
bellard1d14ffa2005-10-30 18:58:22 +00005239for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005240target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005241config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005242target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005243target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005244
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005245case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005246 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 +02005247 target_bigendian=yes
5248 ;;
5249esac
bellard97a847b2003-08-10 21:36:04 +00005250target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005251target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005252target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005253target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005254case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005255 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005256 target_softmmu="yes"
5257 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005258 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005259 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005260 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005261 fi
pbrook9e407a82007-05-26 16:38:53 +00005262 target_user_only="yes"
5263 target_linux_user="yes"
5264 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005265 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005266 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005267 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005268 fi
blueswir184778502008-10-26 20:33:16 +00005269 target_user_only="yes"
5270 target_bsd_user="yes"
5271 ;;
pbrook9e407a82007-05-26 16:38:53 +00005272 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005273 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005274 exit 1
5275 ;;
5276esac
ths831b7822007-01-18 20:06:33 +00005277
bellard97a847b2003-08-10 21:36:04 +00005278mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005279echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005280
pbrooke5fe0c52006-06-11 13:32:59 +00005281bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005282interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005283gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005284
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005285TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005286TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005287TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005288
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005289case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005290 i386)
aurel322408a522008-04-20 20:19:44 +00005291 ;;
5292 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005293 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005294 ;;
5295 alpha)
aurel322408a522008-04-20 20:19:44 +00005296 ;;
5297 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005298 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005299 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005300 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005301 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005302 aarch64)
5303 TARGET_BASE_ARCH=arm
5304 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005305 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 +01005306 ;;
aurel322408a522008-04-20 20:19:44 +00005307 cris)
aurel322408a522008-04-20 20:19:44 +00005308 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005309 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005310 ;;
aurel322408a522008-04-20 20:19:44 +00005311 m68k)
aurel322408a522008-04-20 20:19:44 +00005312 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005313 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005314 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005315 microblaze|microblazeel)
5316 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005317 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005318 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005319 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005320 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005321 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005322 ;;
5323 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005324 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005325 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005326 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005327 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005328 ;;
5329 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005330 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005331 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005332 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005333 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005334 moxie)
5335 ;;
Jia Liue67db062012-07-20 15:50:39 +08005336 or32)
5337 TARGET_ARCH=openrisc
5338 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005339 ;;
aurel322408a522008-04-20 20:19:44 +00005340 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005341 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005342 ;;
5343 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005344 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005345 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005346 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005347 ;;
5348 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005349 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005350 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005351 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005352 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005353 ppc64le)
5354 TARGET_ARCH=ppc64
5355 TARGET_BASE_ARCH=ppc
5356 TARGET_ABI_DIR=ppc
5357 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5358 ;;
aurel322408a522008-04-20 20:19:44 +00005359 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005360 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005361 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005362 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005363 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005364 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005365 ;;
5366 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005367 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005368 bflt="yes"
5369 ;;
5370 sparc)
aurel322408a522008-04-20 20:19:44 +00005371 ;;
5372 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005373 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005374 ;;
5375 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005376 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005377 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005378 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005379 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005380 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005381 s390x)
Eric Farmanca343c72014-06-03 08:42:18 -04005382 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01005383 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005384 tricore)
5385 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005386 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005387 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005388 xtensa|xtensaeb)
5389 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005390 ;;
aurel322408a522008-04-20 20:19:44 +00005391 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005392 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005393 ;;
5394esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005395# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5396if [ "$TARGET_BASE_ARCH" = "" ]; then
5397 TARGET_BASE_ARCH=$TARGET_ARCH
5398fi
5399
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005400symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5401
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005402upper() {
5403 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5404}
5405
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005406target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005407echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005408echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005409echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005410if [ "$TARGET_ABI_DIR" = "" ]; then
5411 TARGET_ABI_DIR=$TARGET_ARCH
5412fi
Juan Quintela25be2102009-10-07 02:41:00 +02005413echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005414if [ "$HOST_VARIANT_DIR" != "" ]; then
5415 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5416fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005417case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005418 i386|x86_64)
5419 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005420 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005421 if test "$xen_pci_passthrough" = yes; then
5422 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5423 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005424 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005425 ;;
5426 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005427esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005428case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005429 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005430 # Make sure the target and host cpus are compatible
5431 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005432 \( "$target_name" = "$cpu" -o \
5433 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5434 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5435 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5436 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005437 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005438 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005439 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5440 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5441 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005442 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005443 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005444 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5445 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005446 fi
5447esac
bellardde83cd02003-06-15 20:25:43 +00005448if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005449 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005450fi
5451if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005452 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005453fi
bellard997344f2003-10-27 21:10:39 +00005454if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005455 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005456 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005457fi
ths831b7822007-01-18 20:06:33 +00005458if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005459 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005460fi
pbrook56aebc82008-10-11 17:55:29 +00005461list=""
5462if test ! -z "$gdb_xml_files" ; then
5463 for x in $gdb_xml_files; do
5464 list="$list $source_path/gdb-xml/$x"
5465 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005466 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005467fi
bellardde83cd02003-06-15 20:25:43 +00005468
pbrooke5fe0c52006-06-11 13:32:59 +00005469if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005470 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005471fi
Paul Brook379f6692009-07-17 12:48:08 +01005472if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005473 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
Paul Brook379f6692009-07-17 12:48:08 +01005474fi
blueswir184778502008-10-26 20:33:16 +00005475if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005476 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005477fi
bellard5b0753e2005-03-01 21:37:28 +00005478
Juan Quintela4afddb52009-08-03 14:46:45 +02005479# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005480
Juan Quintela4afddb52009-08-03 14:46:45 +02005481cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005482ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005483
Juan Quintela64656022009-08-03 14:46:53 +02005484for i in $ARCH $TARGET_BASE_ARCH ; do
5485 case "$i" in
5486 alpha)
Juan Quintela25be2102009-10-07 02:41:00 +02005487 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005488 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005489 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005490 aarch64)
5491 if test -n "${cxx}"; then
5492 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5493 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5494 fi
5495 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005496 arm)
Juan Quintela25be2102009-10-07 02:41:00 +02005497 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005498 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
Claudio Fontana999b53e2014-02-05 17:27:28 +00005499 if test -n "${cxx}"; then
5500 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5501 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5502 fi
Juan Quintela64656022009-08-03 14:46:53 +02005503 ;;
5504 cris)
Juan Quintela25be2102009-10-07 02:41:00 +02005505 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005506 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005507 ;;
5508 hppa)
Juan Quintela25be2102009-10-07 02:41:00 +02005509 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005510 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005511 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005512 i386|x86_64|x32)
Juan Quintela25be2102009-10-07 02:41:00 +02005513 echo "CONFIG_I386_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005514 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005515 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005516 ia64*)
5517 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005518 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
Aurelien Jarno903ec552010-03-29 02:12:51 +02005519 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005520 lm32)
5521 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005522 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
Michael Walle79368f42012-03-31 19:54:20 +02005523 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005524 m68k)
Juan Quintela25be2102009-10-07 02:41:00 +02005525 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005526 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005527 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005528 microblaze*)
Juan Quintela25be2102009-10-07 02:41:00 +02005529 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005530 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005531 ;;
5532 mips*)
Juan Quintela25be2102009-10-07 02:41:00 +02005533 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005534 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005535 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005536 moxie*)
5537 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5538 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5539 ;;
Jia Liue67db062012-07-20 15:50:39 +08005540 or32)
5541 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005542 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
Jia Liue67db062012-07-20 15:50:39 +08005543 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005544 ppc*)
Juan Quintela25be2102009-10-07 02:41:00 +02005545 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005546 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005547 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005548 s390*)
Juan Quintela25be2102009-10-07 02:41:00 +02005549 echo "CONFIG_S390_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005550 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005551 ;;
5552 sh4)
Juan Quintela25be2102009-10-07 02:41:00 +02005553 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005554 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005555 ;;
5556 sparc*)
Juan Quintela25be2102009-10-07 02:41:00 +02005557 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005558 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
Juan Quintela64656022009-08-03 14:46:53 +02005559 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005560 xtensa*)
5561 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005562 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
Max Filippovcfa550c2011-09-06 03:55:26 +04005563 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005564 esac
5565done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005566if test "$tcg_interpreter" = "yes" ; then
5567 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
Paolo Bonzini76cad712012-10-24 11:12:21 +02005568 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
Stefan Weil9195b2c2011-10-19 07:07:18 +02005569fi
Juan Quintela64656022009-08-03 14:46:53 +02005570
Juan Quintela6ee71262009-08-03 14:46:47 +02005571case "$ARCH" in
5572alpha)
5573 # Ensure there's only a single GP
5574 cflags="-msmall-data $cflags"
5575;;
5576esac
5577
Juan Quintelad02c1db2009-08-03 14:46:50 +02005578if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005579 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005580 if test "$target_linux_user" = "yes" ; then
5581 cflags="-p $cflags"
5582 ldflags="-p $ldflags"
5583 fi
5584 if test "$target_softmmu" = "yes" ; then
5585 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005586 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005587 fi
5588fi
5589
Juan Quintela9b8e1112009-08-03 14:46:46 +02005590if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005591 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005592fi
Juan Quintelafa282482009-07-22 22:37:39 +02005593
Juan Quintela25be2102009-10-07 02:41:00 +02005594echo "LDFLAGS+=$ldflags" >> $config_target_mak
5595echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005596
bellard97a847b2003-08-10 21:36:04 +00005597done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005598
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005599if [ "$pixman" = "internal" ]; then
5600 echo "config-host.h: subdir-pixman" >> $config_host_mak
5601fi
5602
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005603if [ "$dtc_internal" = "yes" ]; then
5604 echo "config-host.h: subdir-dtc" >> $config_host_mak
5605fi
5606
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005607if test "$numa" = "yes"; then
5608 echo "CONFIG_NUMA=y" >> $config_host_mak
5609fi
5610
John Snowfd0e6052015-03-25 18:57:39 -04005611if test "$ccache_cpp2" = "yes"; then
5612 echo "export CCACHE_CPP2=y" >> $config_host_mak
5613fi
5614
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005615# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005616DIRS="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 +04005617DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005618DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005619DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005620DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005621FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5622FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005623FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005624FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005625FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005626FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005627FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005628FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005629for bios_file in \
5630 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005631 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005632 $source_path/pc-bios/*.rom \
5633 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005634 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005635 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005636 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005637 $source_path/pc-bios/palcode-*
5638do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005639 FILES="$FILES pc-bios/`basename $bios_file`"
5640done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005641for test_file in `find $source_path/tests/acpi-test-data -type f`
5642do
5643 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5644done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005645mkdir -p $DIRS
5646for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005647 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005648 symlink "$source_path/$f" "$f"
5649 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005650done
Paul Brook1ad21342009-05-19 16:17:58 +01005651
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005652# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005653for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005654 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005655 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005656 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005657 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005658 echo "CC=$cc" >> $config_mak
5659 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005660 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005661 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005662 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005663 echo "LD=$ld" >> $config_mak
5664done
5665
Max Reitz76c75602014-05-24 23:24:56 +02005666# set up qemu-iotests in this build directory
5667iotests_common_env="tests/qemu-iotests/common.env"
5668iotests_check="tests/qemu-iotests/check"
5669
5670echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5671echo >> "$iotests_common_env"
5672echo "export PYTHON='$python'" >> "$iotests_common_env"
5673
5674if [ ! -e "$iotests_check" ]; then
5675 symlink "$source_path/$iotests_check" "$iotests_check"
5676fi
5677
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005678# Save the configure command line for later reuse.
5679cat <<EOD >config.status
5680#!/bin/sh
5681# Generated by configure.
5682# Run this file to recreate the current configuration.
5683# Compiler output produced by configure, useful for debugging
5684# configure, is in config.log if it exists.
5685EOD
5686printf "exec" >>config.status
5687printf " '%s'" "$0" "$@" >>config.status
5688echo >>config.status
5689chmod +x config.status
5690
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005691rm -r "$TMPDIR1"