blob: 7b5fcd220c51c976084fffd2dd4699c4e4d3fe5a [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005
Cornelia Huck99519e62014-05-28 12:39:17 +02006# Unset some variables known to interfere with behavior of common tools,
7# just as autoconf does.
8CLICOLOR_FORCE= GREP_OPTIONS=
9unset CLICOLOR_FORCE GREP_OPTIONS
10
Peter Maydell8cd05ab2014-05-23 17:07:24 +010011# Temporary directory used for files created while
12# configure runs. Since it is in the build directory
13# we can safely blow away any previous version of it
14# (and we need not jump through hoops to try to delete
15# it when configure exits.)
16TMPDIR1="config-temp"
17rm -rf "${TMPDIR1}"
18mkdir -p "${TMPDIR1}"
19if [ $? -ne 0 ]; then
20 echo "ERROR: failed to create temporary directory"
21 exit 1
bellard7d132992003-03-06 23:23:54 +000022fi
23
Peter Maydell8cd05ab2014-05-23 17:07:24 +010024TMPB="qemu-conf"
25TMPC="${TMPDIR1}/${TMPB}.c"
Don Slutz66518bf2014-01-02 21:12:46 -050026TMPO="${TMPDIR1}/${TMPB}.o"
Peter Maydell9c83ffd2014-02-25 18:27:49 +000027TMPCXX="${TMPDIR1}/${TMPB}.cxx"
Don Slutz66518bf2014-01-02 21:12:46 -050028TMPL="${TMPDIR1}/${TMPB}.lo"
29TMPA="${TMPDIR1}/lib${TMPB}.la"
Peter Maydell8cd05ab2014-05-23 17:07:24 +010030TMPE="${TMPDIR1}/${TMPB}.exe"
bellard7d132992003-03-06 23:23:54 +000031
Gerd Hoffmannda1d85e2010-04-23 13:44:10 +020032rm -f config.log
malc9ac81bb2008-11-29 20:09:56 +000033
Peter Maydellb48e3612011-11-23 17:26:44 +000034# Print a helpful header at the top of config.log
35echo "# QEMU configure log $(date)" >> config.log
Peter Maydell979ae162012-03-07 12:16:29 +000036printf "# Configured with:" >> config.log
37printf " '%s'" "$0" "$@" >> config.log
38echo >> config.log
Peter Maydellb48e3612011-11-23 17:26:44 +000039echo "#" >> config.log
40
Peter Maydell76ad07a2013-04-08 12:11:26 +010041error_exit() {
42 echo
43 echo "ERROR: $1"
44 while test -n "$2"; do
45 echo " $2"
46 shift
47 done
48 echo
49 exit 1
50}
51
Peter Maydell9c83ffd2014-02-25 18:27:49 +000052do_compiler() {
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
55 local compiler="$1"
56 shift
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log 2>&1 || return $?
Peter Maydell8dc38a72012-07-18 15:10:28 +010059 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
64 return 0
65 fi
66 # Don't bother rerunning the compile if we were already using -Werror
67 case "$*" in
68 *-Werror*)
69 return 0
70 ;;
71 esac
Peter Maydell9c83ffd2014-02-25 18:27:49 +000072 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log 2>&1 && return $?
Peter Maydell76ad07a2013-04-08 12:11:26 +010074 error_exit "configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
Peter Maydell8dc38a72012-07-18 15:10:28 +010078}
79
Peter Maydell9c83ffd2014-02-25 18:27:49 +000080do_cc() {
81 do_compiler "$cc" "$@"
82}
83
84do_cxx() {
85 do_compiler "$cxx" "$@"
86}
87
88update_cxxflags() {
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
92 QEMU_CXXFLAGS=
93 for arg in $QEMU_CFLAGS; do
94 case $arg in
95 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
96 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
97 ;;
98 *)
99 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
100 ;;
101 esac
102 done
103}
104
Juan Quintela52166aa2009-08-03 14:46:03 +0200105compile_object() {
John Snowfd0e6052015-03-25 18:57:39 -0400106 local_cflags="$1"
107 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
Juan Quintela52166aa2009-08-03 14:46:03 +0200108}
109
110compile_prog() {
111 local_cflags="$1"
112 local_ldflags="$2"
Peter Maydell8dc38a72012-07-18 15:10:28 +0100113 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
Juan Quintela52166aa2009-08-03 14:46:03 +0200114}
115
Don Slutz66518bf2014-01-02 21:12:46 -0500116do_libtool() {
117 local mode=$1
118 shift
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC $cc "$@" >> config.log
121 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
127 return 0
128 fi
129 # Don't bother rerunning the compile if we were already using -Werror
130 case "$*" in
131 *-Werror*)
132 return 0
133 ;;
134 esac
135 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
137 error_exit "configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
141}
142
143libtool_prog() {
144 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
145 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
146}
147
Paolo Bonzini11568d62010-12-23 11:43:58 +0100148# symbolically link $1 to $2. Portable version of "ln -sf".
149symlink() {
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100150 rm -rf "$2"
Anthony Liguoriec5b06d2012-06-06 16:57:00 +0800151 mkdir -p "$(dirname "$2")"
Stefan Weil72b8b5a2012-03-19 13:20:47 +0100152 ln -s "$1" "$2"
Paolo Bonzini11568d62010-12-23 11:43:58 +0100153}
154
Loïc Minier0dba6192010-01-28 21:26:51 +0000155# check whether a command is available to this shell (may be either an
156# executable or a builtin)
157has() {
158 type "$1" >/dev/null 2>&1
159}
160
161# search for an executable in PATH
162path_of() {
163 local_command="$1"
164 local_ifs="$IFS"
165 local_dir=""
166
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
171 return 0
172 fi
173 fi
174 if [ -z "$local_command" ]; then
175 return 1
176 fi
177
178 IFS=:
179 for local_dir in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS="${local_ifs:-$(printf ' \t\n')}"
183 return 0
184 fi
185 done
186 # not found
187 IFS="${local_ifs:-$(printf ' \t\n')}"
188 return 1
189}
190
Lluís Vilanova5b808272014-05-27 15:02:14 +0200191have_backend () {
192 echo "$trace_backends" | grep "$1" >/dev/null
193}
194
bellard7d132992003-03-06 23:23:54 +0000195# default parameters
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100196source_path=`dirname "$0"`
Juan Quintela2ff6b912009-08-03 14:45:55 +0200197cpu=""
Michael S. Tsirkina31a8642013-07-24 18:56:03 +0300198iasl="iasl"
bellard1e43adf2003-09-30 20:54:24 +0000199interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +0000200static="no"
bellard7d132992003-03-06 23:23:54 +0000201cross_prefix=""
malc0c58ac12008-06-25 21:04:05 +0000202audio_drv_list=""
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800203block_drv_rw_whitelist=""
204block_drv_ro_whitelist=""
Peter Maydelle49d0212012-12-07 15:39:13 +0000205host_cc="cc"
Juan Quintela73da3752009-08-03 14:46:26 +0200206libs_softmmu=""
Juan Quintela3e2e0e62009-08-03 14:47:06 +0200207libs_tools=""
Juan Quintela67f86e82009-08-03 14:46:59 +0200208audio_pt_int=""
malcd5631632009-10-10 01:13:41 +0400209audio_win_int=""
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +0200210cc_i386=i386-pc-linux-gnu-gcc
Michael Roth957f1f92011-08-11 15:38:12 -0500211libs_qga=""
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100212debug_info="yes"
Steven Noonan63678e12014-03-28 17:19:02 +0100213stack_protector=""
aliguoriac0df512008-12-29 17:14:15 +0000214
Stefan Weilafb63eb2012-09-26 22:04:38 +0200215# Don't accept a target_list environment variable.
216unset target_list
Paolo Bonzini377529c2010-12-23 11:43:50 +0100217
218# Default value for a variable defining feature "foo".
219# * foo="no" feature will only be used if --enable-foo arg is given
220# * foo="" feature will be searched for, and if found, will be used
221# unless --disable-foo is given
222# * foo="yes" this value will only be set by --enable-foo flag.
223# feature will searched for,
224# if not found, configure exits with error
225#
226# Always add --enable-foo and --disable-foo command line args.
227# Distributions want to ensure that several features are compiled in, and it
228# is impossible without a --enable-foo that exits if a feature is not found.
229
230bluez=""
231brlapi=""
232curl=""
233curses=""
234docs=""
235fdt=""
Vincenzo Maffione58952132013-11-06 11:44:06 +0100236netmap="no"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200237pixman=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100238sdl=""
Dave Airlie47c03742013-12-10 14:05:51 +1000239sdlabi="1.2"
Meador Inge983eef52012-02-24 14:00:42 +0530240virtfs=""
Jes Sorensen821601e2011-03-16 13:33:36 +0100241vnc="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100242sparse="no"
243uuid=""
244vde=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100245vnc_sasl=""
246vnc_jpeg=""
247vnc_png=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100248xen=""
Anthony PERARDd5b93dd2011-02-25 16:20:34 +0000249xen_ctrl_version=""
Anthony PERARDeb6fda02012-06-21 15:32:59 +0000250xen_pci_passthrough=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100251linux_aio=""
Corey Bryant47e98652012-01-26 09:42:26 -0500252cap_ng=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100253attr=""
Avi Kivity4f26f2b2011-11-09 14:44:52 +0200254libattr=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100255xfs=""
256
Bradd41a75a2011-07-26 23:11:26 -0400257vhost_net="no"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000258vhost_scsi="no"
Bradd41a75a2011-07-26 23:11:26 -0400259kvm="no"
Michael R. Hines2da776d2013-07-22 10:01:54 -0400260rdma=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100261gprof="no"
262debug_tcg="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100263debug="no"
264strip_opt="yes"
Stefan Weil9195b2c2011-10-19 07:07:18 +0200265tcg_interpreter="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100266bigendian="no"
267mingw32="no"
Blue Swirl1d728c32012-05-01 18:45:39 +0000268gcov="no"
269gcov_tool="gcov"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100270EXESUF=""
Fam Zheng17969262014-02-10 14:48:56 +0800271DSOSUF=".so"
272LDFLAGS_SHARED="-shared"
273modules="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100274prefix="/usr/local"
275mandir="\${prefix}/share/man"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300276datadir="\${prefix}/share"
Eduardo Habkost850da182012-04-18 16:55:38 -0300277qemu_docdir="\${prefix}/share/doc/qemu"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100278bindir="\${prefix}/bin"
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300279libdir="\${prefix}/lib"
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400280libexecdir="\${prefix}/libexec"
Alon Levy0f94d6d2011-06-27 11:58:20 +0200281includedir="\${prefix}/include"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100282sysconfdir="\${prefix}/etc"
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300283local_statedir="\${prefix}/var"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100284confsuffix="/qemu"
285slirp="yes"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100286oss_lib=""
287bsd="no"
288linux="no"
289solaris="no"
290profiler="no"
291cocoa="no"
292softmmu="yes"
293linux_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100294bsd_user="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100295aix="no"
296blobs="yes"
297pkgversion=""
Avi Kivity40d64442011-11-15 20:12:17 +0200298pie=""
Paolo Bonzini377529c2010-12-23 11:43:50 +0100299zero_malloc=""
Paolo Bonzini3556c232013-05-10 14:16:40 +0200300qom_cast_debug="yes"
Lluís Vilanova5b808272014-05-27 15:02:14 +0200301trace_backends="nop"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100302trace_file="trace"
303spice=""
304rbd=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +0200305smartcard=""
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +0100306libusb=""
Hans de Goede69354a82011-07-19 11:04:10 +0200307usb_redir=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +0100308opengl=""
Alon Levy1ece9902011-07-26 12:30:40 +0300309zlib="yes"
Stefan Weilb25c9df2014-04-29 08:21:16 +0200310lzo=""
311snappy=""
Peter Wu6b383c02015-01-06 18:48:14 +0100312bzip2=""
Michael Tokareve8ef31a2013-07-31 14:22:07 +0400313guest_agent=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400314guest_agent_with_vss="no"
Michael Roth50cbebb2015-07-07 18:10:09 -0500315guest_agent_ntddscsi="no"
Yossi Hindin9dacf322015-05-06 14:57:40 +0300316guest_agent_msi=""
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -0400317vss_win32_sdk=""
318win_sdk="no"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +0100319want_tools="yes"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +1100320libiscsi=""
Peter Lieven6542aa92014-02-03 10:26:13 +0100321libnfs=""
Alex Barcelo519175a2012-02-28 12:25:50 +0100322coroutine=""
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +0200323coroutine_pool=""
Eduardo Otubof7945732012-08-14 18:44:05 -0300324seccomp=""
Bharata B Raoeb100392012-09-24 14:42:45 +0530325glusterfs=""
Bharata B Rao0c14fb42013-07-16 21:47:42 +0530326glusterfs_discard="no"
Bharata B Rao7c815372013-12-21 14:51:25 +0530327glusterfs_zerofill="no"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +0100328archipelago="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -0600329gtk=""
Stefan Weil9e04c682014-05-17 16:29:18 +0200330gtkabi=""
Gerd Hoffmann925a0402015-05-26 12:26:21 +0200331gtk_gl="no"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +0100332gnutls=""
333gnutls_hash=""
Stefan Weilbbbf9bf2014-02-19 07:04:34 +0100334vte=""
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +0200335virglrenderer=""
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"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +0200341jemalloc="no"
Paolo Bonzini377529c2010-12-23 11:43:50 +0100342
aliguoriac0df512008-12-29 17:14:15 +0000343# parse CC options first
344for opt do
345 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
346 case "$opt" in
347 --cross-prefix=*) cross_prefix="$optarg"
348 ;;
Paolo Bonzini3d8df642010-12-23 11:43:48 +0100349 --cc=*) CC="$optarg"
aliguoriac0df512008-12-29 17:14:15 +0000350 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400351 --cxx=*) CXX="$optarg"
352 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100353 --source-path=*) source_path="$optarg"
354 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200355 --cpu=*) cpu="$optarg"
356 ;;
Alex Bennéede385282015-06-03 09:56:37 +0100357 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100358 EXTRA_CFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200359 ;;
Alex Bennéea4969e92015-06-03 14:22:41 +0100360 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +0100361 EXTRA_LDFLAGS="$optarg"
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200362 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100363 --enable-debug-info) debug_info="yes"
364 ;;
365 --disable-debug-info) debug_info="no"
366 ;;
aliguoriac0df512008-12-29 17:14:15 +0000367 esac
368done
aliguoriac0df512008-12-29 17:14:15 +0000369# OS specific
370# Using uname is really, really broken. Once we have the right set of checks
Stefan Weil93148aa2012-02-26 18:46:12 +0100371# we can eliminate its usage altogether.
aliguoriac0df512008-12-29 17:14:15 +0000372
Peter Maydelle49d0212012-12-07 15:39:13 +0000373# Preferred compiler:
374# ${CC} (if set)
375# ${cross_prefix}gcc (if cross-prefix specified)
376# system compiler
377if test -z "${CC}${cross_prefix}"; then
378 cc="$host_cc"
379else
380 cc="${CC-${cross_prefix}gcc}"
381fi
382
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400383if test -z "${CXX}${cross_prefix}"; then
384 cxx="c++"
385else
386 cxx="${CXX-${cross_prefix}g++}"
387fi
388
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500389ar="${AR-${cross_prefix}ar}"
Blue Swirl3dd46c72013-01-05 10:10:27 +0000390as="${AS-${cross_prefix}as}"
391cpp="${CPP-$cc -E}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500392objcopy="${OBJCOPY-${cross_prefix}objcopy}"
393ld="${LD-${cross_prefix}ld}"
Brad3f534582011-08-13 20:30:14 -0400394libtool="${LIBTOOL-${cross_prefix}libtool}"
Stefan Weil4852ee92014-09-18 21:55:08 +0200395nm="${NM-${cross_prefix}nm}"
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500396strip="${STRIP-${cross_prefix}strip}"
397windres="${WINDRES-${cross_prefix}windres}"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300398pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
399query_pkg_config() {
400 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
401}
402pkg_config=query_pkg_config
Stuart Yoderb3198cc2011-08-04 17:10:08 -0500403sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
Dave Airlie47c03742013-12-10 14:05:51 +1000404sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
aliguoriac0df512008-12-29 17:14:15 +0000405
Peter Maydell45d285a2013-10-21 21:03:06 +0100406# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
407ARFLAGS="${ARFLAGS-rv}"
408
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200409# default flags for all hosts
Peter Maydell4c288ac2014-02-26 21:53:30 +0000410QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
Mike Frysingerf9188222011-05-17 17:08:43 -0400411QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
Kevin Wolfc95e3082013-02-22 21:08:51 +0100412QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200413QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Paolo Bonzini6b4c3052012-10-24 13:12:00 +0200414QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100415if test "$debug_info" = "yes"; then
416 CFLAGS="-g $CFLAGS"
417 LDFLAGS="-g $LDFLAGS"
418fi
Michael S. Tsirkinbe17dc92009-11-11 13:50:09 +0200419
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +0100420test_cflags=""
421test_libs=""
422
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100423# make source path absolute
424source_path=`cd "$source_path"; pwd`
425
Michael S. Tsirkincab00a52014-04-28 15:09:01 +0300426# running configure in the source tree?
427# we know that's the case if configure is there.
428if test -f "./configure"; then
429 pwd_is_source_path="y"
430else
431 pwd_is_source_path="n"
432fi
433
aliguoriac0df512008-12-29 17:14:15 +0000434check_define() {
435cat > $TMPC <<EOF
436#if !defined($1)
Peter Maydellfd786e12011-11-23 17:26:43 +0000437#error $1 not defined
aliguoriac0df512008-12-29 17:14:15 +0000438#endif
439int main(void) { return 0; }
440EOF
Juan Quintela52166aa2009-08-03 14:46:03 +0200441 compile_object
aliguoriac0df512008-12-29 17:14:15 +0000442}
443
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200444check_include() {
445cat > $TMPC <<EOF
446#include <$1>
447int main(void) { return 0; }
448EOF
449 compile_object
450}
451
John Snow93b25862015-03-25 18:57:37 -0400452write_c_skeleton() {
453 cat > $TMPC <<EOF
454int main(void) { return 0; }
455EOF
456}
457
Peter Maydellbbea4052012-08-14 15:35:34 +0100458if check_define __linux__ ; then
459 targetos="Linux"
460elif check_define _WIN32 ; then
461 targetos='MINGW32'
462elif check_define __OpenBSD__ ; then
463 targetos='OpenBSD'
464elif check_define __sun__ ; then
465 targetos='SunOS'
466elif check_define __HAIKU__ ; then
467 targetos='Haiku'
468else
469 targetos=`uname -s`
470fi
471
472# Some host OSes need non-standard checks for which CPU to use.
473# Note that these checks are broken for cross-compilation: if you're
474# cross-compiling to one of these OSes then you'll need to specify
475# the correct CPU with the --cpu option.
476case $targetos in
477Darwin)
478 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
479 # run 64-bit userspace code.
480 # If the user didn't specify a CPU explicitly and the kernel says this is
481 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
482 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
483 cpu="x86_64"
484 fi
485 ;;
486SunOS)
487 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
488 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
489 cpu="x86_64"
490 fi
491esac
492
Juan Quintela2ff6b912009-08-03 14:45:55 +0200493if test ! -z "$cpu" ; then
494 # command line argument
495 :
496elif check_define __i386__ ; then
aliguoriac0df512008-12-29 17:14:15 +0000497 cpu="i386"
498elif check_define __x86_64__ ; then
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700499 if check_define __ILP32__ ; then
500 cpu="x32"
501 else
502 cpu="x86_64"
503 fi
blueswir13aa9bd62008-12-31 16:55:26 +0000504elif check_define __sparc__ ; then
blueswir13aa9bd62008-12-31 16:55:26 +0000505 if check_define __arch64__ ; then
506 cpu="sparc64"
507 else
508 cpu="sparc"
509 fi
malcfdf7ed92009-01-14 18:39:52 +0000510elif check_define _ARCH_PPC ; then
511 if check_define _ARCH_PPC64 ; then
512 cpu="ppc64"
513 else
514 cpu="ppc"
515 fi
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200516elif check_define __mips__ ; then
517 cpu="mips"
Aurelien Jarno477ba622010-03-29 02:12:51 +0200518elif check_define __ia64__ ; then
519 cpu="ia64"
Aurelien Jarnod66ed0e2010-06-13 12:28:21 +0200520elif check_define __s390__ ; then
521 if check_define __s390x__ ; then
522 cpu="s390x"
523 else
524 cpu="s390"
525 fi
Peter Maydell21d89f82011-11-30 10:57:48 +0100526elif check_define __arm__ ; then
527 cpu="arm"
Claudio Fontana1f080312013-06-12 16:20:23 +0100528elif check_define __aarch64__ ; then
529 cpu="aarch64"
Bradf28ffed2011-09-07 21:24:56 -0400530elif check_define __hppa__ ; then
531 cpu="hppa"
aliguoriac0df512008-12-29 17:14:15 +0000532else
malcfdf7ed92009-01-14 18:39:52 +0000533 cpu=`uname -m`
aliguoriac0df512008-12-29 17:14:15 +0000534fi
535
Peter Maydell359bc952011-12-24 13:07:25 +0000536ARCH=
537# Normalise host CPU name and set ARCH.
538# Note that this case should only have supported host CPUs, not guests.
bellard7d132992003-03-06 23:23:54 +0000539case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -0700540 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
Juan Quintelaea8f20f2009-08-03 14:46:12 +0200541 cpu="$cpu"
542 ;;
bellard7d132992003-03-06 23:23:54 +0000543 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +0000544 cpu="i386"
bellard7d132992003-03-06 23:23:54 +0000545 ;;
aurel32aaa5fa12008-04-11 22:04:22 +0000546 x86_64|amd64)
547 cpu="x86_64"
548 ;;
Peter Maydell21d89f82011-11-30 10:57:48 +0100549 armv*b|armv*l|arm)
550 cpu="arm"
bellard7d132992003-03-06 23:23:54 +0000551 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +0100552 aarch64)
553 cpu="aarch64"
554 ;;
Aurelien Jarnoafa05232009-10-17 14:17:47 +0200555 mips*)
556 cpu="mips"
557 ;;
blueswir131422552007-04-16 18:27:06 +0000558 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +0000559 cpu="sparc"
560 ;;
bellard7d132992003-03-06 23:23:54 +0000561 *)
Peter Maydell359bc952011-12-24 13:07:25 +0000562 # This will result in either an error or falling back to TCI later
563 ARCH=unknown
bellard7d132992003-03-06 23:23:54 +0000564 ;;
565esac
Peter Maydell359bc952011-12-24 13:07:25 +0000566if test -z "$ARCH"; then
567 ARCH="$cpu"
568fi
Juan Quintelae2d52ad2009-08-12 18:20:24 +0200569
bellard7d132992003-03-06 23:23:54 +0000570# OS specific
Juan Quintela0dbfc672009-08-03 14:46:13 +0200571
Stacey Sonadfc3e92014-06-08 09:57:22 -0700572# host *BSD for user mode
573HOST_VARIANT_DIR=""
574
bellard7d132992003-03-06 23:23:54 +0000575case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000576CYGWIN*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200577 mingw32="yes"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200578 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200579 audio_possible_drivers="sdl"
580 audio_drv_list="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000581;;
bellard67b915a2004-03-31 23:37:16 +0000582MINGW32*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200583 mingw32="yes"
Kővágó, Zoltán3cec7cc2015-06-03 23:03:46 +0200584 audio_possible_drivers="dsound sdl"
Gerd Hoffmann307119e2015-06-10 09:07:35 +0200585 if check_include dsound.h; then
586 audio_drv_list="dsound"
587 else
588 audio_drv_list=""
589 fi
bellard67b915a2004-03-31 23:37:16 +0000590;;
ths5c40d2b2007-06-23 16:03:36 +0000591GNU/kFreeBSD)
Aurelien Jarnoa167ba52009-11-29 18:00:41 +0100592 bsd="yes"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200593 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200594 audio_possible_drivers="oss sdl pa"
ths5c40d2b2007-06-23 16:03:36 +0000595;;
bellard7d3505c2004-05-12 19:32:15 +0000596FreeBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200597 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100598 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200599 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200600 audio_possible_drivers="oss sdl pa"
Juergen Lockf01576f2010-03-25 22:32:16 +0100601 # needed for kinfo_getvmmap(3) in libutil.h
602 LIBS="-lutil $LIBS"
Vincenzo Maffione58952132013-11-06 11:44:06 +0100603 netmap="" # enable netmap autodetect
Stacey Sonadfc3e92014-06-08 09:57:22 -0700604 HOST_VARIANT_DIR="freebsd"
bellard7d3505c2004-05-12 19:32:15 +0000605;;
blueswir1c5e97232009-03-07 20:06:23 +0000606DragonFly)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200607 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100608 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200609 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200610 audio_possible_drivers="oss sdl pa"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700611 HOST_VARIANT_DIR="dragonfly"
blueswir1c5e97232009-03-07 20:06:23 +0000612;;
bellard7d3505c2004-05-12 19:32:15 +0000613NetBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200614 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100615 make="${MAKE-gmake}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200616 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200617 audio_possible_drivers="oss sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200618 oss_lib="-lossaudio"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700619 HOST_VARIANT_DIR="netbsd"
bellard7d3505c2004-05-12 19:32:15 +0000620;;
621OpenBSD)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200622 bsd="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100623 make="${MAKE-gmake}"
Brad Smith4f6ab392013-05-24 19:01:07 -0400624 audio_drv_list="sdl"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200625 audio_possible_drivers="sdl"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700626 HOST_VARIANT_DIR="openbsd"
bellard7d3505c2004-05-12 19:32:15 +0000627;;
bellard83fb7ad2004-07-05 21:25:26 +0000628Darwin)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200629 bsd="yes"
630 darwin="yes"
Fam Zheng17969262014-02-10 14:48:56 +0800631 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200632 if [ "$cpu" = "x86_64" ] ; then
Juan Quintelaa558ee12009-08-03 14:46:21 +0200633 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +0200634 LDFLAGS="-arch x86_64 $LDFLAGS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200635 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200636 cocoa="yes"
637 audio_drv_list="coreaudio"
Kővágó, Zoltán14382602015-06-03 23:03:45 +0200638 audio_possible_drivers="coreaudio sdl"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200639 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
Juan Quintela7973f212009-08-03 14:47:09 +0200640 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
Peter Maydella0b7cf62012-08-11 22:34:39 +0100641 # Disable attempts to use ObjectiveC features in os/object.h since they
642 # won't work when we're compiling with gcc as a C compiler.
643 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
Stacey Sonadfc3e92014-06-08 09:57:22 -0700644 HOST_VARIANT_DIR="darwin"
bellard83fb7ad2004-07-05 21:25:26 +0000645;;
bellardec530c82006-04-25 22:36:06 +0000646SunOS)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200647 solaris="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100648 make="${MAKE-gmake}"
649 install="${INSTALL-ginstall}"
Blue Swirlfa589482009-10-02 19:38:25 +0000650 ld="gld"
Brade2d88302011-09-02 16:53:28 -0400651 smbd="${SMBD-/usr/sfw/sbin/smbd}"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200652 needs_libsunmath="no"
653 solarisrev=`uname -r | cut -f2 -d.`
Juan Quintela0dbfc672009-08-03 14:46:13 +0200654 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
655 if test "$solarisrev" -le 9 ; then
656 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
657 needs_libsunmath="yes"
Juan Quintelaf14bfdf2009-08-03 14:47:11 +0200658 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
659 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
660 LIBS="-lsunmath $LIBS"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200661 else
Peter Maydell76ad07a2013-04-08 12:11:26 +0100662 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
663 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
664 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
665 "Studio 11 can be downloaded from www.sun.com."
Juan Quintela0dbfc672009-08-03 14:46:13 +0200666 fi
thsef18c882007-09-16 22:12:39 +0000667 fi
Juan Quintela0dbfc672009-08-03 14:46:13 +0200668 fi
669 if test -f /usr/include/sys/soundcard.h ; then
670 audio_drv_list="oss"
671 fi
672 audio_possible_drivers="oss sdl"
Blue Swirld7414292009-09-12 12:36:04 +0000673# needed for CMSG_ macros in sys/socket.h
674 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
675# needed for TIOCWIN* defines in termios.h
676 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200677 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
Andreas Färber560d3752012-04-30 18:00:55 +0200678 solarisnetlibs="-lsocket -lnsl -lresolv"
679 LIBS="$solarisnetlibs $LIBS"
680 libs_qga="$solarisnetlibs $libs_qga"
ths86b2bd92007-02-11 00:31:33 +0000681;;
malcb29fe3e2008-11-18 01:42:22 +0000682AIX)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200683 aix="yes"
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100684 make="${MAKE-gmake}"
malcb29fe3e2008-11-18 01:42:22 +0000685;;
Andreas Färber179cf402010-09-20 00:50:43 +0200686Haiku)
687 haiku="yes"
688 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
689 LIBS="-lposix_error_mapper -lnetwork $LIBS"
690;;
bellard1d14ffa2005-10-30 18:58:22 +0000691*)
Juan Quintela0dbfc672009-08-03 14:46:13 +0200692 audio_drv_list="oss"
Kővágó, Zoltán0bac1112015-06-03 23:03:44 +0200693 audio_possible_drivers="oss alsa sdl pa"
Juan Quintela0dbfc672009-08-03 14:46:13 +0200694 linux="yes"
695 linux_user="yes"
Jan Kiszkaaf2be202011-06-23 10:05:12 +0200696 kvm="yes"
697 vhost_net="yes"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +0000698 vhost_scsi="yes"
Alexey Kardashevskiya5851402013-05-29 23:30:43 +1000699 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
bellardfb065182004-11-09 23:09:44 +0000700;;
bellard7d132992003-03-06 23:23:54 +0000701esac
702
bellard7d3505c2004-05-12 19:32:15 +0000703if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000704 if [ "$darwin" != "yes" ] ; then
Andreas Färber08de3942012-04-26 11:57:39 +0200705 bsd_user="yes"
bellard83fb7ad2004-07-05 21:25:26 +0000706 fi
bellard7d3505c2004-05-12 19:32:15 +0000707fi
708
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100709: ${make=${MAKE-make}}
710: ${install=${INSTALL-install}}
Stefan Weil52510f82013-11-14 19:07:03 +0100711: ${python=${PYTHON-python}}
Brade2d88302011-09-02 16:53:28 -0400712: ${smbd=${SMBD-/usr/sbin/smbd}}
Paolo Bonzini0db4a062010-12-23 11:43:49 +0100713
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100714# Default objcc to clang if available, otherwise use CC
715if has clang; then
716 objcc=clang
717else
718 objcc="$cc"
719fi
720
Juan Quintela3457a3f2009-08-03 14:46:07 +0200721if test "$mingw32" = "yes" ; then
Juan Quintela3457a3f2009-08-03 14:46:07 +0200722 EXESUF=".exe"
Fam Zheng17969262014-02-10 14:48:56 +0800723 DSOSUF=".dll"
Juan Quintelaa558ee12009-08-03 14:46:21 +0200724 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
Stefan Weile94a7932010-02-12 11:02:08 +0100725 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
726 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100727 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
John Snow93b25862015-03-25 18:57:37 -0400728 write_c_skeleton;
Stefan Weilf7cf5d52012-03-10 11:14:32 +0100729 if compile_prog "" "-liberty" ; then
730 LIBS="-liberty $LIBS"
731 fi
Stefan Weilc5ec15e2012-04-07 09:23:38 +0200732 prefix="c:/Program Files/QEMU"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200733 mandir="\${prefix}"
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300734 datadir="\${prefix}"
Eduardo Habkost850da182012-04-18 16:55:38 -0300735 qemu_docdir="\${prefix}"
Paolo Bonzini683035d2010-05-26 16:08:28 +0200736 bindir="\${prefix}"
737 sysconfdir="\${prefix}"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +0200738 local_statedir=
Paolo Bonzini683035d2010-05-26 16:08:28 +0200739 confsuffix=""
Marc-André Lureau259434b2015-06-30 16:37:13 +0200740 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga"
Juan Quintela3457a3f2009-08-03 14:46:07 +0200741fi
742
Anthony Liguori487fefd2009-06-11 13:28:25 -0500743werror=""
bellard85aa5182007-11-11 20:17:03 +0000744
bellard7d132992003-03-06 23:23:54 +0000745for opt do
pbrooka46e4032006-04-29 23:05:22 +0000746 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000747 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000748 --help|-h) show_help=yes
749 ;;
Mike Frysinger99123e12011-04-07 01:12:28 -0400750 --version|-V) exec cat $source_path/VERSION
751 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000752 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000753 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000754 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000755 ;;
Paolo Bonzinica4deeb2010-12-23 11:44:00 +0100756 --source-path=*)
bellard7d132992003-03-06 23:23:54 +0000757 ;;
aliguoriac0df512008-12-29 17:14:15 +0000758 --cross-prefix=*)
bellard7d132992003-03-06 23:23:54 +0000759 ;;
aliguoriac0df512008-12-29 17:14:15 +0000760 --cc=*)
bellard7d132992003-03-06 23:23:54 +0000761 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000762 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000763 ;;
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -0400764 --cxx=*)
765 ;;
Michael S. Tsirkine007dbe2013-11-24 11:38:05 +0200766 --iasl=*) iasl="$optarg"
767 ;;
Peter Maydell3c4a4d02012-08-11 22:34:40 +0100768 --objcc=*) objcc="$optarg"
769 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000770 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000771 ;;
pbrook6a882642006-04-17 13:57:12 +0000772 --install=*) install="$optarg"
773 ;;
Blue Swirlc886edf2011-07-22 21:08:09 +0000774 --python=*) python="$optarg"
775 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000776 --gcov=*) gcov_tool="$optarg"
777 ;;
Brade2d88302011-09-02 16:53:28 -0400778 --smbd=*) smbd="$optarg"
779 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200780 --extra-cflags=*)
bellard7d132992003-03-06 23:23:54 +0000781 ;;
Juan Quintelae2a2ed02009-08-03 14:46:02 +0200782 --extra-ldflags=*)
bellard7d132992003-03-06 23:23:54 +0000783 ;;
Gerd Hoffmann5bc62e02012-02-08 13:54:13 +0100784 --enable-debug-info)
785 ;;
786 --disable-debug-info)
787 ;;
Fam Zheng17969262014-02-10 14:48:56 +0800788 --enable-modules)
789 modules="yes"
790 ;;
Juan Quintela2ff6b912009-08-03 14:45:55 +0200791 --cpu=*)
bellard7d132992003-03-06 23:23:54 +0000792 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000793 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000794 ;;
Lluís Vilanova5b808272014-05-27 15:02:14 +0200795 --enable-trace-backends=*) trace_backends="$optarg"
796 ;;
797 # XXX: backwards compatibility
798 --enable-trace-backend=*) trace_backends="$optarg"
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +0100799 ;;
Paolo Bonzini74242e02010-12-23 11:44:02 +0100800 --with-trace-file=*) trace_file="$optarg"
Prerna Saxena9410b562010-07-13 09:26:32 +0100801 ;;
bellard7d132992003-03-06 23:23:54 +0000802 --enable-gprof) gprof="yes"
803 ;;
Blue Swirl1d728c32012-05-01 18:45:39 +0000804 --enable-gcov) gcov="yes"
805 ;;
Loïc Minier79427692010-01-31 12:23:45 +0100806 --static)
807 static="yes"
808 LDFLAGS="-static $LDFLAGS"
Sergei Trofimovich17884d72012-01-31 22:03:45 +0300809 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000810 ;;
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200811 --mandir=*) mandir="$optarg"
812 ;;
813 --bindir=*) bindir="$optarg"
814 ;;
Alon Levy3aa5d2b2011-05-15 12:08:59 +0300815 --libdir=*) libdir="$optarg"
816 ;;
Michael Tokarev8bf188a2012-06-07 01:11:00 +0400817 --libexecdir=*) libexecdir="$optarg"
818 ;;
Alon Levy0f94d6d2011-06-27 11:58:20 +0200819 --includedir=*) includedir="$optarg"
820 ;;
Eduardo Habkost528ae5b2012-04-18 16:55:49 -0300821 --datadir=*) datadir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200822 ;;
Eduardo Habkost023d3d62012-04-18 16:55:50 -0300823 --with-confsuffix=*) confsuffix="$optarg"
824 ;;
Eduardo Habkost850da182012-04-18 16:55:38 -0300825 --docdir=*) qemu_docdir="$optarg"
Paolo Bonzini0b24e752010-05-26 16:08:26 +0200826 ;;
Andre Przywaraca2fb932010-03-08 14:09:48 +0100827 --sysconfdir=*) sysconfdir="$optarg"
Anthony Liguori07381cc2010-01-21 10:30:29 -0600828 ;;
Luiz Capitulino785c23a2012-10-03 18:35:57 -0300829 --localstatedir=*) local_statedir="$optarg"
830 ;;
831 --sbindir=*|--sharedstatedir=*|\
Max Filippov023ddd72011-11-24 16:11:31 +0400832 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
833 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
834 # These switches are silently ignored, for compatibility with
835 # autoconf-generated configure scripts. This allows QEMU's
836 # configure to be used by RPM and similar macros that set
837 # lots of directory switches by default.
838 ;;
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +0200839 --with-system-pixman) pixman="system"
840 ;;
841 --without-system-pixman) pixman="internal"
842 ;;
Robert Schiele74880fe2012-12-04 16:58:08 +0100843 --without-pixman) pixman="none"
844 ;;
bellard97a847b2003-08-10 21:36:04 +0000845 --disable-sdl) sdl="no"
846 ;;
Juan Quintelac4198152009-08-12 18:29:53 +0200847 --enable-sdl) sdl="yes"
848 ;;
Dave Airlie47c03742013-12-10 14:05:51 +1000849 --with-sdlabi=*) sdlabi="$optarg"
850 ;;
Paolo Bonzini3556c232013-05-10 14:16:40 +0200851 --disable-qom-cast-debug) qom_cast_debug="no"
852 ;;
853 --enable-qom-cast-debug) qom_cast_debug="yes"
854 ;;
Meador Inge983eef52012-02-24 14:00:42 +0530855 --disable-virtfs) virtfs="no"
856 ;;
857 --enable-virtfs) virtfs="yes"
858 ;;
Jes Sorensen821601e2011-03-16 13:33:36 +0100859 --disable-vnc) vnc="no"
860 ;;
861 --enable-vnc) vnc="yes"
862 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000863 --oss-lib=*) oss_lib="$optarg"
864 ;;
malc0c58ac12008-06-25 21:04:05 +0000865 --audio-drv-list=*) audio_drv_list="$optarg"
866 ;;
Fam Zhengb64ec4e2013-05-29 19:35:40 +0800867 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
868 ;;
869 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
Markus Armbrustereb852012009-10-27 18:41:44 +0100870 ;;
aurel32f8393942009-04-13 18:45:38 +0000871 --enable-debug-tcg) debug_tcg="yes"
872 ;;
873 --disable-debug-tcg) debug_tcg="no"
874 ;;
Paul Brookf3d08ee2009-06-04 11:39:04 +0100875 --enable-debug)
876 # Enable debugging options that aren't excessively noisy
877 debug_tcg="yes"
878 debug="yes"
879 strip_opt="no"
880 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000881 --enable-sparse) sparse="yes"
882 ;;
883 --disable-sparse) sparse="no"
884 ;;
aliguori1625af82009-04-05 17:41:02 +0000885 --disable-strip) strip_opt="no"
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" ;
malcc2de5c92008-06-28 19:13:06 +0000959 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000960 ;;
pbrookcad25d62006-03-19 16:31:11 +0000961 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000962 ;;
pbrookcad25d62006-03-19 16:31:11 +0000963 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000964 ;;
Zachary Amsden0953a802009-07-30 00:14:59 -1000965 --disable-user)
966 linux_user="no" ;
967 bsd_user="no" ;
Zachary Amsden0953a802009-07-30 00:14:59 -1000968 ;;
969 --enable-user) ;;
ths831b7822007-01-18 20:06:33 +0000970 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000971 ;;
ths831b7822007-01-18 20:06:33 +0000972 --enable-linux-user) linux_user="yes"
973 ;;
blueswir184778502008-10-26 20:33:16 +0000974 --disable-bsd-user) bsd_user="no"
975 ;;
976 --enable-bsd-user) bsd_user="yes"
977 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200978 --enable-pie) pie="yes"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300979 ;;
Avi Kivity40d64442011-11-15 20:12:17 +0200980 --disable-pie) pie="no"
Kirill A. Shutemov34005a02009-09-12 02:17:55 +0300981 ;;
bellard85aa5182007-11-11 20:17:03 +0000982 --enable-werror) werror="yes"
983 ;;
984 --disable-werror) werror="no"
985 ;;
Steven Noonan63678e12014-03-28 17:19:02 +0100986 --enable-stack-protector) stack_protector="yes"
987 ;;
988 --disable-stack-protector) stack_protector="no"
989 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000990 --disable-curses) curses="no"
991 ;;
Juan Quintelac584a6d2009-08-12 18:20:30 +0200992 --enable-curses) curses="yes"
993 ;;
Alexander Graf769ce762009-05-11 17:41:42 +0200994 --disable-curl) curl="no"
995 ;;
Juan Quintela788c8192009-08-12 18:29:47 +0200996 --enable-curl) curl="yes"
997 ;;
Juan Quintela2df87df2009-08-12 18:29:54 +0200998 --disable-fdt) fdt="no"
999 ;;
1000 --enable-fdt) fdt="yes"
1001 ;;
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02001002 --disable-linux-aio) linux_aio="no"
1003 ;;
1004 --enable-linux-aio) linux_aio="yes"
1005 ;;
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07001006 --disable-attr) attr="no"
1007 ;;
1008 --enable-attr) attr="yes"
1009 ;;
ths77755342008-11-27 15:45:16 +00001010 --disable-blobs) blobs="no"
1011 ;;
pbrook4a19f1e2009-04-07 23:17:49 +00001012 --with-pkgversion=*) pkgversion=" ($optarg)"
1013 ;;
Alex Barcelo519175a2012-02-28 12:25:50 +01001014 --with-coroutine=*) coroutine="$optarg"
1015 ;;
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02001016 --disable-coroutine-pool) coroutine_pool="no"
1017 ;;
1018 --enable-coroutine-pool) coroutine_pool="yes"
1019 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001020 --disable-docs) docs="no"
Anthony Liguori70ec5dc2009-05-14 08:25:04 -05001021 ;;
Juan Quintelaa25dba12009-08-12 18:29:52 +02001022 --enable-docs) docs="yes"
Juan Quintela83a3ab82009-08-12 18:29:51 +02001023 ;;
Michael S. Tsirkind5970052010-03-17 13:08:17 +02001024 --disable-vhost-net) vhost_net="no"
1025 ;;
1026 --enable-vhost-net) vhost_net="yes"
1027 ;;
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00001028 --disable-vhost-scsi) vhost_scsi="no"
1029 ;;
1030 --enable-vhost-scsi) vhost_scsi="yes"
1031 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001032 --disable-opengl) opengl="no"
Michael Walle20ff0752011-03-07 23:32:39 +01001033 ;;
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01001034 --enable-opengl) opengl="yes"
Michael Walle20ff0752011-03-07 23:32:39 +01001035 ;;
Christian Brunnerf27aaf42010-12-06 20:53:01 +01001036 --disable-rbd) rbd="no"
1037 ;;
1038 --enable-rbd) rbd="yes"
1039 ;;
Sergei Trofimovich8c84cf12012-01-24 20:42:40 +03001040 --disable-xfsctl) xfs="no"
1041 ;;
1042 --enable-xfsctl) xfs="yes"
1043 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001044 --disable-smartcard) smartcard="no"
Robert Relyea111a38b2010-11-28 16:36:38 +02001045 ;;
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001046 --enable-smartcard) smartcard="yes"
Robert Relyea111a38b2010-11-28 16:36:38 +02001047 ;;
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01001048 --disable-libusb) libusb="no"
1049 ;;
1050 --enable-libusb) libusb="yes"
1051 ;;
Hans de Goede69354a82011-07-19 11:04:10 +02001052 --disable-usb-redir) usb_redir="no"
1053 ;;
1054 --enable-usb-redir) usb_redir="yes"
1055 ;;
Alon Levy1ece9902011-07-26 12:30:40 +03001056 --disable-zlib-test) zlib="no"
1057 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001058 --disable-lzo) lzo="no"
1059 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001060 --enable-lzo) lzo="yes"
1061 ;;
Stefan Weilb25c9df2014-04-29 08:21:16 +02001062 --disable-snappy) snappy="no"
1063 ;;
qiaonuohan607dacd2014-02-18 14:11:30 +08001064 --enable-snappy) snappy="yes"
1065 ;;
Peter Wu6b383c02015-01-06 18:48:14 +01001066 --disable-bzip2) bzip2="no"
1067 ;;
1068 --enable-bzip2) bzip2="yes"
1069 ;;
Michael Rothd138cee2011-08-01 14:52:57 -05001070 --enable-guest-agent) guest_agent="yes"
1071 ;;
1072 --disable-guest-agent) guest_agent="no"
1073 ;;
Yossi Hindin9dacf322015-05-06 14:57:40 +03001074 --enable-guest-agent-msi) guest_agent_msi="yes"
1075 ;;
1076 --disable-guest-agent-msi) guest_agent_msi="no"
1077 ;;
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04001078 --with-vss-sdk) vss_win32_sdk=""
1079 ;;
1080 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1081 ;;
1082 --without-vss-sdk) vss_win32_sdk="no"
1083 ;;
1084 --with-win-sdk) win_sdk=""
1085 ;;
1086 --with-win-sdk=*) win_sdk="$optarg"
1087 ;;
1088 --without-win-sdk) win_sdk="no"
1089 ;;
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01001090 --enable-tools) want_tools="yes"
1091 ;;
1092 --disable-tools) want_tools="no"
1093 ;;
Eduardo Otubof7945732012-08-14 18:44:05 -03001094 --enable-seccomp) seccomp="yes"
1095 ;;
1096 --disable-seccomp) seccomp="no"
1097 ;;
Bharata B Raoeb100392012-09-24 14:42:45 +05301098 --disable-glusterfs) glusterfs="no"
1099 ;;
1100 --enable-glusterfs) glusterfs="yes"
1101 ;;
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03001102 --disable-archipelago) archipelago="no"
1103 ;;
1104 --enable-archipelago) archipelago="yes"
1105 ;;
Fam Zheng52b53c02014-09-10 14:17:51 +08001106 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1107 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
Stefan Hajnoczi583f6e72012-11-14 15:04:15 +01001108 ;;
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06001109 --disable-gtk) gtk="no"
1110 ;;
1111 --enable-gtk) gtk="yes"
1112 ;;
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001113 --disable-gnutls) gnutls="no"
1114 ;;
1115 --enable-gnutls) gnutls="yes"
1116 ;;
Michael R. Hines2da776d2013-07-22 10:01:54 -04001117 --enable-rdma) rdma="yes"
1118 ;;
1119 --disable-rdma) rdma="no"
1120 ;;
Daniel P. Berrange528de902013-02-25 15:20:44 +00001121 --with-gtkabi=*) gtkabi="$optarg"
1122 ;;
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01001123 --disable-vte) vte="no"
1124 ;;
1125 --enable-vte) vte="yes"
1126 ;;
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02001127 --disable-virglrenderer) virglrenderer="no"
1128 ;;
1129 --enable-virglrenderer) virglrenderer="yes"
1130 ;;
Cole Robinsone91c7932014-06-16 15:32:47 -04001131 --disable-tpm) tpm="no"
1132 ;;
Stefan Bergerab214c22013-02-27 12:47:52 -05001133 --enable-tpm) tpm="yes"
1134 ;;
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01001135 --disable-libssh2) libssh2="no"
1136 ;;
1137 --enable-libssh2) libssh2="yes"
1138 ;;
Jeff Cody4f18b782013-10-30 10:44:39 -04001139 --enable-vhdx) vhdx="yes"
1140 ;;
1141 --disable-vhdx) vhdx="no"
1142 ;;
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08001143 --disable-numa) numa="no"
1144 ;;
1145 --enable-numa) numa="yes"
1146 ;;
Fam Zheng2847b462015-03-26 11:03:12 +08001147 --disable-tcmalloc) tcmalloc="no"
1148 ;;
1149 --enable-tcmalloc) tcmalloc="yes"
1150 ;;
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001151 --disable-jemalloc) jemalloc="no"
1152 ;;
1153 --enable-jemalloc) jemalloc="yes"
1154 ;;
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001155 *)
1156 echo "ERROR: unknown option $opt"
1157 echo "Try '$0 --help' for more information"
1158 exit 1
balrog7f1559c2007-11-17 10:24:32 +00001159 ;;
bellard7d132992003-03-06 23:23:54 +00001160 esac
1161done
1162
Stefan Weilf6f0b7d2013-12-18 22:30:26 +01001163if ! has $python; then
1164 error_exit "Python not found. Use --python=/path/to/python"
1165fi
1166
1167# Note that if the Python conditional here evaluates True we will exit
1168# with status 1 which is a shell 'false' value.
1169if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1170 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1171 "Note that Python 3 or later is not yet supported." \
1172 "Use --python=/path/to/python to specify a supported Python."
1173fi
1174
1175# The -B switch was added in Python 2.6.
1176# If it is supplied, compiled files are not written.
1177# Use it for Python versions which support it.
1178if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1179 python="$python -B"
1180fi
1181
bellard40293e52008-01-31 11:32:10 +00001182case "$cpu" in
Richard Hendersone3608d62013-08-28 15:48:21 -07001183 ppc)
1184 CPU_CFLAGS="-m32"
1185 LDFLAGS="-m32 $LDFLAGS"
1186 ;;
1187 ppc64)
1188 CPU_CFLAGS="-m64"
1189 LDFLAGS="-m64 $LDFLAGS"
1190 ;;
Richard Henderson9b9c37c2012-09-21 10:34:21 -07001191 sparc)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001192 LDFLAGS="-m32 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001193 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001194 ;;
Juan Quintelaed968ff2009-08-03 14:46:11 +02001195 sparc64)
Juan Quintelaed968ff2009-08-03 14:46:11 +02001196 LDFLAGS="-m64 $LDFLAGS"
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001197 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
blueswir131422552007-04-16 18:27:06 +00001198 ;;
ths76d83bd2007-11-18 21:22:10 +00001199 s390)
Richard Henderson061cdd82014-03-31 13:40:49 -04001200 CPU_CFLAGS="-m31"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001201 LDFLAGS="-m31 $LDFLAGS"
1202 ;;
1203 s390x)
Richard Henderson061cdd82014-03-31 13:40:49 -04001204 CPU_CFLAGS="-m64"
Richard Henderson28d7cc42010-06-04 12:14:09 -07001205 LDFLAGS="-m64 $LDFLAGS"
ths76d83bd2007-11-18 21:22:10 +00001206 ;;
bellard40293e52008-01-31 11:32:10 +00001207 i386)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001208 CPU_CFLAGS="-m32"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001209 LDFLAGS="-m32 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001210 cc_i386='$(CC) -m32'
bellard40293e52008-01-31 11:32:10 +00001211 ;;
1212 x86_64)
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001213 CPU_CFLAGS="-m64"
Juan Quintela0c439cb2009-08-03 14:46:01 +02001214 LDFLAGS="-m64 $LDFLAGS"
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02001215 cc_i386='$(CC) -m32'
Paul Brook379f6692009-07-17 12:48:08 +01001216 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001217 x32)
1218 CPU_CFLAGS="-mx32"
1219 LDFLAGS="-mx32 $LDFLAGS"
1220 cc_i386='$(CC) -m32'
1221 ;;
Peter Maydell30163d82012-10-09 03:16:49 +00001222 # No special flags required for other host CPUs
blueswir131422552007-04-16 18:27:06 +00001223esac
1224
Peter Crosthwaite79f3b122013-04-18 14:46:14 +10001225QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1226EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1227
Peter Maydell60e0df22011-05-03 14:50:13 +01001228default_target_list=""
1229
Peter Maydell6e92f822013-05-20 16:16:15 +01001230mak_wilds=""
1231
1232if [ "$softmmu" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001234fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001235if [ "$linux_user" = "yes" ]; then
1236 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001237fi
Peter Maydell6e92f822013-05-20 16:16:15 +01001238if [ "$bsd_user" = "yes" ]; then
1239 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
Peter Maydell60e0df22011-05-03 14:50:13 +01001240fi
1241
Peter Maydell6e92f822013-05-20 16:16:15 +01001242for config in $mak_wilds; do
1243 default_target_list="${default_target_list} $(basename "$config" .mak)"
1244done
1245
pbrookaf5db582006-04-08 14:26:41 +00001246if test x"$show_help" = x"yes" ; then
1247cat << EOF
1248
1249Usage: configure [options]
1250Options: [defaults in brackets after descriptions]
1251
Stefan Weil08fb77e2013-12-18 22:09:39 +01001252Standard options:
1253 --help print this message
1254 --prefix=PREFIX install in PREFIX [$prefix]
1255 --interp-prefix=PREFIX where to find shared libraries, etc.
1256 use %M for cpu name [$interp_prefix]
1257 --target-list=LIST set target list (default: build everything)
1258$(echo Available targets: $default_target_list | \
1259 fold -s -w 53 | sed -e 's/^/ /')
1260
1261Advanced options (experts only):
1262 --source-path=PATH path of source code [$source_path]
1263 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1264 --cc=CC use C compiler CC [$cc]
1265 --iasl=IASL use ACPI compiler IASL [$iasl]
1266 --host-cc=CC use C compiler CC [$host_cc] for code run at
1267 build time
1268 --cxx=CXX use C++ compiler CXX [$cxx]
1269 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1270 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1271 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1272 --make=MAKE use specified make [$make]
1273 --install=INSTALL use specified install [$install]
1274 --python=PYTHON use specified python [$python]
1275 --smbd=SMBD use specified smbd [$smbd]
1276 --static enable static build [$static]
1277 --mandir=PATH install man pages in PATH
1278 --datadir=PATH install firmware in PATH$confsuffix
1279 --docdir=PATH install documentation in PATH$confsuffix
1280 --bindir=PATH install binaries in PATH
1281 --libdir=PATH install libraries in PATH
1282 --sysconfdir=PATH install config in PATH$confsuffix
1283 --localstatedir=PATH install local state in PATH (set at runtime on win32)
Fam Zhenge26110c2014-02-10 14:48:57 +08001284 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001285 --enable-debug enable common debug build options
Stefan Weil08fb77e2013-12-18 22:09:39 +01001286 --disable-strip disable stripping binaries
1287 --disable-werror disable compilation abort on warning
Steven Noonan63678e12014-03-28 17:19:02 +01001288 --disable-stack-protector disable compiler-provided stack protection
Stefan Weil08fb77e2013-12-18 22:09:39 +01001289 --audio-drv-list=LIST set audio drivers list:
1290 Available drivers: $audio_possible_drivers
1291 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1292 --block-drv-rw-whitelist=L
1293 set block driver read-write whitelist
1294 (affects only QEMU, not qemu-img)
1295 --block-drv-ro-whitelist=L
1296 set block driver read-only whitelist
1297 (affects only QEMU, not qemu-img)
Lluís Vilanova5b808272014-05-27 15:02:14 +02001298 --enable-trace-backends=B Set trace backend
Stefan Weil08fb77e2013-12-18 22:09:39 +01001299 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1300 --with-trace-file=NAME Full PATH,NAME of file to store traces
1301 Default:trace-<pid>
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001302 --disable-slirp disable SLIRP userspace network connectivity
1303 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1304 --oss-lib path to OSS library
1305 --cpu=CPU Build for host CPU [$cpu]
Stefan Weil08fb77e2013-12-18 22:09:39 +01001306 --with-coroutine=BACKEND coroutine backend. Supported options:
1307 gthread, ucontext, sigaltstack, windows
Stefan Weil08fb77e2013-12-18 22:09:39 +01001308 --enable-gcov enable test coverage analysis with gcov
1309 --gcov=GCOV use specified gcov [$gcov_tool]
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001310 --disable-blobs disable installing provided firmware blobs
1311 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1312 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1313
1314Optional features, enabled with --enable-FEATURE and
1315disabled with --disable-FEATURE, default is enabled if available:
1316
1317 system all system emulation targets
1318 user supported user emulation targets
1319 linux-user all linux usermode emulation targets
1320 bsd-user all BSD usermode emulation targets
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001321 docs build documentation
1322 guest-agent build the QEMU Guest Agent
1323 guest-agent-msi build guest agent Windows MSI installation package
1324 pie Position Independent Executables
1325 modules modules support
1326 debug-tcg TCG debugging (default is disabled)
1327 debug-info debugging information
1328 sparse sparse checker
1329
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01001330 gnutls GNUTLS cryptography support
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001331 sdl SDL UI
1332 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1333 gtk gtk UI
1334 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1335 vte vte support for the gtk UI
1336 curses curses UI
1337 vnc VNC UI support
1338 vnc-tls TLS encryption for VNC server
1339 vnc-sasl SASL encryption for VNC server
1340 vnc-jpeg JPEG lossy compression for VNC server
1341 vnc-png PNG compression for VNC server
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001342 cocoa Cocoa UI (Mac OS X only)
1343 virtfs VirtFS
1344 xen xen backend driver support
1345 xen-pci-passthrough
1346 brlapi BrlAPI (Braile)
1347 curl curl connectivity
1348 fdt fdt device tree
1349 bluez bluez stack connectivity
1350 kvm KVM acceleration support
1351 rdma RDMA-based migration support
1352 uuid uuid support
1353 vde support for vde network
1354 netmap support for netmap network
1355 linux-aio Linux AIO support
1356 cap-ng libcap-ng support
1357 attr attr and xattr support
1358 vhost-net vhost-net acceleration support
1359 spice spice
1360 rbd rados block device (rbd)
1361 libiscsi iscsi support
1362 libnfs nfs support
Marc-André Lureau7b02f542015-08-30 11:48:40 +02001363 smartcard smartcard support (libcacard)
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001364 libusb libusb (for usb passthrough)
1365 usb-redir usb network redirection support
1366 lzo support of lzo compression library
1367 snappy support of snappy compression library
1368 bzip2 support of bzip2 compression library
1369 (for reading bzip2-compressed dmg images)
1370 seccomp seccomp support
1371 coroutine-pool coroutine freelist (better performance)
1372 glusterfs GlusterFS backend
1373 archipelago Archipelago backend
1374 tpm TPM support
1375 libssh2 ssh block device support
1376 vhdx support for the Microsoft VHDX image format
Michael Tokarevc23f23b2015-06-17 22:19:26 +03001377 numa libnuma support
1378 tcmalloc tcmalloc support
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02001379 jemalloc jemalloc support
Stefan Weil08fb77e2013-12-18 22:09:39 +01001380
1381NOTE: The object files are built at the place where configure is launched
pbrookaf5db582006-04-08 14:26:41 +00001382EOF
Fam Zheng2d2ad6d2014-04-18 14:55:36 +08001383exit 0
pbrookaf5db582006-04-08 14:26:41 +00001384fi
1385
Peter Maydell359bc952011-12-24 13:07:25 +00001386# Now we have handled --enable-tcg-interpreter and know we're not just
1387# printing the help message, bail out if the host CPU isn't supported.
1388if test "$ARCH" = "unknown"; then
1389 if test "$tcg_interpreter" = "yes" ; then
1390 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1391 ARCH=tci
1392 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001393 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
Peter Maydell359bc952011-12-24 13:07:25 +00001394 fi
1395fi
1396
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001397# Consult white-list to determine whether to enable werror
1398# by default. Only enable by default for git builds
1399z_version=`cut -f3 -d. $source_path/VERSION`
1400
1401if test -z "$werror" ; then
1402 if test -d "$source_path/.git" -a \
1403 "$linux" = "yes" ; then
1404 werror="yes"
1405 else
1406 werror="no"
1407 fi
1408fi
1409
Paolo Bonzini8d050952010-12-23 11:43:52 +01001410# check that the C compiler works.
John Snow93b25862015-03-25 18:57:37 -04001411write_c_skeleton;
Paolo Bonzini8d050952010-12-23 11:43:52 +01001412if compile_object ; then
1413 : C compiler works ok
1414else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001415 error_exit "\"$cc\" either does not exist or does not work"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001416fi
1417
Peter Maydell98b21dc2014-02-20 15:10:16 +00001418# Check that the C++ compiler exists and works with the C compiler
1419if has $cxx; then
1420 cat > $TMPC <<EOF
1421int c_function(void);
1422int main(void) { return c_function(); }
1423EOF
1424
1425 compile_object
1426
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001427 cat > $TMPCXX <<EOF
Peter Maydell98b21dc2014-02-20 15:10:16 +00001428extern "C" {
1429 int c_function(void);
1430}
1431int c_function(void) { return 42; }
1432EOF
1433
Peter Maydell9c83ffd2014-02-25 18:27:49 +00001434 update_cxxflags
1435
1436 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
Peter Maydell98b21dc2014-02-20 15:10:16 +00001437 # C++ compiler $cxx works ok with C compiler $cc
1438 :
1439 else
1440 echo "C++ compiler $cxx does not work with C compiler $cc"
1441 echo "Disabling C++ specific optional code"
1442 cxx=
1443 fi
1444else
1445 echo "No C++ compiler available; disabling C++ specific optional code"
1446 cxx=
1447fi
1448
Paolo Bonzini8d050952010-12-23 11:43:52 +01001449gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1450gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1451gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
Marc-André Lureau37746c52013-02-25 23:31:12 +01001452gcc_flags="-Wendif-labels $gcc_flags"
Peter Maydellc1556a82012-10-14 21:00:39 +01001453gcc_flags="-Wno-initializer-overrides $gcc_flags"
Peter Maydell71429092013-08-05 20:16:40 +01001454gcc_flags="-Wno-string-plus-int $gcc_flags"
Peter Maydell6ca026c2012-07-18 15:10:18 +01001455# Note that we do not add -Werror to gcc_flags here, because that would
1456# enable it for all configure tests. If a configure test failed due
1457# to -Werror this would just silently disable some features,
1458# so it's too error prone.
John Snow93b25862015-03-25 18:57:37 -04001459
1460cc_has_warning_flag() {
1461 write_c_skeleton;
1462
Peter Maydella1d29d62012-10-27 22:19:07 +01001463 # Use the positive sense of the flag when testing for -Wno-wombat
1464 # support (gcc will happily accept the -Wno- form of unknown
1465 # warning options).
John Snow93b25862015-03-25 18:57:37 -04001466 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1467 compile_prog "-Werror $optflag" ""
1468}
1469
1470for flag in $gcc_flags; do
1471 if cc_has_warning_flag $flag ; then
1472 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
Paolo Bonzini8d050952010-12-23 11:43:52 +01001473 fi
1474done
1475
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001476if test "$stack_protector" != "no"; then
Steven Noonan63678e12014-03-28 17:19:02 +01001477 gcc_flags="-fstack-protector-strong -fstack-protector-all"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001478 sp_on=0
Steven Noonan63678e12014-03-28 17:19:02 +01001479 for flag in $gcc_flags; do
Peter Maydell590e5dd2014-04-11 17:13:52 +01001480 # We need to check both a compile and a link, since some compiler
1481 # setups fail only on a .c->.o compile and some only at link time
1482 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1483 compile_prog "-Werror $flag" ""; then
Steven Noonan63678e12014-03-28 17:19:02 +01001484 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1485 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001486 sp_on=1
Steven Noonan63678e12014-03-28 17:19:02 +01001487 break
1488 fi
1489 done
Miroslav Rezanina3b463a32014-07-02 10:05:24 +02001490 if test "$stack_protector" = yes; then
1491 if test $sp_on = 0; then
1492 error_exit "Stack protector not supported"
1493 fi
1494 fi
Marc-André Lureau37746c52013-02-25 23:31:12 +01001495fi
1496
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01001497# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1498# large functions that use global variables. The bug is in all releases of
1499# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1500# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1501cat > $TMPC << EOF
1502#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1503int main(void) { return 0; }
1504#else
1505#error No bug in this compiler.
1506#endif
1507EOF
1508if compile_prog "-Werror -fno-gcse" "" ; then
1509 TRANSLATE_OPT_CFLAGS=-fno-gcse
1510fi
1511
Avi Kivity40d64442011-11-15 20:12:17 +02001512if test "$static" = "yes" ; then
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01001513 if test "$modules" = "yes" ; then
1514 error_exit "static and modules are mutually incompatible"
1515 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001516 if test "$pie" = "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001517 error_exit "static and pie are mutually incompatible"
Avi Kivity40d64442011-11-15 20:12:17 +02001518 else
1519 pie="no"
1520 fi
1521fi
1522
Emilio G. Cota768b7852015-04-29 13:09:02 +02001523# Unconditional check for compiler __thread support
1524 cat > $TMPC << EOF
1525static __thread int tls_var;
1526int main(void) { return tls_var; }
1527EOF
1528
1529if ! compile_prog "-Werror" "" ; then
1530 error_exit "Your compiler does not support the __thread specifier for " \
1531 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1532fi
1533
Avi Kivity40d64442011-11-15 20:12:17 +02001534if test "$pie" = ""; then
1535 case "$cpu-$targetos" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07001536 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
Avi Kivity40d64442011-11-15 20:12:17 +02001537 ;;
1538 *)
1539 pie="no"
1540 ;;
1541 esac
1542fi
1543
1544if test "$pie" != "no" ; then
1545 cat > $TMPC << EOF
Avi Kivity21d4a792011-11-23 11:24:25 +02001546
1547#ifdef __linux__
1548# define THREAD __thread
1549#else
1550# define THREAD
1551#endif
1552
1553static THREAD int tls_var;
1554
1555int main(void) { return tls_var; }
1556
Avi Kivity40d64442011-11-15 20:12:17 +02001557EOF
1558 if compile_prog "-fPIE -DPIE" "-pie"; then
1559 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1560 LDFLAGS="-pie $LDFLAGS"
1561 pie="yes"
1562 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1563 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1564 fi
1565 else
1566 if test "$pie" = "yes"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001567 error_exit "PIE not available due to missing toolchain support"
Avi Kivity40d64442011-11-15 20:12:17 +02001568 else
1569 echo "Disabling PIE due to missing toolchain support"
1570 pie="no"
1571 fi
1572 fi
Brad46eef332013-12-10 19:49:08 -05001573
Stefan Hajnoczie4a7b342015-03-25 18:57:36 -04001574 if compile_prog "-Werror -fno-pie" "-nopie"; then
Brad46eef332013-12-10 19:49:08 -05001575 CFLAGS_NOPIE="-fno-pie"
1576 LDFLAGS_NOPIE="-nopie"
1577 fi
Avi Kivity40d64442011-11-15 20:12:17 +02001578fi
1579
Don Slutz66518bf2014-01-02 21:12:46 -05001580# check for broken gcc and libtool in RHEL5
1581if test -n "$libtool" -a "$pie" != "no" ; then
1582 cat > $TMPC <<EOF
1583
1584void *f(unsigned char *buf, int len);
1585void *g(unsigned char *buf, int len);
1586
1587void *
1588f(unsigned char *buf, int len)
1589{
1590 return (void*)0L;
1591}
1592
1593void *
1594g(unsigned char *buf, int len)
1595{
1596 return f(buf, len);
1597}
1598
1599EOF
1600 if ! libtool_prog; then
1601 echo "Disabling libtool due to broken toolchain support"
1602 libtool=
1603 fi
1604fi
1605
Paolo Bonzini09dada42013-04-17 16:26:47 +02001606##########################################
1607# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1608# use i686 as default anyway, but for those that don't, an explicit
1609# specification is necessary
1610
1611if test "$cpu" = "i386"; then
1612 cat > $TMPC << EOF
1613static int sfaa(int *ptr)
1614{
1615 return __sync_fetch_and_and(ptr, 0);
1616}
1617
1618int main(void)
1619{
1620 int val = 42;
Stefan Weil1405b622013-05-11 21:46:58 +02001621 val = __sync_val_compare_and_swap(&val, 0, 1);
Paolo Bonzini09dada42013-04-17 16:26:47 +02001622 sfaa(&val);
1623 return val;
1624}
1625EOF
1626 if ! compile_prog "" "" ; then
1627 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1628 fi
1629fi
1630
1631#########################################
bellardec530c82006-04-25 22:36:06 +00001632# Solaris specific configure tool chain decisions
Paolo Bonzini09dada42013-04-17 16:26:47 +02001633
bellardec530c82006-04-25 22:36:06 +00001634if test "$solaris" = "yes" ; then
Loïc Minier6792aa12010-01-20 11:35:54 +01001635 if has $install; then
1636 :
1637 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001638 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1639 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1640 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
bellardec530c82006-04-25 22:36:06 +00001641 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001642 if test "`path_of $install`" = "/usr/sbin/install" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001643 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1644 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1645 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
bellardec530c82006-04-25 22:36:06 +00001646 fi
Loïc Minier6792aa12010-01-20 11:35:54 +01001647 if has ar; then
1648 :
1649 else
bellardec530c82006-04-25 22:36:06 +00001650 if test -f /usr/ccs/bin/ar ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001651 error_exit "No path includes ar" \
1652 "Add /usr/ccs/bin to your path and rerun configure"
bellardec530c82006-04-25 22:36:06 +00001653 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01001654 error_exit "No path includes ar"
bellardec530c82006-04-25 22:36:06 +00001655 fi
ths5fafdf22007-09-16 21:08:06 +00001656fi
bellardec530c82006-04-25 22:36:06 +00001657
Stefan Weilafb63eb2012-09-26 22:04:38 +02001658if test -z "${target_list+xxx}" ; then
Anthony Liguori121afa92012-09-14 08:17:03 -05001659 target_list="$default_target_list"
1660else
1661 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +00001662fi
Peter Maydell25b48332013-05-20 16:16:16 +01001663
1664# Check that we recognised the target name; this allows a more
1665# friendly error message than if we let it fall through.
1666for target in $target_list; do
1667 case " $default_target_list " in
1668 *" $target "*)
1669 ;;
1670 *)
1671 error_exit "Unknown target name '$target'"
1672 ;;
1673 esac
1674done
1675
Paolo Bonzinif55fe272010-05-26 16:08:17 +02001676# see if system emulation was really requested
1677case " $target_list " in
1678 *"-softmmu "*) softmmu=yes
1679 ;;
1680 *) softmmu=no
1681 ;;
1682esac
bellard5327cf42005-01-10 23:18:50 +00001683
Juan Quintela249247c2009-08-12 18:20:25 +02001684feature_not_found() {
1685 feature=$1
Stewart Smith21684af2014-01-24 12:39:10 +11001686 remedy=$2
Juan Quintela249247c2009-08-12 18:20:25 +02001687
Peter Maydell76ad07a2013-04-08 12:11:26 +01001688 error_exit "User requested feature $feature" \
Stewart Smith21684af2014-01-24 12:39:10 +11001689 "configure was not able to find it." \
1690 "$remedy"
Juan Quintela249247c2009-08-12 18:20:25 +02001691}
1692
bellard7d132992003-03-06 23:23:54 +00001693# ---
1694# big/little endian test
1695cat > $TMPC << EOF
Mike Frysinger61cc9192013-06-30 23:30:18 -04001696short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1697short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1698extern int foo(short *, short *);
1699int main(int argc, char *argv[]) {
1700 return foo(big_endian, little_endian);
bellard7d132992003-03-06 23:23:54 +00001701}
1702EOF
1703
Mike Frysinger61cc9192013-06-30 23:30:18 -04001704if compile_object ; then
1705 if grep -q BiGeNdIaN $TMPO ; then
1706 bigendian="yes"
1707 elif grep -q LiTtLeEnDiAn $TMPO ; then
1708 bigendian="no"
1709 else
1710 echo big/little test failed
Peter Maydell21d89f82011-11-30 10:57:48 +01001711 fi
Mike Frysinger61cc9192013-06-30 23:30:18 -04001712else
1713 echo big/little test failed
bellard7d132992003-03-06 23:23:54 +00001714fi
1715
Juan Quintelab0a47e72009-08-12 18:29:49 +02001716##########################################
Peter Maydella30878e2015-08-14 16:10:52 +01001717# cocoa implies not SDL or GTK
1718# (the cocoa UI code currently assumes it is always the active UI
1719# and doesn't interact well with other UI frontend code)
1720if test "$cocoa" = "yes"; then
1721 if test "$sdl" = "yes"; then
1722 error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1723 fi
1724 if test "$gtk" = "yes"; then
1725 error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1726 fi
1727 gtk=no
1728 sdl=no
1729fi
1730
1731##########################################
Gonglei015a33b2014-07-01 20:58:08 +08001732# L2TPV3 probe
1733
1734cat > $TMPC <<EOF
1735#include <sys/socket.h>
Michael Tokarevbff6cb72014-08-01 23:20:24 +04001736#include <linux/ip.h>
Gonglei015a33b2014-07-01 20:58:08 +08001737int main(void) { return sizeof(struct mmsghdr); }
1738EOF
1739if compile_prog "" "" ; then
1740 l2tpv3=yes
1741else
1742 l2tpv3=no
1743fi
1744
1745##########################################
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01001746# MinGW / Mingw-w64 localtime_r/gmtime_r check
1747
1748if test "$mingw32" = "yes"; then
1749 # Some versions of MinGW / Mingw-w64 lack localtime_r
1750 # and gmtime_r entirely.
1751 #
1752 # Some versions of Mingw-w64 define a macro for
1753 # localtime_r/gmtime_r.
1754 #
1755 # Some versions of Mingw-w64 will define functions
1756 # for localtime_r/gmtime_r, but only if you have
1757 # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1758 # though, unistd.h and pthread.h both define
1759 # that for you.
1760 #
1761 # So this #undef localtime_r and #include <unistd.h>
1762 # are not in fact redundant.
1763cat > $TMPC << EOF
1764#include <unistd.h>
1765#include <time.h>
1766#undef localtime_r
1767int main(void) { localtime_r(NULL, NULL); return 0; }
1768EOF
1769 if compile_prog "" "" ; then
1770 localtime_r="yes"
1771 else
1772 localtime_r="no"
1773 fi
1774fi
1775
1776##########################################
Stefan Weil779ab5e2012-12-16 11:29:45 +01001777# pkg-config probe
1778
1779if ! has "$pkg_config_exe"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01001780 error_exit "pkg-config binary '$pkg_config_exe' not found"
Stefan Weil779ab5e2012-12-16 11:29:45 +01001781fi
1782
1783##########################################
Juan Quintelab0a47e72009-08-12 18:29:49 +02001784# NPTL probe
1785
Peter Maydell24cb36a2013-07-16 18:45:00 +01001786if test "$linux_user" = "yes"; then
Juan Quintelab0a47e72009-08-12 18:29:49 +02001787 cat > $TMPC <<EOF
pbrookbd0c5662008-05-29 14:34:11 +00001788#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +00001789#include <linux/futex.h>
Stefan Weil182eacc2011-12-17 09:27:30 +01001790int main(void) {
pbrookbd0c5662008-05-29 14:34:11 +00001791#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1792#error bork
1793#endif
Stefan Weil182eacc2011-12-17 09:27:30 +01001794 return 0;
pbrookbd0c5662008-05-29 14:34:11 +00001795}
1796EOF
Peter Maydell24cb36a2013-07-16 18:45:00 +01001797 if ! compile_object ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001798 feature_not_found "nptl" "Install glibc and linux kernel headers."
Juan Quintelab0a47e72009-08-12 18:29:49 +02001799 fi
pbrookbd0c5662008-05-29 14:34:11 +00001800fi
1801
bellard11d9f692004-04-02 20:55:59 +00001802##########################################
balrogac629222008-10-11 09:56:04 +00001803# zlib check
1804
Alon Levy1ece9902011-07-26 12:30:40 +03001805if test "$zlib" != "no" ; then
1806 cat > $TMPC << EOF
balrogac629222008-10-11 09:56:04 +00001807#include <zlib.h>
1808int main(void) { zlibVersion(); return 0; }
1809EOF
Alon Levy1ece9902011-07-26 12:30:40 +03001810 if compile_prog "" "-lz" ; then
1811 :
1812 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01001813 error_exit "zlib check failed" \
1814 "Make sure to have the zlib libs and headers installed."
Alon Levy1ece9902011-07-26 12:30:40 +03001815 fi
balrogac629222008-10-11 09:56:04 +00001816fi
Will Newtoneb0ecd52014-02-26 17:20:07 +00001817LIBS="$LIBS -lz"
balrogac629222008-10-11 09:56:04 +00001818
1819##########################################
qiaonuohan607dacd2014-02-18 14:11:30 +08001820# lzo check
1821
1822if test "$lzo" != "no" ; then
1823 cat > $TMPC << EOF
1824#include <lzo/lzo1x.h>
1825int main(void) { lzo_version(); return 0; }
1826EOF
1827 if compile_prog "" "-llzo2" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001828 libs_softmmu="$libs_softmmu -llzo2"
1829 lzo="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001830 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001831 if test "$lzo" = "yes"; then
1832 feature_not_found "liblzo2" "Install liblzo2 devel"
1833 fi
1834 lzo="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001835 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001836fi
1837
1838##########################################
1839# snappy check
1840
1841if test "$snappy" != "no" ; then
1842 cat > $TMPC << EOF
1843#include <snappy-c.h>
1844int main(void) { snappy_max_compressed_length(4096); return 0; }
1845EOF
1846 if compile_prog "" "-lsnappy" ; then
Stefan Weilb25c9df2014-04-29 08:21:16 +02001847 libs_softmmu="$libs_softmmu -lsnappy"
1848 snappy="yes"
qiaonuohan607dacd2014-02-18 14:11:30 +08001849 else
Stefan Weilb25c9df2014-04-29 08:21:16 +02001850 if test "$snappy" = "yes"; then
1851 feature_not_found "libsnappy" "Install libsnappy devel"
1852 fi
1853 snappy="no"
qiaonuohan607dacd2014-02-18 14:11:30 +08001854 fi
qiaonuohan607dacd2014-02-18 14:11:30 +08001855fi
1856
1857##########################################
Peter Wu6b383c02015-01-06 18:48:14 +01001858# bzip2 check
1859
1860if test "$bzip2" != "no" ; then
1861 cat > $TMPC << EOF
1862#include <bzlib.h>
1863int main(void) { BZ2_bzlibVersion(); return 0; }
1864EOF
1865 if compile_prog "" "-lbz2" ; then
1866 bzip2="yes"
1867 else
1868 if test "$bzip2" = "yes"; then
1869 feature_not_found "libbzip2" "Install libbzip2 devel"
1870 fi
1871 bzip2="no"
1872 fi
1873fi
1874
1875##########################################
Eduardo Otubof7945732012-08-14 18:44:05 -03001876# libseccomp check
1877
1878if test "$seccomp" != "no" ; then
Peter Maydellae6e8ef2015-04-10 13:58:01 +01001879 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1880 $pkg_config --atleast-version=2.1.1 libseccomp; then
Michael Tokarevb4451992013-01-19 18:58:09 +04001881 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
Andreas Färber372e47e2013-04-28 16:27:26 +02001882 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
Eduardo Otubof7945732012-08-14 18:44:05 -03001883 seccomp="yes"
1884 else
Eduardo Otubof7945732012-08-14 18:44:05 -03001885 if test "$seccomp" = "yes"; then
Eduardo Otubo896848f2015-03-26 16:56:25 +01001886 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
Eduardo Otubof7945732012-08-14 18:44:05 -03001887 fi
Yann E. MORINe84d5952012-09-06 22:40:30 +02001888 seccomp="no"
Eduardo Otubof7945732012-08-14 18:44:05 -03001889 fi
1890fi
1891##########################################
aliguorie37630c2009-04-22 15:19:10 +00001892# xen probe
1893
Juan Quintelafc321b42009-08-12 18:29:55 +02001894if test "$xen" != "no" ; then
Juan Quintelab2266be2009-07-27 16:13:16 +02001895 xen_libs="-lxenstore -lxenctrl -lxenguest"
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001896
Stefan Weil50ced5b2011-12-17 09:27:39 +01001897 # First we test whether Xen headers and libraries are available.
1898 # If no, we are done and there is no Xen support.
1899 # If yes, more tests are run to detect the Xen version.
1900
1901 # Xen (any)
Juan Quintelab2266be2009-07-27 16:13:16 +02001902 cat > $TMPC <<EOF
aliguorie37630c2009-04-22 15:19:10 +00001903#include <xenctrl.h>
Stefan Weil50ced5b2011-12-17 09:27:39 +01001904int main(void) {
1905 return 0;
1906}
1907EOF
1908 if ! compile_prog "" "$xen_libs" ; then
1909 # Xen not found
1910 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11001911 feature_not_found "xen" "Install xen devel"
Stefan Weil50ced5b2011-12-17 09:27:39 +01001912 fi
1913 xen=no
1914
1915 # Xen unstable
Peter Maydell69deef02012-08-02 18:30:26 +01001916 elif
1917 cat > $TMPC <<EOF &&
Stefan Weil50ced5b2011-12-17 09:27:39 +01001918#include <xenctrl.h>
Anthony PERARDe108a3c2012-06-21 11:44:35 +00001919#include <xenstore.h>
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00001920#include <stdint.h>
1921#include <xen/hvm/hvm_info_table.h>
1922#if !defined(HVM_MAX_VCPUS)
1923# error HVM_MAX_VCPUS not defined
1924#endif
1925int main(void) {
1926 xc_interface *xc;
1927 xs_daemon_open();
1928 xc = xc_interface_open(0, 0, 0);
1929 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1930 xc_gnttab_open(NULL, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01001931 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001932 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001933 xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
Konrad Rzeszutek Wilk20a544c2015-06-29 12:51:05 -04001934 xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
Jan Beulichd8b441a2015-07-24 03:38:28 -06001935 return 0;
1936}
1937EOF
1938 compile_prog "" "$xen_libs"
1939 then
1940 xen_ctrl_version=460
1941 xen=yes
1942
1943 # Xen 4.5
1944 elif
1945 cat > $TMPC <<EOF &&
1946#include <xenctrl.h>
1947#include <xenstore.h>
1948#include <stdint.h>
1949#include <xen/hvm/hvm_info_table.h>
1950#if !defined(HVM_MAX_VCPUS)
1951# error HVM_MAX_VCPUS not defined
1952#endif
1953int main(void) {
1954 xc_interface *xc;
1955 xs_daemon_open();
1956 xc = xc_interface_open(0, 0, 0);
1957 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1958 xc_gnttab_open(NULL, 0);
1959 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1960 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Paul Durrant3996e852015-01-20 11:06:19 +00001961 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1962 return 0;
1963}
1964EOF
1965 compile_prog "" "$xen_libs"
1966 then
1967 xen_ctrl_version=450
1968 xen=yes
1969
1970 elif
1971 cat > $TMPC <<EOF &&
1972#include <xenctrl.h>
1973#include <xenstore.h>
1974#include <stdint.h>
1975#include <xen/hvm/hvm_info_table.h>
1976#if !defined(HVM_MAX_VCPUS)
1977# error HVM_MAX_VCPUS not defined
1978#endif
1979int main(void) {
1980 xc_interface *xc;
1981 xs_daemon_open();
1982 xc = xc_interface_open(0, 0, 0);
1983 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1984 xc_gnttab_open(NULL, 0);
1985 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1986 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
Stefano Stabellini8688e062012-04-17 17:04:18 +00001987 return 0;
1988}
1989EOF
1990 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01001991 then
Stefano Stabellini8688e062012-04-17 17:04:18 +00001992 xen_ctrl_version=420
1993 xen=yes
1994
Peter Maydell69deef02012-08-02 18:30:26 +01001995 elif
1996 cat > $TMPC <<EOF &&
Stefano Stabellini8688e062012-04-17 17:04:18 +00001997#include <xenctrl.h>
1998#include <xs.h>
1999#include <stdint.h>
2000#include <xen/hvm/hvm_info_table.h>
2001#if !defined(HVM_MAX_VCPUS)
2002# error HVM_MAX_VCPUS not defined
2003#endif
2004int main(void) {
Stefano Stabellini8688e062012-04-17 17:04:18 +00002005 xs_daemon_open();
Peter Maydell9b4c0b52012-08-02 18:30:27 +01002006 xc_interface_open(0, 0, 0);
Stefano Stabellini8688e062012-04-17 17:04:18 +00002007 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2008 xc_gnttab_open(NULL, 0);
2009 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002010 return 0;
2011}
aliguorie37630c2009-04-22 15:19:10 +00002012EOF
Stefan Weil50ced5b2011-12-17 09:27:39 +01002013 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002014 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002015 xen_ctrl_version=410
Juan Quintelafc321b42009-08-12 18:29:55 +02002016 xen=yes
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002017
2018 # Xen 4.0.0
Peter Maydell69deef02012-08-02 18:30:26 +01002019 elif
2020 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002021#include <xenctrl.h>
2022#include <xs.h>
2023#include <stdint.h>
2024#include <xen/hvm/hvm_info_table.h>
2025#if !defined(HVM_MAX_VCPUS)
2026# error HVM_MAX_VCPUS not defined
2027#endif
2028int main(void) {
Anthony PERARDb87de242011-05-24 14:34:20 +01002029 struct xen_add_to_physmap xatp = {
2030 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2031 };
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002032 xs_daemon_open();
2033 xc_interface_open();
2034 xc_gnttab_open();
2035 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
Anthony PERARDb87de242011-05-24 14:34:20 +01002036 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002037 return 0;
2038}
2039EOF
2040 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002041 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002042 xen_ctrl_version=400
2043 xen=yes
2044
Anthony PERARDb87de242011-05-24 14:34:20 +01002045 # Xen 3.4.0
Peter Maydell69deef02012-08-02 18:30:26 +01002046 elif
2047 cat > $TMPC <<EOF &&
Anthony PERARDb87de242011-05-24 14:34:20 +01002048#include <xenctrl.h>
2049#include <xs.h>
2050int main(void) {
2051 struct xen_add_to_physmap xatp = {
2052 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
2053 };
2054 xs_daemon_open();
2055 xc_interface_open();
2056 xc_gnttab_open();
2057 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2058 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
2059 return 0;
2060}
2061EOF
2062 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002063 then
Anthony PERARDb87de242011-05-24 14:34:20 +01002064 xen_ctrl_version=340
2065 xen=yes
2066
2067 # Xen 3.3.0
Peter Maydell69deef02012-08-02 18:30:26 +01002068 elif
2069 cat > $TMPC <<EOF &&
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002070#include <xenctrl.h>
2071#include <xs.h>
2072int main(void) {
2073 xs_daemon_open();
2074 xc_interface_open();
2075 xc_gnttab_open();
2076 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2077 return 0;
2078}
2079EOF
2080 compile_prog "" "$xen_libs"
Peter Maydell69deef02012-08-02 18:30:26 +01002081 then
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002082 xen_ctrl_version=330
2083 xen=yes
2084
Stefan Weil50ced5b2011-12-17 09:27:39 +01002085 # Xen version unsupported
Juan Quintelab2266be2009-07-27 16:13:16 +02002086 else
Juan Quintelafc321b42009-08-12 18:29:55 +02002087 if test "$xen" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002088 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
Juan Quintelafc321b42009-08-12 18:29:55 +02002089 fi
2090 xen=no
Juan Quintelab2266be2009-07-27 16:13:16 +02002091 fi
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00002092
2093 if test "$xen" = yes; then
2094 libs_softmmu="$xen_libs $libs_softmmu"
2095 fi
aliguorie37630c2009-04-22 15:19:10 +00002096fi
2097
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002098if test "$xen_pci_passthrough" != "no"; then
2099 if test "$xen" = "yes" && test "$linux" = "yes" &&
2100 test "$xen_ctrl_version" -ge 340; then
2101 xen_pci_passthrough=yes
2102 else
2103 if test "$xen_pci_passthrough" = "yes"; then
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002104 if test "$xen_ctrl_version" -lt 340; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002105 error_exit "User requested feature Xen PCI Passthrough" \
2106 "This feature does not work with Xen 3.3"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002107 fi
Peter Maydell76ad07a2013-04-08 12:11:26 +01002108 error_exit "User requested feature Xen PCI Passthrough" \
2109 " but this feature requires /sys from Linux"
Anthony PERARDeb6fda02012-06-21 15:32:59 +00002110 fi
2111 xen_pci_passthrough=no
2112 fi
2113fi
2114
aliguorie37630c2009-04-22 15:19:10 +00002115##########################################
Alon Levy44dc0ca2011-05-15 11:51:28 +03002116# libtool probe
2117
Brad3f534582011-08-13 20:30:14 -04002118if ! has $libtool; then
Alon Levy44dc0ca2011-05-15 11:51:28 +03002119 libtool=
Alon Levy44dc0ca2011-05-15 11:51:28 +03002120fi
2121
Peter Maydell8e515b12013-05-04 21:57:51 +01002122# MacOSX ships with a libtool which isn't the GNU one; weed this
2123# out by checking whether libtool supports the --version switch
2124if test -n "$libtool"; then
2125 if ! "$libtool" --version >/dev/null 2>&1; then
2126 libtool=
2127 fi
2128fi
2129
Alon Levy44dc0ca2011-05-15 11:51:28 +03002130##########################################
Juan Quinteladfffc652009-08-12 18:29:57 +02002131# Sparse probe
2132if test "$sparse" != "no" ; then
Loïc Minier0dba6192010-01-28 21:26:51 +00002133 if has cgcc; then
Juan Quinteladfffc652009-08-12 18:29:57 +02002134 sparse=yes
2135 else
2136 if test "$sparse" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002137 feature_not_found "sparse" "Install sparse binary"
Juan Quinteladfffc652009-08-12 18:29:57 +02002138 fi
2139 sparse=no
2140 fi
2141fi
2142
2143##########################################
Jeremy Whitef676c672015-01-09 13:08:49 -06002144# X11 probe
2145x11_cflags=
2146x11_libs=-lX11
2147if $pkg_config --exists "x11"; then
2148 x11_cflags=`$pkg_config --cflags x11`
2149 x11_libs=`$pkg_config --libs x11`
2150fi
2151
2152##########################################
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002153# GTK probe
2154
Stefan Weil9e04c682014-05-17 16:29:18 +02002155if test "$gtkabi" = ""; then
2156 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2157 # Use 3.0 as a fallback if that is available.
2158 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2159 gtkabi=2.0
2160 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2161 gtkabi=3.0
2162 else
2163 gtkabi=2.0
2164 fi
2165fi
2166
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002167if test "$gtk" != "no"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002168 gtkpackage="gtk+-$gtkabi"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002169 gtkx11package="gtk+-x11-$gtkabi"
Daniel P. Berrange528de902013-02-25 15:20:44 +00002170 if test "$gtkabi" = "3.0" ; then
2171 gtkversion="3.0.0"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002172 else
2173 gtkversion="2.18.0"
2174 fi
2175 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2176 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2177 gtk_libs=`$pkg_config --libs $gtkpackage`
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002178 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06002179 gtk_cflags="$gtk_cflags $x11_cflags"
2180 gtk_libs="$gtk_libs $x11_libs"
Gerd Hoffmann0a337ed2014-05-28 22:33:06 +02002181 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002182 libs_softmmu="$gtk_libs $libs_softmmu"
2183 gtk="yes"
2184 elif test "$gtk" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002185 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002186 else
2187 gtk="no"
2188 fi
2189fi
2190
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002191
2192##########################################
2193# GNUTLS probe
2194
Peter Maydell37371292015-07-24 18:28:08 +01002195gnutls_works() {
2196 # Unfortunately some distros have bad pkg-config information for gnutls
2197 # such that it claims to exist but you get a compiler error if you try
2198 # to use the options returned by --libs. Specifically, Ubuntu for --static
2199 # builds doesn't work:
2200 # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2201 #
2202 # So sanity check the cflags/libs before assuming gnutls can be used.
2203 if ! $pkg_config --exists "gnutls"; then
2204 return 1
2205 fi
2206
2207 write_c_skeleton
2208 compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2209}
2210
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002211gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002212gnutls_nettle=no
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002213if test "$gnutls" != "no"; then
Peter Maydell37371292015-07-24 18:28:08 +01002214 if gnutls_works; then
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002215 gnutls_cflags=`$pkg_config --cflags gnutls`
2216 gnutls_libs=`$pkg_config --libs gnutls`
2217 libs_softmmu="$gnutls_libs $libs_softmmu"
2218 libs_tools="$gnutls_libs $libs_tools"
2219 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2220 gnutls="yes"
2221
2222 # gnutls_hash_init requires >= 2.9.10
2223 if $pkg_config --exists "gnutls >= 2.9.10"; then
2224 gnutls_hash="yes"
2225 else
2226 gnutls_hash="no"
2227 fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002228
2229 if $pkg_config --exists 'gnutls >= 3.0'; then
2230 gnutls_gcrypt=no
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002231 gnutls_nettle=yes
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002232 elif $pkg_config --exists 'gnutls >= 2.12'; then
2233 case `$pkg_config --libs --static gnutls` in
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002234 *gcrypt*)
2235 gnutls_gcrypt=yes
2236 gnutls_nettle=no
2237 ;;
2238 *nettle*)
2239 gnutls_gcrypt=no
2240 gnutls_nettle=yes
2241 ;;
2242 *)
2243 gnutls_gcrypt=yes
2244 gnutls_nettle=no
2245 ;;
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002246 esac
2247 else
2248 gnutls_gcrypt=yes
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002249 gnutls_nettle=no
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002250 fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002251 elif test "$gnutls" = "yes"; then
2252 feature_not_found "gnutls" "Install gnutls devel"
2253 else
2254 gnutls="no"
2255 gnutls_hash="no"
2256 fi
2257else
2258 gnutls_hash="no"
2259fi
2260
Daniel P. Berrange62893b62015-07-01 18:10:33 +01002261if test "$gnutls_gcrypt" != "no"; then
2262 if has "libgcrypt-config"; then
2263 gcrypt_cflags=`libgcrypt-config --cflags`
2264 gcrypt_libs=`libgcrypt-config --libs`
2265 libs_softmmu="$gcrypt_libs $libs_softmmu"
2266 libs_tools="$gcrypt_libs $libs_tools"
2267 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2268 else
2269 feature_not_found "gcrypt" "Install gcrypt devel"
2270 fi
2271fi
2272
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01002273
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002274if test "$gnutls_nettle" != "no"; then
2275 if $pkg_config --exists "nettle"; then
2276 nettle_cflags=`$pkg_config --cflags nettle`
2277 nettle_libs=`$pkg_config --libs nettle`
Radim Krčmářbecaeb72015-07-10 19:18:00 +02002278 nettle_version=`$pkg_config --modversion nettle`
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002279 libs_softmmu="$nettle_libs $libs_softmmu"
2280 libs_tools="$nettle_libs $libs_tools"
2281 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2282 else
2283 feature_not_found "nettle" "Install nettle devel"
2284 fi
2285fi
2286
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01002287##########################################
2288# libtasn1 - only for the TLS creds/session test suite
2289
2290tasn1=yes
2291if $pkg_config --exists "libtasn1"; then
2292 tasn1_cflags=`$pkg_config --cflags libtasn1`
2293 tasn1_libs=`$pkg_config --libs libtasn1`
2294 test_cflags="$test_cflags $tasn1_cflags"
2295 test_libs="$test_libs $tasn1_libs"
2296else
2297 tasn1=no
2298fi
2299
Daniel P. Berrangeed754742015-07-01 18:10:34 +01002300
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002301##########################################
2302# VTE probe
2303
2304if test "$vte" != "no"; then
2305 if test "$gtkabi" = "3.0"; then
Daniel P. Berrange528de902013-02-25 15:20:44 +00002306 vtepackage="vte-2.90"
2307 vteversion="0.32.0"
2308 else
Daniel P. Berrange528de902013-02-25 15:20:44 +00002309 vtepackage="vte"
2310 vteversion="0.24.0"
2311 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002312 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2313 vte_cflags=`$pkg_config --cflags $vtepackage`
2314 vte_libs=`$pkg_config --libs $vtepackage`
2315 libs_softmmu="$vte_libs $libs_softmmu"
2316 vte="yes"
2317 elif test "$vte" = "yes"; then
Stefan Weil9e04c682014-05-17 16:29:18 +02002318 if test "$gtkabi" = "3.0"; then
2319 feature_not_found "vte" "Install libvte-2.90 devel"
2320 else
2321 feature_not_found "vte" "Install libvte devel"
2322 fi
Peter Maydell0d185e62013-07-18 16:42:01 +01002323 else
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01002324 vte="no"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06002325 fi
2326fi
2327
2328##########################################
bellard11d9f692004-04-02 20:55:59 +00002329# SDL probe
2330
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002331# Look for sdl configuration program (pkg-config or sdl-config). Try
2332# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
Dave Airlie47c03742013-12-10 14:05:51 +10002333
2334if test $sdlabi = "2.0"; then
2335 sdl_config=$sdl2_config
2336 sdlname=sdl2
2337 sdlconfigname=sdl2_config
2338else
2339 sdlname=sdl
2340 sdlconfigname=sdl_config
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002341fi
2342
Dave Airlie47c03742013-12-10 14:05:51 +10002343if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2344 sdl_config=$sdlconfigname
2345fi
2346
2347if $pkg_config $sdlname --exists; then
2348 sdlconfig="$pkg_config $sdlname"
Stefan Weilfec0e3e2010-04-11 18:44:18 +02002349 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002350elif has ${sdl_config}; then
2351 sdlconfig="$sdl_config"
Paolo Bonzini9316f802010-01-13 09:52:55 +01002352 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002353else
2354 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002355 feature_not_found "sdl" "Install SDL devel"
Loïc Miniera0dfd8a2010-01-28 21:15:18 +00002356 fi
2357 sdl=no
Paolo Bonzini9316f802010-01-13 09:52:55 +01002358fi
Scott Wood29e5bad2011-04-08 14:15:50 -05002359if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
Paolo Bonzini3ec87ff2010-12-23 11:43:57 +01002360 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2361fi
bellard11d9f692004-04-02 20:55:59 +00002362
Paolo Bonzini9316f802010-01-13 09:52:55 +01002363sdl_too_old=no
Juan Quintelac4198152009-08-12 18:29:53 +02002364if test "$sdl" != "no" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002365 cat > $TMPC << EOF
bellard11d9f692004-04-02 20:55:59 +00002366#include <SDL.h>
2367#undef main /* We don't want SDL to override our main() */
2368int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2369EOF
Paolo Bonzini9316f802010-01-13 09:52:55 +01002370 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
TeLeMan74f42e12010-02-08 13:56:44 +08002371 if test "$static" = "yes" ; then
2372 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2373 else
2374 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2375 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002376 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002377 if test "$_sdlversion" -lt 121 ; then
2378 sdl_too_old=yes
2379 else
Peter Maydella30878e2015-08-14 16:10:52 +01002380 sdl=yes
Juan Quintelaac119f92009-07-27 16:13:15 +02002381 fi
aliguoricd01b4a2008-08-21 19:25:45 +00002382
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002383 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
Juan Quintelaac119f92009-07-27 16:13:15 +02002384 if test "$sdl" = "yes" -a "$static" = "yes" ; then
Paolo Bonzini67c274d2010-01-13 09:52:54 +01002385 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
Stefan Weilf8aa6c72010-03-01 22:10:46 +01002386 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2387 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
Juan Quintelaac119f92009-07-27 16:13:15 +02002388 fi
Juan Quintela52166aa2009-08-03 14:46:03 +02002389 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002390 :
2391 else
2392 sdl=no
2393 fi
2394 fi # static link
Juan Quintelac4198152009-08-12 18:29:53 +02002395 else # sdl not found
2396 if test "$sdl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002397 feature_not_found "sdl" "Install SDL devel"
Juan Quintelac4198152009-08-12 18:29:53 +02002398 fi
2399 sdl=no
Juan Quintelaac119f92009-07-27 16:13:15 +02002400 fi # sdl compile test
Juan Quintelaa68551b2009-07-27 16:13:09 +02002401fi
bellard11d9f692004-04-02 20:55:59 +00002402
aliguori5368a422009-03-03 17:37:21 +00002403if test "$sdl" = "yes" ; then
Juan Quintelaac119f92009-07-27 16:13:15 +02002404 cat > $TMPC <<EOF
aliguori5368a422009-03-03 17:37:21 +00002405#include <SDL.h>
2406#if defined(SDL_VIDEO_DRIVER_X11)
2407#include <X11/XKBlib.h>
2408#else
2409#error No x11 support
2410#endif
2411int main(void) { return 0; }
2412EOF
Jeremy Whitef676c672015-01-09 13:08:49 -06002413 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2414 sdl_cflags="$sdl_cflags $x11_cflags"
2415 sdl_libs="$sdl_libs $x11_libs"
Juan Quintelaac119f92009-07-27 16:13:15 +02002416 fi
Juan Quintela07056672009-08-03 14:46:27 +02002417 libs_softmmu="$sdl_libs $libs_softmmu"
aliguori5368a422009-03-03 17:37:21 +00002418fi
2419
ths8f28f3f2007-01-05 21:25:54 +00002420##########################################
Michael R. Hines2da776d2013-07-22 10:01:54 -04002421# RDMA needs OpenFabrics libraries
2422if test "$rdma" != "no" ; then
2423 cat > $TMPC <<EOF
2424#include <rdma/rdma_cma.h>
2425int main(void) { return 0; }
2426EOF
2427 rdma_libs="-lrdmacm -libverbs"
2428 if compile_prog "" "$rdma_libs" ; then
2429 rdma="yes"
2430 libs_softmmu="$libs_softmmu $rdma_libs"
2431 else
2432 if test "$rdma" = "yes" ; then
2433 error_exit \
2434 " OpenFabrics librdmacm/libibverbs not present." \
2435 " Your options:" \
2436 " (1) Fast: Install infiniband packages from your distro." \
2437 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2438 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2439 fi
2440 rdma="no"
2441 fi
2442fi
2443
ths8d5d2d42007-08-25 01:37:51 +00002444
2445##########################################
aliguori2f9606b2009-03-06 20:27:28 +00002446# VNC SASL detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002447if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
Juan Quintelaea784e32009-08-12 18:20:29 +02002448 cat > $TMPC <<EOF
aliguori2f9606b2009-03-06 20:27:28 +00002449#include <sasl/sasl.h>
2450#include <stdio.h>
2451int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2452EOF
Juan Quintelaea784e32009-08-12 18:20:29 +02002453 # Assuming Cyrus-SASL installed in /usr prefix
2454 vnc_sasl_cflags=""
2455 vnc_sasl_libs="-lsasl2"
2456 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2457 vnc_sasl=yes
2458 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002459 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
Juan Quintelaea784e32009-08-12 18:20:29 +02002460 else
2461 if test "$vnc_sasl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002462 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
aliguori2f9606b2009-03-06 20:27:28 +00002463 fi
Juan Quintelaea784e32009-08-12 18:20:29 +02002464 vnc_sasl=no
2465 fi
aliguori2f9606b2009-03-06 20:27:28 +00002466fi
2467
2468##########################################
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002469# VNC JPEG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002470if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002471cat > $TMPC <<EOF
2472#include <stdio.h>
2473#include <jpeglib.h>
2474int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2475EOF
2476 vnc_jpeg_cflags=""
2477 vnc_jpeg_libs="-ljpeg"
2478 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2479 vnc_jpeg=yes
2480 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
Paolo Bonzinica273d52012-12-20 12:29:19 +01002481 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002482 else
2483 if test "$vnc_jpeg" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002484 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
Corentin Chary2f6f5c72010-07-07 20:57:49 +02002485 fi
2486 vnc_jpeg=no
2487 fi
2488fi
2489
2490##########################################
Corentin Charyefe556a2010-07-07 20:57:56 +02002491# VNC PNG detection
Jes Sorensen821601e2011-03-16 13:33:36 +01002492if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02002493cat > $TMPC <<EOF
2494//#include <stdio.h>
2495#include <png.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002496#include <stddef.h>
Corentin Charyefe556a2010-07-07 20:57:56 +02002497int main(void) {
2498 png_structp png_ptr;
2499 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
Peter Maydell7edc3fe2012-07-18 15:10:24 +01002500 return png_ptr != 0;
Corentin Charyefe556a2010-07-07 20:57:56 +02002501}
2502EOF
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002503 if $pkg_config libpng --exists; then
Stefan Weilca871ec2013-08-27 21:09:12 +02002504 vnc_png_cflags=`$pkg_config libpng --cflags`
2505 vnc_png_libs=`$pkg_config libpng --libs`
Brad9af80252011-07-30 01:45:55 -04002506 else
Corentin Charyefe556a2010-07-07 20:57:56 +02002507 vnc_png_cflags=""
2508 vnc_png_libs="-lpng"
Brad9af80252011-07-30 01:45:55 -04002509 fi
Corentin Charyefe556a2010-07-07 20:57:56 +02002510 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2511 vnc_png=yes
2512 libs_softmmu="$vnc_png_libs $libs_softmmu"
Brad9af80252011-07-30 01:45:55 -04002513 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
Corentin Charyefe556a2010-07-07 20:57:56 +02002514 else
2515 if test "$vnc_png" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002516 feature_not_found "vnc-png" "Install libpng devel"
Corentin Charyefe556a2010-07-07 20:57:56 +02002517 fi
2518 vnc_png=no
2519 fi
2520fi
2521
2522##########################################
aliguori76655d62009-03-06 20:27:37 +00002523# fnmatch() probe, used for ACL routines
2524fnmatch="no"
2525cat > $TMPC << EOF
2526#include <fnmatch.h>
2527int main(void)
2528{
2529 fnmatch("foo", "foo", 0);
2530 return 0;
2531}
2532EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002533if compile_prog "" "" ; then
aliguori76655d62009-03-06 20:27:37 +00002534 fnmatch="yes"
2535fi
2536
2537##########################################
Stefan Weilee682d22009-10-01 20:10:37 +02002538# uuid_generate() probe, used for vdi block driver
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002539# Note that on some systems (notably MacOSX) no extra library
2540# need be linked to get the uuid functions.
Stefan Weilee682d22009-10-01 20:10:37 +02002541if test "$uuid" != "no" ; then
2542 uuid_libs="-luuid"
2543 cat > $TMPC << EOF
2544#include <uuid/uuid.h>
2545int main(void)
2546{
2547 uuid_t my_uuid;
2548 uuid_generate(my_uuid);
2549 return 0;
2550}
2551EOF
Peter Maydell2d16c8e2013-05-14 21:36:39 +01002552 if compile_prog "" "" ; then
2553 uuid="yes"
2554 elif compile_prog "" "$uuid_libs" ; then
Stefan Weilee682d22009-10-01 20:10:37 +02002555 uuid="yes"
2556 libs_softmmu="$uuid_libs $libs_softmmu"
2557 libs_tools="$uuid_libs $libs_tools"
2558 else
2559 if test "$uuid" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002560 feature_not_found "uuid" "Install libuuid devel"
Stefan Weilee682d22009-10-01 20:10:37 +02002561 fi
2562 uuid=no
2563 fi
2564fi
2565
Jeff Cody4f18b782013-10-30 10:44:39 -04002566if test "$vhdx" = "yes" ; then
2567 if test "$uuid" = "no" ; then
2568 error_exit "uuid required for VHDX support"
2569 fi
2570elif test "$vhdx" != "no" ; then
2571 if test "$uuid" = "yes" ; then
2572 vhdx=yes
2573 else
2574 vhdx=no
2575 fi
2576fi
2577
Stefan Weilee682d22009-10-01 20:10:37 +02002578##########################################
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002579# xfsctl() probe, used for raw-posix
2580if test "$xfs" != "no" ; then
2581 cat > $TMPC << EOF
Stefan Weilffc41d12011-12-17 09:27:36 +01002582#include <stddef.h> /* NULL */
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002583#include <xfs/xfs.h>
2584int main(void)
2585{
2586 xfsctl(NULL, 0, 0, NULL);
2587 return 0;
2588}
2589EOF
2590 if compile_prog "" "" ; then
2591 xfs="yes"
2592 else
2593 if test "$xfs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002594 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01002595 fi
2596 xfs=no
2597 fi
2598fi
2599
2600##########################################
ths8a16d272008-07-19 09:56:24 +00002601# vde libraries probe
Juan Quinteladfb278b2009-08-12 18:20:27 +02002602if test "$vde" != "no" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002603 vde_libs="-lvdeplug"
ths8a16d272008-07-19 09:56:24 +00002604 cat > $TMPC << EOF
2605#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +00002606int main(void)
2607{
2608 struct vde_open_args a = {0, 0, 0};
Peter Maydellfea08e02012-07-18 15:10:25 +01002609 char s[] = "";
2610 vde_open(s, s, &a);
pbrook4a7f0e02008-09-07 16:42:53 +00002611 return 0;
2612}
ths8a16d272008-07-19 09:56:24 +00002613EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002614 if compile_prog "" "$vde_libs" ; then
Juan Quintela4baae0a2009-07-27 16:13:19 +02002615 vde=yes
Juan Quintela8e02e542009-08-03 14:47:07 +02002616 libs_softmmu="$vde_libs $libs_softmmu"
2617 libs_tools="$vde_libs $libs_tools"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002618 else
2619 if test "$vde" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002620 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
Juan Quinteladfb278b2009-08-12 18:20:27 +02002621 fi
2622 vde=no
Juan Quintela4baae0a2009-07-27 16:13:19 +02002623 fi
ths8a16d272008-07-19 09:56:24 +00002624fi
2625
2626##########################################
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002627# netmap support probe
2628# Apart from looking for netmap headers, we make sure that the host API version
2629# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2630# a minor/major version number. Minor new features will be marked with values up
2631# to 15, and if something happens that requires a change to the backend we will
2632# move above 15, submit the backend fixes and modify this two bounds.
Vincenzo Maffione58952132013-11-06 11:44:06 +01002633if test "$netmap" != "no" ; then
2634 cat > $TMPC << EOF
2635#include <inttypes.h>
2636#include <net/if.h>
2637#include <net/netmap.h>
2638#include <net/netmap_user.h>
Vincenzo Maffione0a985b32014-02-20 15:40:43 +01002639#if (NETMAP_API < 11) || (NETMAP_API > 15)
2640#error
2641#endif
Vincenzo Maffione58952132013-11-06 11:44:06 +01002642int main(void) { return 0; }
2643EOF
2644 if compile_prog "" "" ; then
2645 netmap=yes
2646 else
2647 if test "$netmap" = "yes" ; then
2648 feature_not_found "netmap"
2649 fi
2650 netmap=no
2651 fi
2652fi
2653
2654##########################################
Corey Bryant47e98652012-01-26 09:42:26 -05002655# libcap-ng library probe
2656if test "$cap_ng" != "no" ; then
2657 cap_libs="-lcap-ng"
2658 cat > $TMPC << EOF
2659#include <cap-ng.h>
2660int main(void)
2661{
2662 capng_capability_to_name(CAPNG_EFFECTIVE);
2663 return 0;
2664}
2665EOF
2666 if compile_prog "" "$cap_libs" ; then
2667 cap_ng=yes
2668 libs_tools="$cap_libs $libs_tools"
2669 else
2670 if test "$cap_ng" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002671 feature_not_found "cap_ng" "Install libcap-ng devel"
Corey Bryant47e98652012-01-26 09:42:26 -05002672 fi
2673 cap_ng=no
2674 fi
2675fi
2676
2677##########################################
malcc2de5c92008-06-28 19:13:06 +00002678# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +00002679
malcc2de5c92008-06-28 19:13:06 +00002680audio_drv_probe()
2681{
2682 drv=$1
2683 hdr=$2
2684 lib=$3
2685 exp=$4
2686 cfl=$5
2687 cat > $TMPC << EOF
2688#include <$hdr>
2689int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +00002690EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002691 if compile_prog "$cfl" "$lib" ; then
malcc2de5c92008-06-28 19:13:06 +00002692 :
2693 else
Peter Maydell76ad07a2013-04-08 12:11:26 +01002694 error_exit "$drv check failed" \
2695 "Make sure to have the $drv libs and headers installed."
malcc2de5c92008-06-28 19:13:06 +00002696 fi
2697}
2698
malc2fa7d3b2008-07-29 12:58:44 +00002699audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +00002700for drv in $audio_drv_list; do
2701 case $drv in
2702 alsa)
2703 audio_drv_probe $drv alsa/asoundlib.h -lasound \
Stefan Weile35bcb02012-07-18 15:10:19 +01002704 "return snd_pcm_close((snd_pcm_t *)0);"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002705 libs_softmmu="-lasound $libs_softmmu"
malcc2de5c92008-06-28 19:13:06 +00002706 ;;
2707
malcb8e59f12008-07-02 21:03:08 +00002708 pa)
Marc-André Lureaua394aed2012-04-17 14:32:42 +02002709 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2710 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2711 libs_softmmu="-lpulse $libs_softmmu"
Juan Quintela67f86e82009-08-03 14:46:59 +02002712 audio_pt_int="yes"
malcb8e59f12008-07-02 21:03:08 +00002713 ;;
2714
Juan Quintela997e6902009-08-03 14:46:29 +02002715 coreaudio)
2716 libs_softmmu="-framework CoreAudio $libs_softmmu"
2717 ;;
2718
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002719 dsound)
2720 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
malcd5631632009-10-10 01:13:41 +04002721 audio_win_int="yes"
Juan Quintelaa4bf6782009-08-03 14:46:30 +02002722 ;;
2723
2724 oss)
2725 libs_softmmu="$oss_lib $libs_softmmu"
2726 ;;
2727
2728 sdl|wav)
blueswir12f6a1ab2008-08-21 18:00:53 +00002729 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2730 ;;
2731
malce4c63a62008-07-19 16:15:16 +00002732 *)
malc1c9b2a52008-07-19 16:57:30 +00002733 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
Peter Maydell76ad07a2013-04-08 12:11:26 +01002734 error_exit "Unknown driver '$drv' selected" \
2735 "Possible drivers are: $audio_possible_drivers"
malce4c63a62008-07-19 16:15:16 +00002736 }
2737 ;;
malcc2de5c92008-06-28 19:13:06 +00002738 esac
2739done
ths8f28f3f2007-01-05 21:25:54 +00002740
balrog4d3b6f62008-02-10 16:33:14 +00002741##########################################
aurel322e4d9fb2008-04-08 06:01:02 +00002742# BrlAPI probe
2743
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002744if test "$brlapi" != "no" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002745 brlapi_libs="-lbrlapi"
2746 cat > $TMPC << EOF
aurel322e4d9fb2008-04-08 06:01:02 +00002747#include <brlapi.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05002748#include <stddef.h>
aurel322e4d9fb2008-04-08 06:01:02 +00002749int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2750EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02002751 if compile_prog "" "$brlapi_libs" ; then
Juan Quintelaeb822842009-07-27 16:13:18 +02002752 brlapi=yes
Juan Quintela264606b2009-08-03 14:46:39 +02002753 libs_softmmu="$brlapi_libs $libs_softmmu"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002754 else
2755 if test "$brlapi" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002756 feature_not_found "brlapi" "Install brlapi devel"
Juan Quintela4ffcedb2009-08-12 18:20:26 +02002757 fi
2758 brlapi=no
Juan Quintelaeb822842009-07-27 16:13:18 +02002759 fi
2760fi
aurel322e4d9fb2008-04-08 06:01:02 +00002761
2762##########################################
balrog4d3b6f62008-02-10 16:33:14 +00002763# curses probe
Juan Quintelac584a6d2009-08-12 18:20:30 +02002764if test "$curses" != "no" ; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002765 if test "$mingw32" = "yes" ; then
2766 curses_list="-lpdcurses"
2767 else
Ed Mastecfeda5f2013-05-24 16:07:00 -04002768 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
Michael Tokareva3605bf2013-05-25 13:17:21 +04002769 fi
Juan Quintelac584a6d2009-08-12 18:20:30 +02002770 curses_found=no
balrog4d3b6f62008-02-10 16:33:14 +00002771 cat > $TMPC << EOF
2772#include <curses.h>
Stefan Weilef9a2522011-12-17 17:46:02 +01002773int main(void) {
2774 const char *s = curses_version();
2775 resize_term(0, 0);
2776 return s != 0;
2777}
balrog4d3b6f62008-02-10 16:33:14 +00002778EOF
Vadim Evardecbe2512013-01-15 16:17:24 +04002779 IFS=:
Juan Quintela4f78ef92009-08-12 18:20:23 +02002780 for curses_lib in $curses_list; do
Vadim Evardecbe2512013-01-15 16:17:24 +04002781 unset IFS
Juan Quintela4f78ef92009-08-12 18:20:23 +02002782 if compile_prog "" "$curses_lib" ; then
Juan Quintelac584a6d2009-08-12 18:20:30 +02002783 curses_found=yes
Juan Quintela4f78ef92009-08-12 18:20:23 +02002784 libs_softmmu="$curses_lib $libs_softmmu"
2785 break
2786 fi
2787 done
Vadim Evardecbe2512013-01-15 16:17:24 +04002788 unset IFS
Juan Quintelac584a6d2009-08-12 18:20:30 +02002789 if test "$curses_found" = "yes" ; then
2790 curses=yes
2791 else
2792 if test "$curses" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002793 feature_not_found "curses" "Install ncurses devel"
Juan Quintelac584a6d2009-08-12 18:20:30 +02002794 fi
2795 curses=no
2796 fi
Juan Quintela4f78ef92009-08-12 18:20:23 +02002797fi
balrog4d3b6f62008-02-10 16:33:14 +00002798
blueswir1414f0da2008-08-15 18:20:52 +00002799##########################################
Alexander Graf769ce762009-05-11 17:41:42 +02002800# curl probe
Juan Quintela788c8192009-08-12 18:29:47 +02002801if test "$curl" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02002802 if $pkg_config libcurl --exists; then
Michael Tokareva3605bf2013-05-25 13:17:21 +04002803 curlconfig="$pkg_config libcurl"
2804 else
2805 curlconfig=curl-config
2806 fi
Alexander Graf769ce762009-05-11 17:41:42 +02002807 cat > $TMPC << EOF
2808#include <curl/curl.h>
Peter Maydell0b862ce2011-06-09 22:54:29 +01002809int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
Alexander Graf769ce762009-05-11 17:41:42 +02002810EOF
Paolo Bonzini4e2b0652010-01-13 09:52:56 +01002811 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2812 curl_libs=`$curlconfig --libs 2>/dev/null`
Juan Quintelab1d5a272009-08-03 14:46:05 +02002813 if compile_prog "$curl_cflags" "$curl_libs" ; then
Alexander Graf769ce762009-05-11 17:41:42 +02002814 curl=yes
Juan Quintela788c8192009-08-12 18:29:47 +02002815 else
2816 if test "$curl" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002817 feature_not_found "curl" "Install libcurl devel"
Juan Quintela788c8192009-08-12 18:29:47 +02002818 fi
2819 curl=no
Alexander Graf769ce762009-05-11 17:41:42 +02002820 fi
2821fi # test "$curl"
2822
2823##########################################
balrogfb599c92008-09-28 23:49:55 +00002824# bluez support probe
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002825if test "$bluez" != "no" ; then
balroge820e3f2008-09-30 02:27:44 +00002826 cat > $TMPC << EOF
2827#include <bluetooth/bluetooth.h>
2828int main(void) { return bt_error(0); }
2829EOF
Paolo Bonzinia8bd70a2010-12-23 11:43:55 +01002830 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2831 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
Juan Quintela52166aa2009-08-03 14:46:03 +02002832 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002833 bluez=yes
Juan Quintelae482d562009-08-03 14:46:37 +02002834 libs_softmmu="$bluez_libs $libs_softmmu"
balroge820e3f2008-09-30 02:27:44 +00002835 else
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002836 if test "$bluez" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11002837 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02002838 fi
balroge820e3f2008-09-30 02:27:44 +00002839 bluez="no"
2840 fi
balrogfb599c92008-09-28 23:49:55 +00002841fi
2842
2843##########################################
Anthony Liguorie18df142011-07-19 14:50:29 -05002844# glib support probe
Paolo Bonzinia52d28a2012-04-05 13:01:54 +02002845
John Snowf40685c2015-05-22 14:13:42 -04002846glib_req_ver=2.22
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002847glib_modules=gthread-2.0
2848if test "$modules" = yes; then
2849 glib_modules="$glib_modules gmodule-2.0"
2850fi
Fam Zhenge26110c2014-02-10 14:48:57 +08002851
Paolo Bonziniaa0d1f42014-02-25 17:36:55 +01002852for i in $glib_modules; do
Fam Zhenge26110c2014-02-10 14:48:57 +08002853 if $pkg_config --atleast-version=$glib_req_ver $i; then
2854 glib_cflags=`$pkg_config --cflags $i`
2855 glib_libs=`$pkg_config --libs $i`
2856 CFLAGS="$glib_cflags $CFLAGS"
2857 LIBS="$glib_libs $LIBS"
2858 libs_qga="$glib_libs $libs_qga"
2859 else
2860 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2861 fi
2862done
2863
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03002864# g_test_trap_subprocess added in 2.38. Used by some tests.
2865glib_subprocess=yes
2866if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2867 glib_subprocess=no
2868fi
2869
John Snowbbbf2e02015-03-25 18:57:38 -04002870# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2871cat > $TMPC << EOF
2872#include <glib.h>
2873int main(void) { return 0; }
2874EOF
2875if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2876 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2877 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2878 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2879 fi
2880fi
2881
Fam Zhenge26110c2014-02-10 14:48:57 +08002882##########################################
2883# SHA command probe for modules
2884if test "$modules" = yes; then
2885 shacmd_probe="sha1sum sha1 shasum"
2886 for c in $shacmd_probe; do
Fam Zheng8ccefb92014-12-04 14:18:16 +08002887 if has $c; then
Fam Zhenge26110c2014-02-10 14:48:57 +08002888 shacmd="$c"
2889 break
2890 fi
2891 done
2892 if test "$shacmd" = ""; then
2893 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2894 fi
Anthony Liguorie18df142011-07-19 14:50:29 -05002895fi
2896
2897##########################################
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002898# pixman support probe
2899
2900if test "$pixman" = ""; then
Robert Schiele74880fe2012-12-04 16:58:08 +01002901 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2902 pixman="none"
Hu Tao236f2822014-09-15 11:41:10 +08002903 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002904 pixman="system"
2905 else
2906 pixman="internal"
2907 fi
2908fi
Robert Schiele74880fe2012-12-04 16:58:08 +01002909if test "$pixman" = "none"; then
2910 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002911 error_exit "pixman disabled but system emulation or tools build" \
2912 "enabled. You can turn off pixman only if you also" \
2913 "disable all system emulation targets and the tools" \
2914 "build with '--disable-tools --disable-system'."
Robert Schiele74880fe2012-12-04 16:58:08 +01002915 fi
2916 pixman_cflags=
2917 pixman_libs=
2918elif test "$pixman" = "system"; then
Hu Tao236f2822014-09-15 11:41:10 +08002919 # pixman version has been checked above
Stefan Weilca871ec2013-08-27 21:09:12 +02002920 pixman_cflags=`$pkg_config --cflags pixman-1`
2921 pixman_libs=`$pkg_config --libs pixman-1`
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002922else
2923 if test ! -d ${source_path}/pixman/pixman; then
Hu Tao236f2822014-09-15 11:41:10 +08002924 error_exit "pixman >= 0.21.8 not present. Your options:" \
Peter Maydell76ad07a2013-04-08 12:11:26 +01002925 " (1) Preferred: Install the pixman devel package (any recent" \
2926 " distro should have packages as Xorg needs pixman too)." \
2927 " (2) Fetch the pixman submodule, using:" \
2928 " git submodule update --init pixman"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002929 fi
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01002930 mkdir -p pixman/pixman
2931 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2932 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002933fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02002934
2935##########################################
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302936# libcap probe
2937
2938if test "$cap" != "no" ; then
2939 cat > $TMPC <<EOF
2940#include <stdio.h>
2941#include <sys/capability.h>
Stefan Weilcc939742012-07-18 15:10:20 +01002942int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
M. Mohan Kumar17bff522011-12-14 13:58:42 +05302943EOF
2944 if compile_prog "" "-lcap" ; then
2945 cap=yes
2946 else
2947 cap=no
2948 fi
2949fi
2950
2951##########################################
aliguorie5d355d2009-04-24 18:03:15 +00002952# pthread probe
Brad4b29ec42011-08-07 20:02:11 -04002953PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
aliguori3c529d92008-12-12 16:41:40 +00002954
Christoph Hellwig4dd75c72009-08-10 23:39:39 +02002955pthread=no
aliguorie5d355d2009-04-24 18:03:15 +00002956cat > $TMPC << EOF
aliguori3c529d92008-12-12 16:41:40 +00002957#include <pthread.h>
Stefan Weil7a42bbe2011-12-17 09:27:32 +01002958static void *f(void *p) { return NULL; }
2959int main(void) {
2960 pthread_t thread;
2961 pthread_create(&thread, 0, f, 0);
2962 return 0;
2963}
blueswir1414f0da2008-08-15 18:20:52 +00002964EOF
Andreas Färberbd00d532010-09-20 00:50:44 +02002965if compile_prog "" "" ; then
2966 pthread=yes
2967else
2968 for pthread_lib in $PTHREADLIBS_LIST; do
2969 if compile_prog "" "$pthread_lib" ; then
2970 pthread=yes
Peter Portantee3c56762012-04-20 10:36:12 -04002971 found=no
2972 for lib_entry in $LIBS; do
2973 if test "$lib_entry" = "$pthread_lib"; then
2974 found=yes
2975 break
2976 fi
2977 done
2978 if test "$found" = "no"; then
2979 LIBS="$pthread_lib $LIBS"
2980 fi
Andreas Färberbd00d532010-09-20 00:50:44 +02002981 break
2982 fi
2983 done
2984fi
blueswir1414f0da2008-08-15 18:20:52 +00002985
Anthony Liguori4617e592009-08-25 17:21:56 -05002986if test "$mingw32" != yes -a "$pthread" = no; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01002987 error_exit "pthread check failed" \
2988 "Make sure to have the pthread libs and headers installed."
aliguorie5d355d2009-04-24 18:03:15 +00002989fi
2990
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00002991# check for pthread_setname_np
2992pthread_setname_np=no
2993cat > $TMPC << EOF
2994#include <pthread.h>
2995
2996static void *f(void *p) { return NULL; }
2997int main(void)
2998{
2999 pthread_t thread;
3000 pthread_create(&thread, 0, f, 0);
3001 pthread_setname_np(thread, "QEMU");
3002 return 0;
3003}
3004EOF
3005if compile_prog "" "$pthread_lib" ; then
3006 pthread_setname_np=yes
3007fi
3008
aliguoribf9298b2008-12-05 20:05:26 +00003009##########################################
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003010# rbd probe
3011if test "$rbd" != "no" ; then
3012 cat > $TMPC <<EOF
3013#include <stdio.h>
Josh Durginad32e9c2011-05-26 16:07:31 -07003014#include <rbd/librbd.h>
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003015int main(void) {
Josh Durginad32e9c2011-05-26 16:07:31 -07003016 rados_t cluster;
3017 rados_create(&cluster, NULL);
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003018 return 0;
3019}
3020EOF
Josh Durginad32e9c2011-05-26 16:07:31 -07003021 rbd_libs="-lrbd -lrados"
3022 if compile_prog "" "$rbd_libs" ; then
3023 rbd=yes
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003024 else
3025 if test "$rbd" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003026 feature_not_found "rados block device" "Install librbd/ceph devel"
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003027 fi
3028 rbd=no
3029 fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01003030fi
3031
3032##########################################
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003033# libssh2 probe
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003034min_libssh2_version=1.2.8
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003035if test "$libssh2" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003036 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003037 libssh2_cflags=`$pkg_config libssh2 --cflags`
3038 libssh2_libs=`$pkg_config libssh2 --libs`
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003039 libssh2=yes
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003040 else
3041 if test "$libssh2" = "yes" ; then
Richard W.M. Jones4fc16832013-04-19 09:16:39 +01003042 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01003043 fi
3044 libssh2=no
3045 fi
3046fi
3047
3048##########################################
Richard W.M. Jones9a2d4622013-04-09 15:30:54 +01003049# libssh2_sftp_fsync probe
3050
3051if test "$libssh2" = "yes"; then
3052 cat > $TMPC <<EOF
3053#include <stdio.h>
3054#include <libssh2.h>
3055#include <libssh2_sftp.h>
3056int main(void) {
3057 LIBSSH2_SESSION *session;
3058 LIBSSH2_SFTP *sftp;
3059 LIBSSH2_SFTP_HANDLE *sftp_handle;
3060 session = libssh2_session_init ();
3061 sftp = libssh2_sftp_init (session);
3062 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3063 libssh2_sftp_fsync (sftp_handle);
3064 return 0;
3065}
3066EOF
3067 # libssh2_cflags/libssh2_libs defined in previous test.
3068 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3069 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3070 fi
3071fi
3072
3073##########################################
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003074# linux-aio probe
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003075
3076if test "$linux_aio" != "no" ; then
3077 cat > $TMPC <<EOF
3078#include <libaio.h>
3079#include <sys/eventfd.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05003080#include <stddef.h>
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003081int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3082EOF
3083 if compile_prog "" "-laio" ; then
3084 linux_aio=yes
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003085 else
3086 if test "$linux_aio" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003087 feature_not_found "linux AIO" "Install libaio devel"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003088 fi
Luiz Capitulino3cfcae32009-08-31 13:18:12 -03003089 linux_aio=no
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02003090 fi
3091fi
3092
3093##########################################
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01003094# TPM passthrough is only on x86 Linux
3095
3096if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3097 tpm_passthrough=$tpm
3098else
3099 tpm_passthrough=no
3100fi
3101
3102##########################################
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003103# attr probe
3104
3105if test "$attr" != "no" ; then
3106 cat > $TMPC <<EOF
3107#include <stdio.h>
3108#include <sys/types.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003109#ifdef CONFIG_LIBATTR
3110#include <attr/xattr.h>
3111#else
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003112#include <sys/xattr.h>
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003113#endif
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003114int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3115EOF
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003116 if compile_prog "" "" ; then
3117 attr=yes
3118 # Older distros have <attr/xattr.h>, and need -lattr:
Pavel Borzenkovf2338fb2011-11-11 00:26:59 +04003119 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003120 attr=yes
3121 LIBS="-lattr $LIBS"
Avi Kivity4f26f2b2011-11-09 14:44:52 +02003122 libattr=yes
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003123 else
3124 if test "$attr" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003125 feature_not_found "ATTR" "Install libc6 or libattr devel"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07003126 fi
3127 attr=no
3128 fi
3129fi
3130
3131##########################################
aliguoribf9298b2008-12-05 20:05:26 +00003132# iovec probe
3133cat > $TMPC <<EOF
blueswir1db34f0b2009-01-14 18:03:53 +00003134#include <sys/types.h>
aliguoribf9298b2008-12-05 20:05:26 +00003135#include <sys/uio.h>
blueswir1db34f0b2009-01-14 18:03:53 +00003136#include <unistd.h>
Stefan Weilf91f9be2011-12-17 09:27:33 +01003137int main(void) { return sizeof(struct iovec); }
aliguoribf9298b2008-12-05 20:05:26 +00003138EOF
3139iovec=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003140if compile_prog "" "" ; then
aliguoribf9298b2008-12-05 20:05:26 +00003141 iovec=yes
3142fi
3143
aurel32f652e6a2008-12-16 10:43:48 +00003144##########################################
aliguoriceb42de2009-04-07 18:43:28 +00003145# preadv probe
3146cat > $TMPC <<EOF
3147#include <sys/types.h>
3148#include <sys/uio.h>
3149#include <unistd.h>
Blue Swirlc075a722012-08-09 20:21:25 +00003150int main(void) { return preadv(0, 0, 0, 0); }
aliguoriceb42de2009-04-07 18:43:28 +00003151EOF
3152preadv=no
Juan Quintela52166aa2009-08-03 14:46:03 +02003153if compile_prog "" "" ; then
aliguoriceb42de2009-04-07 18:43:28 +00003154 preadv=yes
3155fi
3156
3157##########################################
aurel32f652e6a2008-12-16 10:43:48 +00003158# fdt probe
Peter Maydelle169e1e2013-05-24 16:26:54 +01003159# fdt support is mandatory for at least some target architectures,
3160# so insist on it if we're building those system emulators.
3161fdt_required=no
3162for target in $target_list; do
3163 case $target in
Alexander Graf6a49fa92013-09-03 20:12:22 +01003164 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
Peter Maydelle169e1e2013-05-24 16:26:54 +01003165 fdt_required=yes
3166 ;;
3167 esac
3168done
3169
3170if test "$fdt_required" = "yes"; then
3171 if test "$fdt" = "no"; then
3172 error_exit "fdt disabled but some requested targets require it." \
3173 "You can turn off fdt only if you also disable all the system emulation" \
3174 "targets which need it (by specifying a cut down --target-list)."
3175 fi
3176 fdt=yes
3177fi
3178
Juan Quintela2df87df2009-08-12 18:29:54 +02003179if test "$fdt" != "no" ; then
Juan Quintelab41af4b2009-07-27 16:13:20 +02003180 fdt_libs="-lfdt"
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003181 # explicitly check for libfdt_env.h as it is missing in some stable installs
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003182 # and test for required functions to make sure we are on a version >= 1.4.0
Juan Quintelab41af4b2009-07-27 16:13:20 +02003183 cat > $TMPC << EOF
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003184#include <libfdt.h>
Peter Crosthwaite96ce6542013-05-27 14:20:57 +10003185#include <libfdt_env.h>
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003186int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
aurel32f652e6a2008-12-16 10:43:48 +00003187EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003188 if compile_prog "" "$fdt_libs" ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003189 # system DTC is good - use it
aurel32f652e6a2008-12-16 10:43:48 +00003190 fdt=yes
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003191 elif test -d ${source_path}/dtc/libfdt ; then
3192 # have submodule DTC - use it
3193 fdt=yes
3194 dtc_internal="yes"
3195 mkdir -p dtc
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03003196 if [ "$pwd_is_source_path" != "y" ] ; then
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003197 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3198 symlink "$source_path/dtc/scripts" "dtc/scripts"
Juan Quintela2df87df2009-08-12 18:29:54 +02003199 fi
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003200 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3201 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3202 elif test "$fdt" = "yes" ; then
3203 # have neither and want - prompt for system/submodule install
Thomas Huth31ce0ad2015-05-18 12:59:49 +02003204 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
Stewart Smith3f281822014-01-24 12:39:06 +11003205 " (1) Preferred: Install the DTC (libfdt) devel package" \
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003206 " (2) Fetch the DTC submodule, using:" \
3207 " git submodule update --init dtc"
3208 else
3209 # don't have and don't want
Michael Wallede3a3542011-04-26 00:24:07 +02003210 fdt_libs=
Juan Quintela2df87df2009-08-12 18:29:54 +02003211 fdt=no
aurel32f652e6a2008-12-16 10:43:48 +00003212 fi
3213fi
3214
Peter Crosthwaitea540f152013-04-18 14:47:31 +10003215libs_softmmu="$libs_softmmu $fdt_libs"
3216
Michael Walle20ff0752011-03-07 23:32:39 +01003217##########################################
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003218# opengl probe (for sdl2, milkymist-tmu2)
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003219
3220# GLX probe, used by milkymist-tmu2
3221# this is temporary, code will be switched to egl mid-term.
3222cat > $TMPC << EOF
3223#include <X11/Xlib.h>
3224#include <GL/gl.h>
3225#include <GL/glx.h>
3226int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3227EOF
3228if compile_prog "" "-lGL -lX11" ; then
3229 have_glx=yes
3230else
3231 have_glx=no
3232fi
3233
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003234if test "$opengl" != "no" ; then
Gerd Hoffmann7ced9e92015-01-06 15:40:00 +01003235 opengl_pkgs="gl glesv2 epoxy egl"
Gerd Hoffmannb1546f32015-03-16 10:03:53 +01003236 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
Jeremy Whitef676c672015-01-09 13:08:49 -06003237 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3238 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003239 opengl=yes
Gerd Hoffmann925a0402015-05-26 12:26:21 +02003240 if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3241 gtk_gl="yes"
3242 fi
Michael Walle20ff0752011-03-07 23:32:39 +01003243 else
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003244 if test "$opengl" = "yes" ; then
Gerd Hoffmanndcf30022015-05-11 12:24:43 +02003245 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
Michael Walle20ff0752011-03-07 23:32:39 +01003246 fi
Jeremy Whitef676c672015-01-09 13:08:49 -06003247 opengl_cflags=""
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01003248 opengl_libs=""
3249 opengl=no
Michael Walle20ff0752011-03-07 23:32:39 +01003250 fi
3251fi
3252
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003253
3254##########################################
3255# archipelago probe
3256if test "$archipelago" != "no" ; then
3257 cat > $TMPC <<EOF
3258#include <stdio.h>
3259#include <xseg/xseg.h>
3260#include <xseg/protocol.h>
3261int main(void) {
3262 xseg_initialize();
3263 return 0;
3264}
3265EOF
3266 archipelago_libs=-lxseg
3267 if compile_prog "" "$archipelago_libs"; then
3268 archipelago="yes"
3269 libs_tools="$archipelago_libs $libs_tools"
3270 libs_softmmu="$archipelago_libs $libs_softmmu"
Stefan Hajnoczi6a460ed2015-04-09 14:52:18 +01003271
3272 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3273 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3274 echo "license and therefore prevent redistribution."
3275 echo
3276 echo "To disable Archipelago, use --disable-archipelago"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03003277 else
3278 if test "$archipelago" = "yes" ; then
3279 feature_not_found "Archipelago backend support" "Install libxseg devel"
3280 fi
3281 archipelago="no"
3282 fi
3283fi
3284
3285
Bharata B Raoeb100392012-09-24 14:42:45 +05303286##########################################
3287# glusterfs probe
3288if test "$glusterfs" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003289 if $pkg_config --atleast-version=3 glusterfs-api; then
Bharata B Raoe01bee02013-07-16 21:47:41 +05303290 glusterfs="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003291 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3292 glusterfs_libs=`$pkg_config --libs glusterfs-api`
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003293 if $pkg_config --atleast-version=5 glusterfs-api; then
Bharata B Rao0c14fb42013-07-16 21:47:42 +05303294 glusterfs_discard="yes"
3295 fi
Bharata B Rao7c815372013-12-21 14:51:25 +05303296 if $pkg_config --atleast-version=6 glusterfs-api; then
3297 glusterfs_zerofill="yes"
3298 fi
Bharata B Raoeb100392012-09-24 14:42:45 +05303299 else
3300 if test "$glusterfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003301 feature_not_found "GlusterFS backend support" \
3302 "Install glusterfs-api devel >= 3"
Bharata B Raoeb100392012-09-24 14:42:45 +05303303 fi
Bharata B Raoe01bee02013-07-16 21:47:41 +05303304 glusterfs="no"
Bharata B Raoeb100392012-09-24 14:42:45 +05303305 fi
3306fi
3307
aurel3239386ac2009-04-15 19:48:17 +00003308# Check for inotify functions when we are building linux-user
aurel323b3f24a2009-04-15 16:12:13 +00003309# emulator. This is done because older glibc versions don't
3310# have syscall stubs for these implemented. In that case we
3311# don't provide them even if kernel supports them.
3312#
3313inotify=no
Riku Voipio67ba57f2009-06-29 17:26:11 +03003314cat > $TMPC << EOF
aurel323b3f24a2009-04-15 16:12:13 +00003315#include <sys/inotify.h>
3316
3317int
3318main(void)
3319{
3320 /* try to start inotify */
aurel328690e422009-04-17 13:50:32 +00003321 return inotify_init();
aurel323b3f24a2009-04-15 16:12:13 +00003322}
3323EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003324if compile_prog "" "" ; then
Riku Voipio67ba57f2009-06-29 17:26:11 +03003325 inotify=yes
aurel323b3f24a2009-04-15 16:12:13 +00003326fi
3327
Riku Voipioc05c7a72010-03-26 15:25:11 +00003328inotify1=no
3329cat > $TMPC << EOF
3330#include <sys/inotify.h>
3331
3332int
3333main(void)
3334{
3335 /* try to start inotify */
3336 return inotify_init1(0);
3337}
3338EOF
3339if compile_prog "" "" ; then
3340 inotify1=yes
3341fi
3342
Riku Voipioebc996f2009-04-21 15:01:51 +03003343# check if utimensat and futimens are supported
3344utimens=no
3345cat > $TMPC << EOF
3346#define _ATFILE_SOURCE
Riku Voipioebc996f2009-04-21 15:01:51 +03003347#include <stddef.h>
3348#include <fcntl.h>
Peter Maydell3014ee02012-07-18 15:10:26 +01003349#include <sys/stat.h>
Riku Voipioebc996f2009-04-21 15:01:51 +03003350
3351int main(void)
3352{
3353 utimensat(AT_FDCWD, "foo", NULL, 0);
3354 futimens(0, NULL);
3355 return 0;
3356}
3357EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003358if compile_prog "" "" ; then
Riku Voipioebc996f2009-04-21 15:01:51 +03003359 utimens=yes
3360fi
3361
Riku Voipio099d6b02009-05-05 12:10:04 +03003362# check if pipe2 is there
3363pipe2=no
3364cat > $TMPC << EOF
Riku Voipio099d6b02009-05-05 12:10:04 +03003365#include <unistd.h>
3366#include <fcntl.h>
3367
3368int main(void)
3369{
3370 int pipefd[2];
Bruce Rogers9bca8162012-08-20 12:45:08 -06003371 return pipe2(pipefd, O_CLOEXEC);
Riku Voipio099d6b02009-05-05 12:10:04 +03003372}
3373EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003374if compile_prog "" "" ; then
Riku Voipio099d6b02009-05-05 12:10:04 +03003375 pipe2=yes
3376fi
3377
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003378# check if accept4 is there
3379accept4=no
3380cat > $TMPC << EOF
Kevin Wolf40ff6d72009-12-02 12:24:42 +01003381#include <sys/socket.h>
3382#include <stddef.h>
3383
3384int main(void)
3385{
3386 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3387 return 0;
3388}
3389EOF
3390if compile_prog "" "" ; then
3391 accept4=yes
3392fi
3393
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303394# check if tee/splice is there. vmsplice was added same time.
3395splice=no
3396cat > $TMPC << EOF
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303397#include <unistd.h>
3398#include <fcntl.h>
3399#include <limits.h>
3400
3401int main(void)
3402{
Stefan Weil66ea0f22011-12-17 09:27:35 +01003403 int len, fd = 0;
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303404 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3405 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3406 return 0;
3407}
3408EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003409if compile_prog "" "" ; then
vibisreenivasan3ce34df2009-05-16 18:32:41 +05303410 splice=yes
3411fi
3412
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003413##########################################
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003414# libnuma probe
3415
3416if test "$numa" != "no" ; then
3417 cat > $TMPC << EOF
3418#include <numa.h>
3419int main(void) { return numa_available(); }
3420EOF
3421
3422 if compile_prog "" "-lnuma" ; then
3423 numa=yes
3424 libs_softmmu="-lnuma $libs_softmmu"
3425 else
3426 if test "$numa" = "yes" ; then
3427 feature_not_found "numa" "install numactl devel"
3428 fi
3429 numa=no
3430 fi
3431fi
3432
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003433if test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3434 echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3435 exit 1
3436fi
3437
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08003438##########################################
Fam Zheng2847b462015-03-26 11:03:12 +08003439# tcmalloc probe
3440
3441if test "$tcmalloc" = "yes" ; then
3442 cat > $TMPC << EOF
3443#include <stdlib.h>
3444int main(void) { malloc(1); return 0; }
3445EOF
3446
3447 if compile_prog "" "-ltcmalloc" ; then
3448 LIBS="-ltcmalloc $LIBS"
3449 else
3450 feature_not_found "tcmalloc" "install gperftools devel"
3451 fi
3452fi
3453
3454##########################################
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02003455# jemalloc probe
3456
3457if test "$jemalloc" = "yes" ; then
3458 cat > $TMPC << EOF
3459#include <stdlib.h>
3460int main(void) { malloc(1); return 0; }
3461EOF
3462
3463 if compile_prog "" "-ljemalloc" ; then
3464 LIBS="-ljemalloc $LIBS"
3465 else
3466 feature_not_found "jemalloc" "install jemalloc devel"
3467 fi
3468fi
3469
3470##########################################
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003471# signalfd probe
3472signalfd="no"
3473cat > $TMPC << EOF
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03003474#include <unistd.h>
3475#include <sys/syscall.h>
3476#include <signal.h>
3477int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3478EOF
3479
3480if compile_prog "" "" ; then
3481 signalfd=yes
3482fi
3483
Riku Voipioc2882b92009-08-12 15:08:24 +03003484# check if eventfd is supported
3485eventfd=no
3486cat > $TMPC << EOF
3487#include <sys/eventfd.h>
3488
3489int main(void)
3490{
Stefan Weil55cc7f32011-12-17 09:27:37 +01003491 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
Riku Voipioc2882b92009-08-12 15:08:24 +03003492}
3493EOF
3494if compile_prog "" "" ; then
3495 eventfd=yes
3496fi
3497
Marc-André Lureau751bcc32015-10-09 17:17:16 +02003498# check if memfd is supported
3499memfd=no
3500cat > $TMPC << EOF
3501#include <sys/memfd.h>
3502
3503int main(void)
3504{
3505 return memfd_create("foo", MFD_ALLOW_SEALING);
3506}
3507EOF
3508if compile_prog "" "" ; then
3509 memfd=yes
3510fi
3511
3512
3513
Ulrich Hechtd0927932009-09-17 20:22:14 +03003514# check for fallocate
3515fallocate=no
3516cat > $TMPC << EOF
3517#include <fcntl.h>
3518
3519int main(void)
3520{
3521 fallocate(0, 0, 0, 0);
3522 return 0;
3523}
3524EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003525if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003526 fallocate=yes
3527fi
3528
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003529# check for fallocate hole punching
3530fallocate_punch_hole=no
3531cat > $TMPC << EOF
3532#include <fcntl.h>
3533#include <linux/falloc.h>
3534
3535int main(void)
3536{
3537 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3538 return 0;
3539}
3540EOF
3541if compile_prog "" "" ; then
3542 fallocate_punch_hole=yes
3543fi
3544
Denis V. Lunevb953f072015-01-30 11:42:14 +03003545# check that fallocate supports range zeroing inside the file
3546fallocate_zero_range=no
3547cat > $TMPC << EOF
3548#include <fcntl.h>
3549#include <linux/falloc.h>
3550
3551int main(void)
3552{
3553 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3554 return 0;
3555}
3556EOF
3557if compile_prog "" "" ; then
3558 fallocate_zero_range=yes
3559fi
3560
Kevin Wolfed911432014-09-29 17:12:59 +02003561# check for posix_fallocate
3562posix_fallocate=no
3563cat > $TMPC << EOF
3564#include <fcntl.h>
3565
3566int main(void)
3567{
3568 posix_fallocate(0, 0, 0);
3569 return 0;
3570}
3571EOF
3572if compile_prog "" "" ; then
3573 posix_fallocate=yes
3574fi
3575
Peter Maydellc727f472011-01-06 11:05:10 +00003576# check for sync_file_range
3577sync_file_range=no
3578cat > $TMPC << EOF
3579#include <fcntl.h>
3580
3581int main(void)
3582{
3583 sync_file_range(0, 0, 0, 0);
3584 return 0;
3585}
3586EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003587if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003588 sync_file_range=yes
3589fi
3590
Peter Maydelldace20d2011-01-10 13:11:24 +00003591# check for linux/fiemap.h and FS_IOC_FIEMAP
3592fiemap=no
3593cat > $TMPC << EOF
3594#include <sys/ioctl.h>
3595#include <linux/fs.h>
3596#include <linux/fiemap.h>
3597
3598int main(void)
3599{
3600 ioctl(0, FS_IOC_FIEMAP, 0);
3601 return 0;
3602}
3603EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003604if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003605 fiemap=yes
3606fi
3607
Ulrich Hechtd0927932009-09-17 20:22:14 +03003608# check for dup3
3609dup3=no
3610cat > $TMPC << EOF
3611#include <unistd.h>
3612
3613int main(void)
3614{
3615 dup3(0, 0, 0);
3616 return 0;
3617}
3618EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003619if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003620 dup3=yes
3621fi
3622
Alex Bligh4e0c6522013-08-21 16:02:43 +01003623# check for ppoll support
3624ppoll=no
3625cat > $TMPC << EOF
3626#include <poll.h>
3627
3628int main(void)
3629{
3630 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3631 ppoll(&pfd, 1, 0, 0);
3632 return 0;
3633}
3634EOF
3635if compile_prog "" "" ; then
3636 ppoll=yes
3637fi
3638
Alex Blighcd758dd2013-08-21 16:02:44 +01003639# check for prctl(PR_SET_TIMERSLACK , ... ) support
3640prctl_pr_set_timerslack=no
3641cat > $TMPC << EOF
3642#include <sys/prctl.h>
3643
3644int main(void)
3645{
3646 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3647 return 0;
3648}
3649EOF
3650if compile_prog "" "" ; then
3651 prctl_pr_set_timerslack=yes
3652fi
3653
Peter Maydell3b6edd12011-02-15 18:35:05 +00003654# check for epoll support
3655epoll=no
3656cat > $TMPC << EOF
3657#include <sys/epoll.h>
3658
3659int main(void)
3660{
3661 epoll_create(0);
3662 return 0;
3663}
3664EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003665if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003666 epoll=yes
3667fi
3668
3669# epoll_create1 and epoll_pwait are later additions
3670# so we must check separately for their presence
3671epoll_create1=no
3672cat > $TMPC << EOF
3673#include <sys/epoll.h>
3674
3675int main(void)
3676{
Peter Maydell19e83f62011-04-26 16:56:40 +01003677 /* Note that we use epoll_create1 as a value, not as
3678 * a function being called. This is necessary so that on
3679 * old SPARC glibc versions where the function was present in
3680 * the library but not declared in the header file we will
3681 * fail the configure check. (Otherwise we will get a compiler
3682 * warning but not an error, and will proceed to fail the
3683 * qemu compile where we compile with -Werror.)
3684 */
Blue Swirlc075a722012-08-09 20:21:25 +00003685 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003686}
3687EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003688if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003689 epoll_create1=yes
3690fi
3691
3692epoll_pwait=no
3693cat > $TMPC << EOF
3694#include <sys/epoll.h>
3695
3696int main(void)
3697{
3698 epoll_pwait(0, 0, 0, 0, 0);
3699 return 0;
3700}
3701EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003702if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003703 epoll_pwait=yes
3704fi
3705
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003706# check for sendfile support
3707sendfile=no
3708cat > $TMPC << EOF
3709#include <sys/sendfile.h>
3710
3711int main(void)
3712{
3713 return sendfile(0, 0, 0, 0);
3714}
3715EOF
3716if compile_prog "" "" ; then
3717 sendfile=yes
3718fi
3719
Riku Voipio51834342014-06-22 11:25:42 +01003720# check for timerfd support (glibc 2.8 and newer)
3721timerfd=no
3722cat > $TMPC << EOF
3723#include <sys/timerfd.h>
3724
3725int main(void)
3726{
3727 return(timerfd_create(CLOCK_REALTIME, 0));
3728}
3729EOF
3730if compile_prog "" "" ; then
3731 timerfd=yes
3732fi
3733
Riku Voipio9af5c902014-08-12 15:58:57 +03003734# check for setns and unshare support
3735setns=no
3736cat > $TMPC << EOF
3737#include <sched.h>
3738
3739int main(void)
3740{
3741 int ret;
3742 ret = setns(0, 0);
3743 ret = unshare(0);
3744 return ret;
3745}
3746EOF
3747if compile_prog "" "" ; then
3748 setns=yes
3749fi
3750
pbrookcc8ae6d2006-04-23 17:57:59 +00003751# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003752if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003753 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003754 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003755 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003756 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003757 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003758 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003759 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003760 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003761fi
3762
Stefan Weilf514f412009-10-11 12:44:07 +02003763# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003764byteswap_h=no
3765cat > $TMPC << EOF
3766#include <byteswap.h>
3767int main(void) { return bswap_32(0); }
3768EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003769if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003770 byteswap_h=yes
3771fi
3772
Stefan Weil75f13592013-01-05 12:17:38 +01003773# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003774bswap_h=no
3775cat > $TMPC << EOF
3776#include <sys/endian.h>
3777#include <sys/types.h>
3778#include <machine/bswap.h>
3779int main(void) { return bswap32(0); }
3780EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003781if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003782 bswap_h=yes
3783fi
3784
aliguorida93a1f2008-12-12 20:02:52 +00003785##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003786# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003787if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003788 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003789 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003790 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3791 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003792 else
3793 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003794 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003795 fi
3796 libiscsi="no"
3797 fi
3798fi
3799
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003800##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003801# Do we need libm
3802cat > $TMPC << EOF
3803#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003804int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003805EOF
3806if compile_prog "" "" ; then
3807 :
3808elif compile_prog "" "-lm" ; then
3809 LIBS="-lm $LIBS"
3810 libs_qga="-lm $libs_qga"
3811else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003812 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003813fi
3814
3815##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003816# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003817# uClibc provides 2 versions of clock_gettime(), one with realtime
3818# support and one without. This means that the clock_gettime() don't
3819# need -lrt. We still need it for timer_create() so we check for this
3820# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003821cat > $TMPC <<EOF
3822#include <signal.h>
3823#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003824int main(void) {
3825 timer_create(CLOCK_REALTIME, NULL, NULL);
3826 return clock_gettime(CLOCK_REALTIME, NULL);
3827}
aliguorida93a1f2008-12-12 20:02:52 +00003828EOF
3829
Juan Quintela52166aa2009-08-03 14:46:03 +02003830if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003831 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003832# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003833elif compile_prog "" "$pthread_lib -lrt" ; then
3834 LIBS="$LIBS -lrt"
3835 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003836fi
3837
Blue Swirl31ff5042009-09-12 12:33:07 +00003838if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003839 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003840 libs_softmmu="-lutil $libs_softmmu"
3841fi
3842
Blue Swirlde5071c2009-09-12 09:58:46 +00003843##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003844# spice probe
3845if test "$spice" != "no" ; then
3846 cat > $TMPC << EOF
3847#include <spice.h>
3848int main(void) { spice_server_new(); return 0; }
3849EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003850 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3851 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003852 if $pkg_config --atleast-version=0.12.0 spice-server && \
3853 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003854 compile_prog "$spice_cflags" "$spice_libs" ; then
3855 spice="yes"
3856 libs_softmmu="$libs_softmmu $spice_libs"
3857 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003858 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3859 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003860 else
3861 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003862 feature_not_found "spice" \
3863 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003864 fi
3865 spice="no"
3866 fi
3867fi
3868
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003869# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003870smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003871if test "$smartcard" != "no"; then
3872 if $pkg_config libcacard; then
3873 libcacard_cflags=$($pkg_config --cflags libcacard)
3874 libcacard_libs=$($pkg_config --libs libcacard)
3875 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3876 libs_softmmu="$libs_softmmu $libcacard_libs"
3877 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003878 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003879 if test "$smartcard" = "yes"; then
3880 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003881 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003882 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003883 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003884fi
3885
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003886# check for libusb
3887if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003888 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003889 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003890 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3891 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003892 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3893 libs_softmmu="$libs_softmmu $libusb_libs"
3894 else
3895 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003896 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003897 fi
3898 libusb="no"
3899 fi
3900fi
3901
Hans de Goede69354a82011-07-19 11:04:10 +02003902# check for usbredirparser for usb network redirection support
3903if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003904 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003905 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003906 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3907 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003908 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003909 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003910 else
3911 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003912 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003913 fi
3914 usb_redir="no"
3915 fi
3916fi
3917
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003918##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003919# check if we have VSS SDK headers for win
3920
3921if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3922 case "$vss_win32_sdk" in
3923 "") vss_win32_include="-I$source_path" ;;
3924 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3925 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3926 vss_win32_include="-I$source_path/.sdk/vss"
3927 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3928 ;;
3929 *) vss_win32_include="-I$vss_win32_sdk"
3930 esac
3931 cat > $TMPC << EOF
3932#define __MIDL_user_allocate_free_DEFINED__
3933#include <inc/win2003/vss.h>
3934int main(void) { return VSS_CTX_BACKUP; }
3935EOF
3936 if compile_prog "$vss_win32_include" "" ; then
3937 guest_agent_with_vss="yes"
3938 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3939 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05003940 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003941 else
3942 if test "$vss_win32_sdk" != "" ; then
3943 echo "ERROR: Please download and install Microsoft VSS SDK:"
3944 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3945 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3946 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3947 echo "ERROR: The headers are extracted in the directory \`inc'."
3948 feature_not_found "VSS support"
3949 fi
3950 guest_agent_with_vss="no"
3951 fi
3952fi
3953
3954##########################################
3955# lookup Windows platform SDK (if not specified)
3956# The SDK is needed only to build .tlb (type library) file of guest agent
3957# VSS provider from the source. It is usually unnecessary because the
3958# pre-compiled .tlb file is included.
3959
3960if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3961 if test -z "$win_sdk"; then
3962 programfiles="$PROGRAMFILES"
3963 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3964 if test -n "$programfiles"; then
3965 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3966 else
3967 feature_not_found "Windows SDK"
3968 fi
3969 elif test "$win_sdk" = "no"; then
3970 win_sdk=""
3971 fi
3972fi
3973
3974##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05003975# check if mingw environment provides a recent ntddscsi.h
3976if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3977 cat > $TMPC << EOF
3978#include <windows.h>
3979#include <ntddscsi.h>
3980int main(void) {
3981#if !defined(IOCTL_SCSI_GET_ADDRESS)
3982#error Missing required ioctl definitions
3983#endif
3984 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3985 return addr.Lun;
3986}
3987EOF
3988 if compile_prog "" "" ; then
3989 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05003990 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05003991 fi
3992fi
3993
3994##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02003995# virgl renderer probe
3996
3997if test "$virglrenderer" != "no" ; then
3998 cat > $TMPC << EOF
3999#include <virglrenderer.h>
4000int main(void) { virgl_renderer_poll(); return 0; }
4001EOF
4002 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4003 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4004 if $pkg_config virglrenderer >/dev/null 2>&1 && \
4005 compile_prog "$virgl_cflags" "$virgl_libs" ; then
4006 virglrenderer="yes"
4007 else
4008 if test "$virglrenderer" = "yes" ; then
4009 feature_not_found "virglrenderer"
4010 fi
4011 virglrenderer="no"
4012 fi
4013fi
4014
4015##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004016# check if we have fdatasync
4017
4018fdatasync=no
4019cat > $TMPC << EOF
4020#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004021int main(void) {
4022#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4023return fdatasync(0);
4024#else
Stefan Weile172fe12012-04-06 21:33:20 +02004025#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004026#endif
4027}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004028EOF
4029if compile_prog "" "" ; then
4030 fdatasync=yes
4031fi
4032
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004033##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004034# check if we have madvise
4035
4036madvise=no
4037cat > $TMPC << EOF
4038#include <sys/types.h>
4039#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004040#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004041int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4042EOF
4043if compile_prog "" "" ; then
4044 madvise=yes
4045fi
4046
4047##########################################
4048# check if we have posix_madvise
4049
4050posix_madvise=no
4051cat > $TMPC << EOF
4052#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004053#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004054int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4055EOF
4056if compile_prog "" "" ; then
4057 posix_madvise=yes
4058fi
4059
4060##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004061# check if we have usable SIGEV_THREAD_ID
4062
4063sigev_thread_id=no
4064cat > $TMPC << EOF
4065#include <signal.h>
4066int main(void) {
4067 struct sigevent ev;
4068 ev.sigev_notify = SIGEV_THREAD_ID;
4069 ev._sigev_un._tid = 0;
4070 asm volatile("" : : "g"(&ev));
4071 return 0;
4072}
4073EOF
4074if compile_prog "" "" ; then
4075 sigev_thread_id=yes
4076fi
4077
4078##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004079# check if trace backend exists
4080
Lluís Vilanova5b808272014-05-27 15:02:14 +02004081$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004082if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004083 error_exit "invalid trace backends" \
4084 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004085fi
4086
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004087##########################################
4088# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004089if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004090 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004091#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004092int main(void) { return 0; }
4093EOF
4094 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004095 if $pkg_config lttng-ust --exists; then
4096 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4097 else
4098 lttng_ust_libs="-llttng-ust"
4099 fi
4100 if $pkg_config liburcu-bp --exists; then
4101 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4102 else
4103 urcu_bp_libs="-lurcu-bp"
4104 fi
4105
4106 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4107 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004108 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004109 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004110 fi
4111fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004112
4113##########################################
4114# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004115if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004116 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004117 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004118 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004119 trace_backend_stap="no"
4120 if has 'stap' ; then
4121 trace_backend_stap="yes"
4122 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004123fi
4124
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004125##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004126# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304127
Peter Maydell7c2acc72013-04-08 12:11:27 +01004128# We prefer ucontext, but it's not always possible. The fallback
4129# is sigcontext. gthread is not selectable except explicitly, because
4130# it is not functional enough to run QEMU proper. (It is occasionally
4131# useful for debugging purposes.) On Windows the only valid backend
4132# is the Windows-specific one.
4133
4134ucontext_works=no
4135if test "$darwin" != "yes"; then
4136 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304137#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004138#ifdef __stub_makecontext
4139#error Ignoring glibc stub makecontext which will always fail
4140#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004141int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304142EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004143 if compile_prog "" "" ; then
4144 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304145 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004146fi
4147
4148if test "$coroutine" = ""; then
4149 if test "$mingw32" = "yes"; then
4150 coroutine=win32
4151 elif test "$ucontext_works" = "yes"; then
4152 coroutine=ucontext
4153 else
4154 coroutine=sigaltstack
4155 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004156else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004157 case $coroutine in
4158 windows)
4159 if test "$mingw32" != "yes"; then
4160 error_exit "'windows' coroutine backend only valid for Windows"
4161 fi
4162 # Unfortunately the user visible backend name doesn't match the
4163 # coroutine-*.c filename for this case, so we have to adjust it here.
4164 coroutine=win32
4165 ;;
4166 ucontext)
4167 if test "$ucontext_works" != "yes"; then
4168 feature_not_found "ucontext"
4169 fi
4170 ;;
4171 gthread|sigaltstack)
4172 if test "$mingw32" = "yes"; then
4173 error_exit "only the 'windows' coroutine backend is valid for Windows"
4174 fi
4175 ;;
4176 *)
4177 error_exit "unknown coroutine backend $coroutine"
4178 ;;
4179 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304180fi
4181
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004182if test "$coroutine_pool" = ""; then
4183 if test "$coroutine" = "gthread"; then
4184 coroutine_pool=no
4185 else
4186 coroutine_pool=yes
4187 fi
4188fi
4189if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4190 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4191fi
4192
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304193##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304194# check if we have open_by_handle_at
4195
Stefan Weil4e1797f2012-06-18 22:11:06 +02004196open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304197cat > $TMPC << EOF
4198#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004199#if !defined(AT_EMPTY_PATH)
4200# error missing definition
4201#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004202int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004203#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304204EOF
4205if compile_prog "" "" ; then
4206 open_by_handle_at=yes
4207fi
4208
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304209########################################
4210# check if we have linux/magic.h
4211
4212linux_magic_h=no
4213cat > $TMPC << EOF
4214#include <linux/magic.h>
4215int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004216 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304217}
4218EOF
4219if compile_prog "" "" ; then
4220 linux_magic_h=yes
4221fi
4222
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004223########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004224# check whether we can disable warning option with a pragma (this is needed
4225# to silence warnings in the headers of some versions of external libraries).
4226# This test has to be compiled with -Werror as otherwise an unknown pragma is
4227# only a warning.
4228#
4229# If we can't selectively disable warning in the code, disable -Werror so that
4230# the build doesn't fail anyway.
4231
Peter Maydell06d71fa2012-07-30 16:13:07 +01004232pragma_disable_unused_but_set=no
4233cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004234#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004235#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004236#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004237#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004238
Peter Maydell06d71fa2012-07-30 16:13:07 +01004239int main(void) {
4240 return 0;
4241}
4242EOF
4243if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004244 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004245else
4246 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004247fi
4248
4249########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004250# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004251
4252valgrind_h=no
4253cat > $TMPC << EOF
4254#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004255int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004256 return 0;
4257}
4258EOF
4259if compile_prog "" "" ; then
4260 valgrind_h=yes
4261fi
4262
4263########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004264# check if environ is declared
4265
4266has_environ=no
4267cat > $TMPC << EOF
4268#include <unistd.h>
4269int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004270 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004271 return 0;
4272}
4273EOF
4274if compile_prog "" "" ; then
4275 has_environ=yes
4276fi
4277
Richard Henderson76a347e2012-12-28 14:17:02 -08004278########################################
4279# check if cpuid.h is usable.
4280
4281cpuid_h=no
4282cat > $TMPC << EOF
4283#include <cpuid.h>
4284int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004285 unsigned a, b, c, d;
4286 int max = __get_cpuid_max(0, 0);
4287
4288 if (max >= 1) {
4289 __cpuid(1, a, b, c, d);
4290 }
4291
4292 if (max >= 7) {
4293 __cpuid_count(7, 0, a, b, c, d);
4294 }
4295
4296 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004297}
4298EOF
4299if compile_prog "" "" ; then
4300 cpuid_h=yes
4301fi
4302
Richard Hendersonf5401662013-02-16 12:46:59 -08004303########################################
4304# check if __[u]int128_t is usable.
4305
4306int128=no
4307cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004308#if defined(__clang_major__) && defined(__clang_minor__)
4309# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4310# error __int128_t does not work in CLANG before 3.2
4311# endif
4312#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004313__int128_t a;
4314__uint128_t b;
4315int main (void) {
4316 a = a + b;
4317 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004318 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004319 return 0;
4320}
4321EOF
4322if compile_prog "" "" ; then
4323 int128=yes
4324fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004325
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004326########################################
4327# check if getauxval is available.
4328
4329getauxval=no
4330cat > $TMPC << EOF
4331#include <sys/auxv.h>
4332int main(void) {
4333 return getauxval(AT_HWCAP) == 0;
4334}
4335EOF
4336if compile_prog "" "" ; then
4337 getauxval=yes
4338fi
4339
John Snowfd0e6052015-03-25 18:57:39 -04004340########################################
4341# check if ccache is interfering with
4342# semantic analysis of macros
4343
4344ccache_cpp2=no
4345cat > $TMPC << EOF
4346static const int Z = 1;
4347#define fn() ({ Z; })
4348#define TAUT(X) ((X) == Z)
4349#define PAREN(X, Y) (X == Y)
4350#define ID(X) (X)
4351int main(int argc, char *argv[])
4352{
4353 int x = 0, y = 0;
4354 x = ID(x);
4355 x = fn();
4356 fn();
4357 if (PAREN(x, y)) return 0;
4358 if (TAUT(Z)) return 0;
4359 return 0;
4360}
4361EOF
4362
4363if ! compile_object "-Werror"; then
4364 ccache_cpp2=yes
4365fi
4366
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304367##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004368# End of CC checks
4369# After here, no more $cc or $ld runs
4370
Blue Swirl1d728c32012-05-01 18:45:39 +00004371if test "$gcov" = "yes" ; then
4372 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4373 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4374elif test "$debug" = "no" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004375 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004376fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004377
Peter Lieven6542aa92014-02-03 10:26:13 +01004378##########################################
4379# Do we have libnfs
4380if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004381 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004382 libnfs="yes"
4383 libnfs_libs=$($pkg_config --libs libnfs)
4384 LIBS="$LIBS $libnfs_libs"
4385 else
4386 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004387 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004388 fi
4389 libnfs="no"
4390 fi
4391fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004392
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004393# Disable zero malloc errors for official releases unless explicitly told to
4394# enable/disable
4395if test -z "$zero_malloc" ; then
4396 if test "$z_version" = "50" ; then
4397 zero_malloc="no"
4398 else
4399 zero_malloc="yes"
4400 fi
4401fi
4402
Peter Maydell6ca026c2012-07-18 15:10:18 +01004403# Now we've finished running tests it's OK to add -Werror to the compiler flags
4404if test "$werror" = "yes"; then
4405 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4406fi
4407
Juan Quintelae86ecd42009-08-03 14:45:59 +02004408if test "$solaris" = "no" ; then
4409 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004410 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004411 fi
4412fi
4413
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004414# test if pod2man has --utf8 option
4415if pod2man --help | grep -q utf8; then
4416 POD2MAN="pod2man --utf8"
4417else
4418 POD2MAN="pod2man"
4419fi
4420
Blue Swirl952afb72010-09-19 08:36:34 +00004421# Use ASLR, no-SEH and DEP if available
4422if test "$mingw32" = "yes" ; then
4423 for flag in --dynamicbase --no-seh --nxcompat; do
4424 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4425 LDFLAGS="-Wl,$flag $LDFLAGS"
4426 fi
4427 done
4428fi
4429
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004430qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004431qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004432qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004433qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004434
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004435tools=""
4436if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004437 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004438 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4439 tools="qemu-nbd\$(EXESUF) $tools"
4440 fi
4441fi
4442if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304443 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004444 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4445 virtfs=yes
4446 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4447 else
4448 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004449 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304450 fi
Andreas Färber17500372012-05-01 01:12:03 +02004451 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004452 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304453 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004454fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004455
4456# Probe for guest agent support/options
4457
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004458if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004459 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Roth48ff7a62011-07-20 15:19:37 -05004460 tools="qemu-ga\$(EXESUF) $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004461 guest_agent=yes
4462 elif [ "$guest_agent" != yes ]; then
4463 guest_agent=no
4464 else
4465 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004466 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004467fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004468
Michael Roth9d6bc272015-08-26 10:49:13 -05004469# Guest agent Window MSI package
4470
4471if test "$guest_agent" != yes; then
4472 if test "$guest_agent_msi" = yes; then
4473 error_exit "MSI guest agent package requires guest agent enabled"
4474 fi
4475 guest_agent_msi=no
4476elif test "$mingw32" != "yes"; then
4477 if test "$guest_agent_msi" = "yes"; then
4478 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4479 fi
4480 guest_agent_msi=no
4481elif ! has wixl; then
4482 if test "$guest_agent_msi" = "yes"; then
4483 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4484 fi
4485 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004486else
4487 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4488 # disabled explicitly
4489 if test "$guest_agent_msi" != "no"; then
4490 guest_agent_msi=yes
4491 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004492fi
4493
Michael Roth1a349042015-08-26 11:14:31 -05004494if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004495 if test "$guest_agent_with_vss" = "yes"; then
4496 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4497 fi
4498
4499 if test "$QEMU_GA_MANUFACTURER" = ""; then
4500 QEMU_GA_MANUFACTURER=QEMU
4501 fi
4502
4503 if test "$QEMU_GA_DISTRO" = ""; then
4504 QEMU_GA_DISTRO=Linux
4505 fi
4506
4507 if test "$QEMU_GA_VERSION" = ""; then
4508 QEMU_GA_VERSION=`cat $source_path/VERSION`
4509 fi
4510
4511 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4512
4513 case "$cpu" in
4514 x86_64)
4515 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4516 ;;
4517 i386)
4518 QEMU_GA_MSI_ARCH="-D Arch=32"
4519 ;;
4520 *)
4521 error_exit "CPU $cpu not supported for building installation package"
4522 ;;
4523 esac
4524fi
4525
Paolo Bonzinica35f782010-05-26 16:08:29 +02004526# Mac OS X ships with a broken assembler
4527roms=
4528if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4529 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4530 "$softmmu" = yes ; then
4531 roms="optionrom"
4532fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004533if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004534 roms="$roms spapr-rtas"
4535fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004536
Christian Borntraeger9933c302013-04-23 01:23:03 +00004537if test "$cpu" = "s390x" ; then
4538 roms="$roms s390-ccw"
4539fi
4540
Richard Henderson964c6fa2013-06-21 19:10:16 -07004541# Probe for the need for relocating the user-only binary.
4542if test "$pie" = "no" ; then
4543 textseg_addr=
4544 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004545 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4546 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004547 textseg_addr=0x60000000
4548 ;;
4549 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004550 # A 256M aligned address, high in the address space, with enough
4551 # room for the code_gen_buffer above it before the stack.
4552 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004553 ;;
4554 esac
4555 if [ -n "$textseg_addr" ]; then
4556 cat > $TMPC <<EOF
4557 int main(void) { return 0; }
4558EOF
4559 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4560 if ! compile_prog "" "$textseg_ldflags"; then
4561 # In case ld does not support -Ttext-segment, edit the default linker
4562 # script via sed to set the .text start addr. This is needed on FreeBSD
4563 # at least.
4564 $ld --verbose | sed \
4565 -e '1,/==================================================/d' \
4566 -e '/==================================================/,$d' \
4567 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4568 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4569 textseg_ldflags="-Wl,-T../config-host.ld"
4570 fi
4571 fi
4572fi
4573
Jan Kiszka50e12062014-10-02 10:03:55 +02004574# prepend pixman and ftd flags after all config tests are done
4575QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4576libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004577
bellard43ce4df2003-06-09 19:53:12 +00004578echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004579echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004580echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004581echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004582echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004583echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004584echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004585echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004586if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004587echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004588echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004589echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004590else
4591echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004592echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004593fi
bellard5a671352003-10-01 00:13:48 +00004594echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004595echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004596echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004597echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004598echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004599echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004600echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004601echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004602echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004603echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004604echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004605echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004606if test "$slirp" = "yes" ; then
4607 echo "smbd $smbd"
4608fi
Fam Zheng17969262014-02-10 14:48:56 +08004609echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004610echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004611echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004612echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004613echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004614echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004615echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004616echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004617echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004618echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004619if test "$darwin" = "yes" ; then
4620 echo "Cocoa support $cocoa"
4621fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004622echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004623echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004624echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004625echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004626echo "GNUTLS support $gnutls"
4627echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004628echo "GNUTLS gcrypt $gnutls_gcrypt"
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004629echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004630echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004631echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004632echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004633echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004634echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004635echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004636echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004637echo "Block whitelist (rw) $block_drv_rw_whitelist"
4638echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304639echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004640echo "VNC support $vnc"
4641if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004642 echo "VNC SASL support $vnc_sasl"
4643 echo "VNC JPEG support $vnc_jpeg"
4644 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004645fi
blueswir131422552007-04-16 18:27:06 +00004646if test -n "$sparc_cpu"; then
4647 echo "Target Sparc Arch $sparc_cpu"
4648fi
aliguorie37630c2009-04-22 15:19:10 +00004649echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004650if test "$xen" = "yes" ; then
4651 echo "xen ctrl version $xen_ctrl_version"
4652fi
aurel322e4d9fb2008-04-08 06:01:02 +00004653echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004654echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004655echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004656echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004657echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004658echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004659echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004660echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004661echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004662echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004663echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004664echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004665echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004666echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004667echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004668echo "madvise $madvise"
4669echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004670echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004671echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004672echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004673echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004674echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004675echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004676if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004677echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004678fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004679if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004680echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004681else
4682echo "spice support $spice"
4683fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004684echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004685echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004686echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004687echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004688echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004689echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004690echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004691echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004692echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004693echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004694echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004695echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004696echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004697echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004698echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304699echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004700echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004701echo "gcov $gcov_tool"
4702echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004703echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004704echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004705echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004706echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004707echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004708echo "lzo support $lzo"
4709echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004710echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004711echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004712echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004713echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004714
Stefan Weil1ba16962011-07-29 22:40:45 +02004715if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004716echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004717fi
bellard97a847b2003-08-10 21:36:04 +00004718
Juan Quintela98ec69a2009-07-16 18:34:18 +02004719config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004720
Stefan Weildbd99ae2013-01-01 18:33:44 +01004721echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4722
Juan Quintela98ec69a2009-07-16 18:34:18 +02004723echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004724echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004725
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004726echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004727echo "prefix=$prefix" >> $config_host_mak
4728echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004729echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004730echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004731echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004732echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004733echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004734echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004735echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4736echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004737echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004738if test "$mingw32" = "no" ; then
4739 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4740fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004741echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004742echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4743echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004744echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004745echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004746
Juan Quintela98ec69a2009-07-16 18:34:18 +02004747echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004748
aurel32f8393942009-04-13 18:45:38 +00004749if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004750 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004751fi
aliguori1625af82009-04-05 17:41:02 +00004752if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004753 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004754fi
bellard7d132992003-03-06 23:23:54 +00004755if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004756 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004757fi
bellard67b915a2004-03-31 23:37:16 +00004758if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004759 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004760 rc_version=`cat $source_path/VERSION`
4761 version_major=${rc_version%%.*}
4762 rc_version=${rc_version#*.}
4763 version_minor=${rc_version%%.*}
4764 rc_version=${rc_version#*.}
4765 version_subminor=${rc_version%%.*}
4766 version_micro=0
4767 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4768 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004769 if test "$guest_agent_with_vss" = "yes" ; then
4770 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004771 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004772 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4773 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004774 if test "$guest_agent_ntddscsi" = "yes" ; then
4775 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4776 fi
Michael Roth1a349042015-08-26 11:14:31 -05004777 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004778 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4779 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4780 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4781 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4782 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4783 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4784 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4785 fi
pbrook210fa552007-02-27 21:04:49 +00004786else
Juan Quintela35f4df22009-07-27 16:13:07 +02004787 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004788fi
blueswir1128ab2f2008-08-15 18:33:42 +00004789
Mark McLoughlindffcb712009-10-22 17:49:11 +01004790if test "$linux" = "yes" ; then
4791 echo "CONFIG_LINUX=y" >> $config_host_mak
4792fi
4793
bellard83fb7ad2004-07-05 21:25:26 +00004794if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004795 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004796fi
malcb29fe3e2008-11-18 01:42:22 +00004797
4798if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004799 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004800fi
4801
bellardec530c82006-04-25 22:36:06 +00004802if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004803 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004804 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004805 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004806 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004807 fi
bellardec530c82006-04-25 22:36:06 +00004808fi
Andreas Färber179cf402010-09-20 00:50:43 +02004809if test "$haiku" = "yes" ; then
4810 echo "CONFIG_HAIKU=y" >> $config_host_mak
4811fi
bellard97a847b2003-08-10 21:36:04 +00004812if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004813 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004814fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004815if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004816 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004817fi
bellardc20709a2004-04-21 23:27:19 +00004818if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004819 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004820 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004821fi
ths8a16d272008-07-19 09:56:24 +00004822if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004823 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004824fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004825if test "$netmap" = "yes" ; then
4826 echo "CONFIG_NETMAP=y" >> $config_host_mak
4827fi
Gonglei015a33b2014-07-01 20:58:08 +08004828if test "$l2tpv3" = "yes" ; then
4829 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4830fi
Corey Bryant47e98652012-01-26 09:42:26 -05004831if test "$cap_ng" = "yes" ; then
4832 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4833fi
Juan Quintela2358a492009-07-27 16:13:25 +02004834echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004835for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004836 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004837 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004838done
Juan Quintela67f86e82009-08-03 14:46:59 +02004839if test "$audio_pt_int" = "yes" ; then
4840 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4841fi
malcd5631632009-10-10 01:13:41 +04004842if test "$audio_win_int" = "yes" ; then
4843 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4844fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004845echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4846echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004847if test "$vnc" = "yes" ; then
4848 echo "CONFIG_VNC=y" >> $config_host_mak
4849fi
aliguori2f9606b2009-03-06 20:27:28 +00004850if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004851 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004852fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004853if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004854 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004855fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004856if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004857 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004858fi
aliguori76655d62009-03-06 20:27:37 +00004859if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004860 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004861fi
Stefan Weilee682d22009-10-01 20:10:37 +02004862if test "$uuid" = "yes" ; then
4863 echo "CONFIG_UUID=y" >> $config_host_mak
4864fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004865if test "$xfs" = "yes" ; then
4866 echo "CONFIG_XFS=y" >> $config_host_mak
4867fi
pbrookb1a550a2006-04-16 13:28:56 +00004868qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004869echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004870echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004871echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004872echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004873if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004874 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004875fi
Fam Zheng17969262014-02-10 14:48:56 +08004876if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004877 # $shacmd can generate a hash started with digit, which the compiler doesn't
4878 # like as an symbol. So prefix it with an underscore
4879 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004880 echo "CONFIG_MODULES=y" >> $config_host_mak
4881fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004882if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004883 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004884 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004885 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004886fi
4887if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004888 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004889fi
4890if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004891 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004892fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004893if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004894 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004895fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004896if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004897 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004898fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004899if test "$accept4" = "yes" ; then
4900 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4901fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304902if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004903 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304904fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004905if test "$eventfd" = "yes" ; then
4906 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4907fi
Marc-André Lureau751bcc32015-10-09 17:17:16 +02004908if test "$memfd" = "yes" ; then
4909 echo "CONFIG_MEMFD=y" >> $config_host_mak
4910fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004911if test "$fallocate" = "yes" ; then
4912 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4913fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004914if test "$fallocate_punch_hole" = "yes" ; then
4915 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4916fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004917if test "$fallocate_zero_range" = "yes" ; then
4918 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4919fi
Kevin Wolfed911432014-09-29 17:12:59 +02004920if test "$posix_fallocate" = "yes" ; then
4921 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4922fi
Peter Maydellc727f472011-01-06 11:05:10 +00004923if test "$sync_file_range" = "yes" ; then
4924 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4925fi
Peter Maydelldace20d2011-01-10 13:11:24 +00004926if test "$fiemap" = "yes" ; then
4927 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4928fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004929if test "$dup3" = "yes" ; then
4930 echo "CONFIG_DUP3=y" >> $config_host_mak
4931fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01004932if test "$ppoll" = "yes" ; then
4933 echo "CONFIG_PPOLL=y" >> $config_host_mak
4934fi
Alex Blighcd758dd2013-08-21 16:02:44 +01004935if test "$prctl_pr_set_timerslack" = "yes" ; then
4936 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4937fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00004938if test "$epoll" = "yes" ; then
4939 echo "CONFIG_EPOLL=y" >> $config_host_mak
4940fi
4941if test "$epoll_create1" = "yes" ; then
4942 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4943fi
4944if test "$epoll_pwait" = "yes" ; then
4945 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4946fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004947if test "$sendfile" = "yes" ; then
4948 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4949fi
Riku Voipio51834342014-06-22 11:25:42 +01004950if test "$timerfd" = "yes" ; then
4951 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4952fi
Riku Voipio9af5c902014-08-12 15:58:57 +03004953if test "$setns" = "yes" ; then
4954 echo "CONFIG_SETNS=y" >> $config_host_mak
4955fi
aurel323b3f24a2009-04-15 16:12:13 +00004956if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004957 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00004958fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00004959if test "$inotify1" = "yes" ; then
4960 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4961fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004962if test "$byteswap_h" = "yes" ; then
4963 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4964fi
4965if test "$bswap_h" = "yes" ; then
4966 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4967fi
Alexander Graf769ce762009-05-11 17:41:42 +02004968if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004969 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02004970 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004971 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02004972fi
aurel322e4d9fb2008-04-08 06:01:02 +00004973if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004974 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00004975fi
balrogfb599c92008-09-28 23:49:55 +00004976if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004977 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02004978 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00004979fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01004980if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03004981 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4982fi
Anthony Liguorie18df142011-07-19 14:50:29 -05004983echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004984if test "$gtk" = "yes" ; then
4985 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004986 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004987 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004988 if test "$gtk_gl" = "yes" ; then
4989 echo "CONFIG_GTK_GL=y" >> $config_host_mak
4990 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004991fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004992if test "$gnutls" = "yes" ; then
4993 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4994fi
4995if test "$gnutls_hash" = "yes" ; then
4996 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4997fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004998if test "$gnutls_gcrypt" = "yes" ; then
4999 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
5000fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005001if test "$gnutls_nettle" = "yes" ; then
5002 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02005003 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01005004fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005005if test "$tasn1" = "yes" ; then
5006 echo "CONFIG_TASN1=y" >> $config_host_mak
5007fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01005008if test "$vte" = "yes" ; then
5009 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06005010 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5011fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02005012if test "$virglrenderer" = "yes" ; then
5013 echo "CONFIG_VIRGL=y" >> $config_host_mak
5014 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5015 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5016fi
aliguorie37630c2009-04-22 15:19:10 +00005017if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02005018 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005019 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00005020fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005021if test "$linux_aio" = "yes" ; then
5022 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5023fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005024if test "$attr" = "yes" ; then
5025 echo "CONFIG_ATTR=y" >> $config_host_mak
5026fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005027if test "$libattr" = "yes" ; then
5028 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5029fi
Meador Inge983eef52012-02-24 14:00:42 +05305030if test "$virtfs" = "yes" ; then
5031 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005032fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005033if test "$vhost_scsi" = "yes" ; then
5034 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5035fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005036if test "$vhost_net" = "yes" ; then
5037 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5038fi
ths77755342008-11-27 15:45:16 +00005039if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005040 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005041fi
aliguoribf9298b2008-12-05 20:05:26 +00005042if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005043 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005044fi
aliguoriceb42de2009-04-07 18:43:28 +00005045if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005046 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005047fi
aurel32f652e6a2008-12-16 10:43:48 +00005048if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005049 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005050fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005051if test "$signalfd" = "yes" ; then
5052 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5053fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005054if test "$tcg_interpreter" = "yes" ; then
5055 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5056fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005057if test "$fdatasync" = "yes" ; then
5058 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5059fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005060if test "$madvise" = "yes" ; then
5061 echo "CONFIG_MADVISE=y" >> $config_host_mak
5062fi
5063if test "$posix_madvise" = "yes" ; then
5064 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5065fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005066if test "$sigev_thread_id" = "yes" ; then
5067 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5068fi
bellard97a847b2003-08-10 21:36:04 +00005069
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005070if test "$spice" = "yes" ; then
5071 echo "CONFIG_SPICE=y" >> $config_host_mak
5072fi
5073
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005074if test "$smartcard" = "yes" ; then
5075 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005076fi
5077
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005078if test "$libusb" = "yes" ; then
5079 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5080fi
5081
Hans de Goede69354a82011-07-19 11:04:10 +02005082if test "$usb_redir" = "yes" ; then
5083 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5084fi
5085
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005086if test "$opengl" = "yes" ; then
5087 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005088 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005089 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005090fi
5091
qiaonuohan607dacd2014-02-18 14:11:30 +08005092if test "$lzo" = "yes" ; then
5093 echo "CONFIG_LZO=y" >> $config_host_mak
5094fi
5095
5096if test "$snappy" = "yes" ; then
5097 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5098fi
5099
Peter Wu6b383c02015-01-06 18:48:14 +01005100if test "$bzip2" = "yes" ; then
5101 echo "CONFIG_BZIP2=y" >> $config_host_mak
5102 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5103fi
5104
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005105if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005106 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005107 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5108 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005109fi
5110
Peter Lieven6542aa92014-02-03 10:26:13 +01005111if test "$libnfs" = "yes" ; then
5112 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5113fi
5114
Eduardo Otubof7945732012-08-14 18:44:05 -03005115if test "$seccomp" = "yes"; then
5116 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5117fi
5118
bellard83fb7ad2004-07-05 21:25:26 +00005119# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005120if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005121 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005122fi
5123
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005124if test "$zero_malloc" = "yes" ; then
5125 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5126fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005127if test "$localtime_r" = "yes" ; then
5128 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5129fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005130if test "$qom_cast_debug" = "yes" ; then
5131 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5132fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005133if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005134 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005135 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5136 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005137fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005138
Peter Maydell7c2acc72013-04-08 12:11:27 +01005139echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005140if test "$coroutine_pool" = "yes" ; then
5141 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5142else
5143 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5144fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305145
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305146if test "$open_by_handle_at" = "yes" ; then
5147 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5148fi
5149
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305150if test "$linux_magic_h" = "yes" ; then
5151 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5152fi
5153
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005154if test "$pragma_diagnostic_available" = "yes" ; then
5155 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005156fi
5157
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005158if test "$valgrind_h" = "yes" ; then
5159 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5160fi
5161
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005162if test "$has_environ" = "yes" ; then
5163 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5164fi
5165
Richard Henderson76a347e2012-12-28 14:17:02 -08005166if test "$cpuid_h" = "yes" ; then
5167 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5168fi
5169
Richard Hendersonf5401662013-02-16 12:46:59 -08005170if test "$int128" = "yes" ; then
5171 echo "CONFIG_INT128=y" >> $config_host_mak
5172fi
5173
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005174if test "$getauxval" = "yes" ; then
5175 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5176fi
5177
Bharata B Raoeb100392012-09-24 14:42:45 +05305178if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005179 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005180 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5181 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305182fi
5183
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305184if test "$glusterfs_discard" = "yes" ; then
5185 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5186fi
5187
Bharata B Rao7c815372013-12-21 14:51:25 +05305188if test "$glusterfs_zerofill" = "yes" ; then
5189 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5190fi
5191
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005192if test "$archipelago" = "yes" ; then
5193 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5194 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5195fi
5196
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005197if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005198 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005199 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5200 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005201fi
5202
Jeff Cody4f18b782013-10-30 10:44:39 -04005203if test "$vhdx" = "yes" ; then
5204 echo "CONFIG_VHDX=y" >> $config_host_mak
5205fi
5206
blueswir168063642008-11-22 21:03:55 +00005207# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005208if test "$libusb" = "yes"; then
5209 echo "HOST_USB=libusb legacy" >> $config_host_mak
5210else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005211 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005212fi
blueswir168063642008-11-22 21:03:55 +00005213
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005214# TPM passthrough support?
5215if test "$tpm" = "yes"; then
5216 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5217 if test "$tpm_passthrough" = "yes"; then
5218 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5219 fi
5220fi
5221
Lluís Vilanova5b808272014-05-27 15:02:14 +02005222echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5223if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005224 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305225fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005226if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005227 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5228 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005229 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005230fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005231if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005232 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5233fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005234if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005235 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5236fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005237if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005238 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5239 if test "$trace_backend_stap" = "yes" ; then
5240 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5241 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005242fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005243if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005244 if test "$linux" = "yes" ; then
5245 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005246 else
Stewart Smith21684af2014-01-24 12:39:10 +11005247 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005248 fi
5249fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005250echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5251
Michael R. Hines2da776d2013-07-22 10:01:54 -04005252if test "$rdma" = "yes" ; then
5253 echo "CONFIG_RDMA=y" >> $config_host_mak
5254fi
5255
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005256# Hold two types of flag:
5257# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5258# a thread we have a handle to
5259# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5260# platform
5261if test "$pthread_setname_np" = "yes" ; then
5262 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5263 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5264fi
5265
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005266if test "$tcg_interpreter" = "yes"; then
5267 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5268elif test "$ARCH" = "sparc64" ; then
5269 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5270elif test "$ARCH" = "s390x" ; then
5271 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005272elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005273 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005274elif test "$ARCH" = "ppc64" ; then
5275 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005276else
5277 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5278fi
5279QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5280
Juan Quintela98ec69a2009-07-16 18:34:18 +02005281echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005282echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005283echo "MAKE=$make" >> $config_host_mak
5284echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005285echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5286echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005287if test -n "$libtool"; then
5288 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5289 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5290else
5291 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5292 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5293fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005294echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005295echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005296if $iasl -h > /dev/null 2>&1; then
5297 echo "IASL=$iasl" >> $config_host_mak
5298fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005299echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005300echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005301echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005302echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005303echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005304echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005305echo "AS=$as" >> $config_host_mak
5306echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005307echo "OBJCOPY=$objcopy" >> $config_host_mak
5308echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005309echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005310echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005311echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005312echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005313echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005314echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005315echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005316if test "$sparse" = "yes" ; then
5317 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005318 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005319 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005320 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5321 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5322fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005323if test "$cross_prefix" != ""; then
5324 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5325else
5326 echo "AUTOCONF_HOST := " >> $config_host_mak
5327fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005328echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005329echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005330echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005331echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005332echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005333echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005334echo "DSOSUF=$DSOSUF" >> $config_host_mak
5335echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005336echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005337echo "TEST_LIBS=$test_libs" >> $config_host_mak
5338echo "TEST_CFLAGS=$test_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005339echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005340echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005341if test "$gcov" = "yes" ; then
5342 echo "CONFIG_GCOV=y" >> $config_host_mak
5343 echo "GCOV=$gcov_tool" >> $config_host_mak
5344fi
Juan Quintela804edf22009-07-27 16:12:49 +02005345
Peter Maydell6efd7512011-11-30 11:59:04 +00005346# use included Linux headers
5347if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005348 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005349 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005350 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005351 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005352 ;;
5353 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005354 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005355 ;;
5356 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005357 linux_arch=s390
5358 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005359 aarch64)
5360 linux_arch=arm64
5361 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005362 mips64)
5363 linux_arch=mips
5364 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005365 *)
5366 # For most CPUs the kernel architecture name and QEMU CPU name match.
5367 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005368 ;;
5369 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005370 # For non-KVM architectures we will not have asm headers
5371 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5372 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5373 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005374fi
5375
bellard1d14ffa2005-10-30 18:58:22 +00005376for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005377target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005378config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005379target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005380target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005381
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005382case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005383 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 +02005384 target_bigendian=yes
5385 ;;
5386esac
bellard97a847b2003-08-10 21:36:04 +00005387target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005388target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005389target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005390target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005391case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005392 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005393 target_softmmu="yes"
5394 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005395 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005396 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005397 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005398 fi
pbrook9e407a82007-05-26 16:38:53 +00005399 target_user_only="yes"
5400 target_linux_user="yes"
5401 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005402 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005403 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005404 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005405 fi
blueswir184778502008-10-26 20:33:16 +00005406 target_user_only="yes"
5407 target_bsd_user="yes"
5408 ;;
pbrook9e407a82007-05-26 16:38:53 +00005409 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005410 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005411 exit 1
5412 ;;
5413esac
ths831b7822007-01-18 20:06:33 +00005414
bellard97a847b2003-08-10 21:36:04 +00005415mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005416echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005417
pbrooke5fe0c52006-06-11 13:32:59 +00005418bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005419interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005420gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005421
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005422TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005423TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005424TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005425
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005426case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005427 i386)
aurel322408a522008-04-20 20:19:44 +00005428 ;;
5429 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005430 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005431 ;;
5432 alpha)
aurel322408a522008-04-20 20:19:44 +00005433 ;;
5434 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005435 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005436 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005437 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005438 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005439 aarch64)
5440 TARGET_BASE_ARCH=arm
5441 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005442 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 +01005443 ;;
aurel322408a522008-04-20 20:19:44 +00005444 cris)
aurel322408a522008-04-20 20:19:44 +00005445 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005446 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005447 ;;
aurel322408a522008-04-20 20:19:44 +00005448 m68k)
aurel322408a522008-04-20 20:19:44 +00005449 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005450 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005451 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005452 microblaze|microblazeel)
5453 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005454 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005455 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005456 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005457 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005458 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005459 ;;
5460 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005461 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005462 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005463 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005464 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005465 ;;
5466 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005467 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005468 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005469 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005470 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005471 moxie)
5472 ;;
Jia Liue67db062012-07-20 15:50:39 +08005473 or32)
5474 TARGET_ARCH=openrisc
5475 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005476 ;;
aurel322408a522008-04-20 20:19:44 +00005477 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005478 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005479 ;;
5480 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005481 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005482 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005483 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005484 ;;
5485 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005486 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005487 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005488 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005489 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005490 ppc64le)
5491 TARGET_ARCH=ppc64
5492 TARGET_BASE_ARCH=ppc
5493 TARGET_ABI_DIR=ppc
5494 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5495 ;;
aurel322408a522008-04-20 20:19:44 +00005496 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005497 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005498 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005499 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005500 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005501 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005502 ;;
5503 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005504 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005505 bflt="yes"
5506 ;;
5507 sparc)
aurel322408a522008-04-20 20:19:44 +00005508 ;;
5509 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005510 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005511 ;;
5512 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005513 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005514 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005515 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005516 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005517 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005518 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005519 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
Alexander Graf24e804ec2009-12-05 12:44:22 +01005520 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005521 tilegx)
5522 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005523 tricore)
5524 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005525 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005526 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005527 xtensa|xtensaeb)
5528 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005529 ;;
aurel322408a522008-04-20 20:19:44 +00005530 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005531 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005532 ;;
5533esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005534# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5535if [ "$TARGET_BASE_ARCH" = "" ]; then
5536 TARGET_BASE_ARCH=$TARGET_ARCH
5537fi
5538
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005539symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5540
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005541upper() {
5542 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5543}
5544
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005545target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005546echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005547echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005548echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005549if [ "$TARGET_ABI_DIR" = "" ]; then
5550 TARGET_ABI_DIR=$TARGET_ARCH
5551fi
Juan Quintela25be2102009-10-07 02:41:00 +02005552echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005553if [ "$HOST_VARIANT_DIR" != "" ]; then
5554 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5555fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005556case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005557 i386|x86_64)
5558 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005559 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005560 if test "$xen_pci_passthrough" = yes; then
5561 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5562 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005563 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005564 ;;
5565 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005566esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005567case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005568 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005569 # Make sure the target and host cpus are compatible
5570 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005571 \( "$target_name" = "$cpu" -o \
5572 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5573 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5574 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5575 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005576 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005577 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005578 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5579 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5580 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005581 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005582 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005583 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5584 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005585 fi
5586esac
bellardde83cd02003-06-15 20:25:43 +00005587if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005588 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005589fi
5590if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005591 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005592fi
bellard997344f2003-10-27 21:10:39 +00005593if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005594 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005595 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005596fi
ths831b7822007-01-18 20:06:33 +00005597if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005598 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005599fi
pbrook56aebc82008-10-11 17:55:29 +00005600list=""
5601if test ! -z "$gdb_xml_files" ; then
5602 for x in $gdb_xml_files; do
5603 list="$list $source_path/gdb-xml/$x"
5604 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005605 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005606fi
bellardde83cd02003-06-15 20:25:43 +00005607
pbrooke5fe0c52006-06-11 13:32:59 +00005608if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005609 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005610fi
blueswir184778502008-10-26 20:33:16 +00005611if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005612 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005613fi
bellard5b0753e2005-03-01 21:37:28 +00005614
Juan Quintela4afddb52009-08-03 14:46:45 +02005615# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005616
Juan Quintela4afddb52009-08-03 14:46:45 +02005617cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005618ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005619
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005620disas_config() {
5621 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5622 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5623}
5624
Juan Quintela64656022009-08-03 14:46:53 +02005625for i in $ARCH $TARGET_BASE_ARCH ; do
5626 case "$i" in
5627 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005628 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005629 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005630 aarch64)
5631 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005632 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005633 fi
5634 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005635 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005636 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005637 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005638 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005639 fi
Juan Quintela64656022009-08-03 14:46:53 +02005640 ;;
5641 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005642 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005643 ;;
5644 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005645 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005646 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005647 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005648 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005649 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005650 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005651 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005652 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005653 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005654 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005655 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005656 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005657 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005658 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005659 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005660 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005661 ;;
5662 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005663 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005664 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005665 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005666 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005667 ;;
Jia Liue67db062012-07-20 15:50:39 +08005668 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005669 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005670 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005671 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005672 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005673 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005674 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005675 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005676 ;;
5677 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005678 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005679 ;;
5680 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005681 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005682 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005683 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005684 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005685 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005686 esac
5687done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005688if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005689 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005690fi
Juan Quintela64656022009-08-03 14:46:53 +02005691
Juan Quintela6ee71262009-08-03 14:46:47 +02005692case "$ARCH" in
5693alpha)
5694 # Ensure there's only a single GP
5695 cflags="-msmall-data $cflags"
5696;;
5697esac
5698
Juan Quintelad02c1db2009-08-03 14:46:50 +02005699if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005700 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005701 if test "$target_linux_user" = "yes" ; then
5702 cflags="-p $cflags"
5703 ldflags="-p $ldflags"
5704 fi
5705 if test "$target_softmmu" = "yes" ; then
5706 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005707 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005708 fi
5709fi
5710
Juan Quintela9b8e1112009-08-03 14:46:46 +02005711if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005712 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005713fi
Juan Quintelafa282482009-07-22 22:37:39 +02005714
Juan Quintela25be2102009-10-07 02:41:00 +02005715echo "LDFLAGS+=$ldflags" >> $config_target_mak
5716echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005717
bellard97a847b2003-08-10 21:36:04 +00005718done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005719
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005720if [ "$pixman" = "internal" ]; then
5721 echo "config-host.h: subdir-pixman" >> $config_host_mak
5722fi
5723
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005724if [ "$dtc_internal" = "yes" ]; then
5725 echo "config-host.h: subdir-dtc" >> $config_host_mak
5726fi
5727
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005728if test "$numa" = "yes"; then
5729 echo "CONFIG_NUMA=y" >> $config_host_mak
5730fi
5731
John Snowfd0e6052015-03-25 18:57:39 -04005732if test "$ccache_cpp2" = "yes"; then
5733 echo "export CCACHE_CPP2=y" >> $config_host_mak
5734fi
5735
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005736# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005737DIRS="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 +04005738DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005739DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005740DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005741DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005742FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5743FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005744FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005745FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005746FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005747FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005748FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005749FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005750for bios_file in \
5751 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005752 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005753 $source_path/pc-bios/*.rom \
5754 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005755 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005756 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005757 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005758 $source_path/pc-bios/palcode-*
5759do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005760 FILES="$FILES pc-bios/`basename $bios_file`"
5761done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005762for test_file in `find $source_path/tests/acpi-test-data -type f`
5763do
5764 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5765done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005766mkdir -p $DIRS
5767for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005768 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005769 symlink "$source_path/$f" "$f"
5770 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005771done
Paul Brook1ad21342009-05-19 16:17:58 +01005772
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005773# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005774for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005775 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005776 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005777 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005778 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005779 echo "CC=$cc" >> $config_mak
5780 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005781 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005782 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005783 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005784 echo "LD=$ld" >> $config_mak
5785done
5786
Max Reitz76c75602014-05-24 23:24:56 +02005787# set up qemu-iotests in this build directory
5788iotests_common_env="tests/qemu-iotests/common.env"
5789iotests_check="tests/qemu-iotests/check"
5790
5791echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5792echo >> "$iotests_common_env"
5793echo "export PYTHON='$python'" >> "$iotests_common_env"
5794
5795if [ ! -e "$iotests_check" ]; then
5796 symlink "$source_path/$iotests_check" "$iotests_check"
5797fi
5798
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005799# Save the configure command line for later reuse.
5800cat <<EOD >config.status
5801#!/bin/sh
5802# Generated by configure.
5803# Run this file to recreate the current configuration.
5804# Compiler output produced by configure, useful for debugging
5805# configure, is in config.log if it exists.
5806EOD
5807printf "exec" >>config.status
5808printf " '%s'" "$0" "$@" >>config.status
5809echo >>config.status
5810chmod +x config.status
5811
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005812rm -r "$TMPDIR1"