blob: f08327e10e61f2660f7835f184dfd9929b75a1a0 [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
Ulrich Hechtd0927932009-09-17 20:22:14 +03003498# check for fallocate
3499fallocate=no
3500cat > $TMPC << EOF
3501#include <fcntl.h>
3502
3503int main(void)
3504{
3505 fallocate(0, 0, 0, 0);
3506 return 0;
3507}
3508EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003509if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003510 fallocate=yes
3511fi
3512
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01003513# check for fallocate hole punching
3514fallocate_punch_hole=no
3515cat > $TMPC << EOF
3516#include <fcntl.h>
3517#include <linux/falloc.h>
3518
3519int main(void)
3520{
3521 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3522 return 0;
3523}
3524EOF
3525if compile_prog "" "" ; then
3526 fallocate_punch_hole=yes
3527fi
3528
Denis V. Lunevb953f072015-01-30 11:42:14 +03003529# check that fallocate supports range zeroing inside the file
3530fallocate_zero_range=no
3531cat > $TMPC << EOF
3532#include <fcntl.h>
3533#include <linux/falloc.h>
3534
3535int main(void)
3536{
3537 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3538 return 0;
3539}
3540EOF
3541if compile_prog "" "" ; then
3542 fallocate_zero_range=yes
3543fi
3544
Kevin Wolfed911432014-09-29 17:12:59 +02003545# check for posix_fallocate
3546posix_fallocate=no
3547cat > $TMPC << EOF
3548#include <fcntl.h>
3549
3550int main(void)
3551{
3552 posix_fallocate(0, 0, 0);
3553 return 0;
3554}
3555EOF
3556if compile_prog "" "" ; then
3557 posix_fallocate=yes
3558fi
3559
Peter Maydellc727f472011-01-06 11:05:10 +00003560# check for sync_file_range
3561sync_file_range=no
3562cat > $TMPC << EOF
3563#include <fcntl.h>
3564
3565int main(void)
3566{
3567 sync_file_range(0, 0, 0, 0);
3568 return 0;
3569}
3570EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003571if compile_prog "" "" ; then
Peter Maydellc727f472011-01-06 11:05:10 +00003572 sync_file_range=yes
3573fi
3574
Peter Maydelldace20d2011-01-10 13:11:24 +00003575# check for linux/fiemap.h and FS_IOC_FIEMAP
3576fiemap=no
3577cat > $TMPC << EOF
3578#include <sys/ioctl.h>
3579#include <linux/fs.h>
3580#include <linux/fiemap.h>
3581
3582int main(void)
3583{
3584 ioctl(0, FS_IOC_FIEMAP, 0);
3585 return 0;
3586}
3587EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003588if compile_prog "" "" ; then
Peter Maydelldace20d2011-01-10 13:11:24 +00003589 fiemap=yes
3590fi
3591
Ulrich Hechtd0927932009-09-17 20:22:14 +03003592# check for dup3
3593dup3=no
3594cat > $TMPC << EOF
3595#include <unistd.h>
3596
3597int main(void)
3598{
3599 dup3(0, 0, 0);
3600 return 0;
3601}
3602EOF
Jan Kiszka78f5d722009-11-03 10:54:44 +01003603if compile_prog "" "" ; then
Ulrich Hechtd0927932009-09-17 20:22:14 +03003604 dup3=yes
3605fi
3606
Alex Bligh4e0c6522013-08-21 16:02:43 +01003607# check for ppoll support
3608ppoll=no
3609cat > $TMPC << EOF
3610#include <poll.h>
3611
3612int main(void)
3613{
3614 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3615 ppoll(&pfd, 1, 0, 0);
3616 return 0;
3617}
3618EOF
3619if compile_prog "" "" ; then
3620 ppoll=yes
3621fi
3622
Alex Blighcd758dd2013-08-21 16:02:44 +01003623# check for prctl(PR_SET_TIMERSLACK , ... ) support
3624prctl_pr_set_timerslack=no
3625cat > $TMPC << EOF
3626#include <sys/prctl.h>
3627
3628int main(void)
3629{
3630 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3631 return 0;
3632}
3633EOF
3634if compile_prog "" "" ; then
3635 prctl_pr_set_timerslack=yes
3636fi
3637
Peter Maydell3b6edd12011-02-15 18:35:05 +00003638# check for epoll support
3639epoll=no
3640cat > $TMPC << EOF
3641#include <sys/epoll.h>
3642
3643int main(void)
3644{
3645 epoll_create(0);
3646 return 0;
3647}
3648EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003649if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003650 epoll=yes
3651fi
3652
3653# epoll_create1 and epoll_pwait are later additions
3654# so we must check separately for their presence
3655epoll_create1=no
3656cat > $TMPC << EOF
3657#include <sys/epoll.h>
3658
3659int main(void)
3660{
Peter Maydell19e83f62011-04-26 16:56:40 +01003661 /* Note that we use epoll_create1 as a value, not as
3662 * a function being called. This is necessary so that on
3663 * old SPARC glibc versions where the function was present in
3664 * the library but not declared in the header file we will
3665 * fail the configure check. (Otherwise we will get a compiler
3666 * warning but not an error, and will proceed to fail the
3667 * qemu compile where we compile with -Werror.)
3668 */
Blue Swirlc075a722012-08-09 20:21:25 +00003669 return (int)(uintptr_t)&epoll_create1;
Peter Maydell3b6edd12011-02-15 18:35:05 +00003670}
3671EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003672if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003673 epoll_create1=yes
3674fi
3675
3676epoll_pwait=no
3677cat > $TMPC << EOF
3678#include <sys/epoll.h>
3679
3680int main(void)
3681{
3682 epoll_pwait(0, 0, 0, 0, 0);
3683 return 0;
3684}
3685EOF
Peter Maydell8fb03152012-04-04 17:03:15 +01003686if compile_prog "" "" ; then
Peter Maydell3b6edd12011-02-15 18:35:05 +00003687 epoll_pwait=yes
3688fi
3689
Peter Maydella8fd1ab2013-02-08 07:31:55 +00003690# check for sendfile support
3691sendfile=no
3692cat > $TMPC << EOF
3693#include <sys/sendfile.h>
3694
3695int main(void)
3696{
3697 return sendfile(0, 0, 0, 0);
3698}
3699EOF
3700if compile_prog "" "" ; then
3701 sendfile=yes
3702fi
3703
Riku Voipio51834342014-06-22 11:25:42 +01003704# check for timerfd support (glibc 2.8 and newer)
3705timerfd=no
3706cat > $TMPC << EOF
3707#include <sys/timerfd.h>
3708
3709int main(void)
3710{
3711 return(timerfd_create(CLOCK_REALTIME, 0));
3712}
3713EOF
3714if compile_prog "" "" ; then
3715 timerfd=yes
3716fi
3717
Riku Voipio9af5c902014-08-12 15:58:57 +03003718# check for setns and unshare support
3719setns=no
3720cat > $TMPC << EOF
3721#include <sched.h>
3722
3723int main(void)
3724{
3725 int ret;
3726 ret = setns(0, 0);
3727 ret = unshare(0);
3728 return ret;
3729}
3730EOF
3731if compile_prog "" "" ; then
3732 setns=yes
3733fi
3734
pbrookcc8ae6d2006-04-23 17:57:59 +00003735# Check if tools are available to build documentation.
Juan Quintelaa25dba12009-08-12 18:29:52 +02003736if test "$docs" != "no" ; then
Stefan Weil01668d92010-03-04 22:21:02 +01003737 if has makeinfo && has pod2man; then
Juan Quintelaa25dba12009-08-12 18:29:52 +02003738 docs=yes
Juan Quintela83a3ab82009-08-12 18:29:51 +02003739 else
Juan Quintelaa25dba12009-08-12 18:29:52 +02003740 if test "$docs" = "yes" ; then
Stewart Smith21684af2014-01-24 12:39:10 +11003741 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
Juan Quintela83a3ab82009-08-12 18:29:51 +02003742 fi
Juan Quintelaa25dba12009-08-12 18:29:52 +02003743 docs=no
Juan Quintela83a3ab82009-08-12 18:29:51 +02003744 fi
pbrookcc8ae6d2006-04-23 17:57:59 +00003745fi
3746
Stefan Weilf514f412009-10-11 12:44:07 +02003747# Search for bswap_32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003748byteswap_h=no
3749cat > $TMPC << EOF
3750#include <byteswap.h>
3751int main(void) { return bswap_32(0); }
3752EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003753if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003754 byteswap_h=yes
3755fi
3756
Stefan Weil75f13592013-01-05 12:17:38 +01003757# Search for bswap32 function
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003758bswap_h=no
3759cat > $TMPC << EOF
3760#include <sys/endian.h>
3761#include <sys/types.h>
3762#include <machine/bswap.h>
3763int main(void) { return bswap32(0); }
3764EOF
Juan Quintela52166aa2009-08-03 14:46:03 +02003765if compile_prog "" "" ; then
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02003766 bswap_h=yes
3767fi
3768
aliguorida93a1f2008-12-12 20:02:52 +00003769##########################################
Peter Lievene49ab192014-06-04 14:33:26 +02003770# Do we have libiscsi >= 1.9.0
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003771if test "$libiscsi" != "no" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003772 if $pkg_config --atleast-version=1.9.0 libiscsi; then
Paolo Bonzini3c33ea92013-02-22 18:14:28 +01003773 libiscsi="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003774 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3775 libiscsi_libs=$($pkg_config --libs libiscsi)
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003776 else
3777 if test "$libiscsi" = "yes" ; then
Peter Lievene49ab192014-06-04 14:33:26 +02003778 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003779 fi
3780 libiscsi="no"
3781 fi
3782fi
3783
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11003784##########################################
Natanael Copa8bacde82012-09-12 09:06:51 +00003785# Do we need libm
3786cat > $TMPC << EOF
3787#include <math.h>
Alexey Kardashevskiyf80ea982014-07-01 17:30:27 +10003788int main(int argc, char **argv) { return isnan(sin((double)argc)); }
Natanael Copa8bacde82012-09-12 09:06:51 +00003789EOF
3790if compile_prog "" "" ; then
3791 :
3792elif compile_prog "" "-lm" ; then
3793 LIBS="-lm $LIBS"
3794 libs_qga="-lm $libs_qga"
3795else
Peter Maydell76ad07a2013-04-08 12:11:26 +01003796 error_exit "libm check failed"
Natanael Copa8bacde82012-09-12 09:06:51 +00003797fi
3798
3799##########################################
aliguorida93a1f2008-12-12 20:02:52 +00003800# Do we need librt
Natanael Copa8bacde82012-09-12 09:06:51 +00003801# uClibc provides 2 versions of clock_gettime(), one with realtime
3802# support and one without. This means that the clock_gettime() don't
3803# need -lrt. We still need it for timer_create() so we check for this
3804# function in addition.
aliguorida93a1f2008-12-12 20:02:52 +00003805cat > $TMPC <<EOF
3806#include <signal.h>
3807#include <time.h>
Natanael Copa8bacde82012-09-12 09:06:51 +00003808int main(void) {
3809 timer_create(CLOCK_REALTIME, NULL, NULL);
3810 return clock_gettime(CLOCK_REALTIME, NULL);
3811}
aliguorida93a1f2008-12-12 20:02:52 +00003812EOF
3813
Juan Quintela52166aa2009-08-03 14:46:03 +02003814if compile_prog "" "" ; then
Juan Quintela07ffa4b2009-08-03 14:46:17 +02003815 :
Natanael Copa8bacde82012-09-12 09:06:51 +00003816# we need pthread for static linking. use previous pthread test result
Rick Liu18e588b2014-05-30 14:10:20 -07003817elif compile_prog "" "$pthread_lib -lrt" ; then
3818 LIBS="$LIBS -lrt"
3819 libs_qga="$libs_qga -lrt"
aliguorida93a1f2008-12-12 20:02:52 +00003820fi
3821
Blue Swirl31ff5042009-09-12 12:33:07 +00003822if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
Andreas Färber179cf402010-09-20 00:50:43 +02003823 "$aix" != "yes" -a "$haiku" != "yes" ; then
Juan Quintela6362a532009-08-03 14:46:32 +02003824 libs_softmmu="-lutil $libs_softmmu"
3825fi
3826
Blue Swirlde5071c2009-09-12 09:58:46 +00003827##########################################
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003828# spice probe
3829if test "$spice" != "no" ; then
3830 cat > $TMPC << EOF
3831#include <spice.h>
3832int main(void) { spice_server_new(); return 0; }
3833EOF
Jiri Denemark710fc4f2011-01-24 13:20:29 +01003834 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3835 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003836 if $pkg_config --atleast-version=0.12.0 spice-server && \
3837 $pkg_config --atleast-version=0.12.3 spice-protocol && \
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003838 compile_prog "$spice_cflags" "$spice_libs" ; then
3839 spice="yes"
3840 libs_softmmu="$libs_softmmu $spice_libs"
3841 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
Alon Levy2e0e3c32012-08-22 11:16:26 +03003842 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3843 spice_server_version=$($pkg_config --modversion spice-server)
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003844 else
3845 if test "$spice" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08003846 feature_not_found "spice" \
3847 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003848 fi
3849 spice="no"
3850 fi
3851fi
3852
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003853# check for smartcard support
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003854smartcard_cflags=""
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003855if test "$smartcard" != "no"; then
3856 if $pkg_config libcacard; then
3857 libcacard_cflags=$($pkg_config --cflags libcacard)
3858 libcacard_libs=$($pkg_config --libs libcacard)
3859 QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
3860 libs_softmmu="$libs_softmmu $libcacard_libs"
3861 smartcard="yes"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003862 else
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003863 if test "$smartcard" = "yes"; then
3864 feature_not_found "smartcard" "Install libcacard devel"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003865 fi
Marc-André Lureau7b02f542015-08-30 11:48:40 +02003866 smartcard="no"
Paolo Bonziniafd347a2012-12-20 20:39:36 +01003867 fi
Robert Relyea111a38b2010-11-28 16:36:38 +02003868fi
3869
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003870# check for libusb
3871if test "$libusb" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003872 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003873 libusb="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003874 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3875 libusb_libs=$($pkg_config --libs libusb-1.0)
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003876 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3877 libs_softmmu="$libs_softmmu $libusb_libs"
3878 else
3879 if test "$libusb" = "yes"; then
Hu Tao8efc9362014-06-26 17:34:50 +08003880 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01003881 fi
3882 libusb="no"
3883 fi
3884fi
3885
Hans de Goede69354a82011-07-19 11:04:10 +02003886# check for usbredirparser for usb network redirection support
3887if test "$usb_redir" != "no" ; then
Stefan Weil65d5d3f2013-08-27 21:09:13 +02003888 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
Hans de Goede69354a82011-07-19 11:04:10 +02003889 usb_redir="yes"
Stefan Weilca871ec2013-08-27 21:09:12 +02003890 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3891 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
Hans de Goede69354a82011-07-19 11:04:10 +02003892 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
Aurelien Jarno56ab2ad2012-09-11 20:57:58 +02003893 libs_softmmu="$libs_softmmu $usb_redir_libs"
Hans de Goede69354a82011-07-19 11:04:10 +02003894 else
3895 if test "$usb_redir" = "yes"; then
Stewart Smith21684af2014-01-24 12:39:10 +11003896 feature_not_found "usb-redir" "Install usbredir devel"
Hans de Goede69354a82011-07-19 11:04:10 +02003897 fi
3898 usb_redir="no"
3899 fi
3900fi
3901
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01003902##########################################
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003903# check if we have VSS SDK headers for win
3904
3905if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3906 case "$vss_win32_sdk" in
3907 "") vss_win32_include="-I$source_path" ;;
3908 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3909 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3910 vss_win32_include="-I$source_path/.sdk/vss"
3911 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3912 ;;
3913 *) vss_win32_include="-I$vss_win32_sdk"
3914 esac
3915 cat > $TMPC << EOF
3916#define __MIDL_user_allocate_free_DEFINED__
3917#include <inc/win2003/vss.h>
3918int main(void) { return VSS_CTX_BACKUP; }
3919EOF
3920 if compile_prog "$vss_win32_include" "" ; then
3921 guest_agent_with_vss="yes"
3922 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3923 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
Michael Rothf33ca812015-08-26 16:19:41 -05003924 qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04003925 else
3926 if test "$vss_win32_sdk" != "" ; then
3927 echo "ERROR: Please download and install Microsoft VSS SDK:"
3928 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3929 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3930 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3931 echo "ERROR: The headers are extracted in the directory \`inc'."
3932 feature_not_found "VSS support"
3933 fi
3934 guest_agent_with_vss="no"
3935 fi
3936fi
3937
3938##########################################
3939# lookup Windows platform SDK (if not specified)
3940# The SDK is needed only to build .tlb (type library) file of guest agent
3941# VSS provider from the source. It is usually unnecessary because the
3942# pre-compiled .tlb file is included.
3943
3944if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3945 if test -z "$win_sdk"; then
3946 programfiles="$PROGRAMFILES"
3947 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3948 if test -n "$programfiles"; then
3949 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3950 else
3951 feature_not_found "Windows SDK"
3952 fi
3953 elif test "$win_sdk" = "no"; then
3954 win_sdk=""
3955 fi
3956fi
3957
3958##########################################
Michael Roth50cbebb2015-07-07 18:10:09 -05003959# check if mingw environment provides a recent ntddscsi.h
3960if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3961 cat > $TMPC << EOF
3962#include <windows.h>
3963#include <ntddscsi.h>
3964int main(void) {
3965#if !defined(IOCTL_SCSI_GET_ADDRESS)
3966#error Missing required ioctl definitions
3967#endif
3968 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3969 return addr.Lun;
3970}
3971EOF
3972 if compile_prog "" "" ; then
3973 guest_agent_ntddscsi=yes
Michael Rothc54e1eb2015-07-07 19:12:18 -05003974 libs_qga="-lsetupapi $libs_qga"
Michael Roth50cbebb2015-07-07 18:10:09 -05003975 fi
3976fi
3977
3978##########################################
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02003979# virgl renderer probe
3980
3981if test "$virglrenderer" != "no" ; then
3982 cat > $TMPC << EOF
3983#include <virglrenderer.h>
3984int main(void) { virgl_renderer_poll(); return 0; }
3985EOF
3986 virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
3987 virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
3988 if $pkg_config virglrenderer >/dev/null 2>&1 && \
3989 compile_prog "$virgl_cflags" "$virgl_libs" ; then
3990 virglrenderer="yes"
3991 else
3992 if test "$virglrenderer" = "yes" ; then
3993 feature_not_found "virglrenderer"
3994 fi
3995 virglrenderer="no"
3996 fi
3997fi
3998
3999##########################################
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004000# check if we have fdatasync
4001
4002fdatasync=no
4003cat > $TMPC << EOF
4004#include <unistd.h>
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004005int main(void) {
4006#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4007return fdatasync(0);
4008#else
Stefan Weile172fe12012-04-06 21:33:20 +02004009#error Not supported
Alexandre Raymondd1722a22011-05-29 18:22:48 -04004010#endif
4011}
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004012EOF
4013if compile_prog "" "" ; then
4014 fdatasync=yes
4015fi
4016
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004017##########################################
Andreas Färbere78815a2010-09-25 11:26:05 +00004018# check if we have madvise
4019
4020madvise=no
4021cat > $TMPC << EOF
4022#include <sys/types.h>
4023#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004024#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004025int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4026EOF
4027if compile_prog "" "" ; then
4028 madvise=yes
4029fi
4030
4031##########################################
4032# check if we have posix_madvise
4033
4034posix_madvise=no
4035cat > $TMPC << EOF
4036#include <sys/mman.h>
Scott Wood832ce9c2010-10-05 14:28:17 -05004037#include <stddef.h>
Andreas Färbere78815a2010-09-25 11:26:05 +00004038int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4039EOF
4040if compile_prog "" "" ; then
4041 posix_madvise=yes
4042fi
4043
4044##########################################
Richard Henderson1e9737d2012-10-23 07:33:00 +10004045# check if we have usable SIGEV_THREAD_ID
4046
4047sigev_thread_id=no
4048cat > $TMPC << EOF
4049#include <signal.h>
4050int main(void) {
4051 struct sigevent ev;
4052 ev.sigev_notify = SIGEV_THREAD_ID;
4053 ev._sigev_un._tid = 0;
4054 asm volatile("" : : "g"(&ev));
4055 return 0;
4056}
4057EOF
4058if compile_prog "" "" ; then
4059 sigev_thread_id=yes
4060fi
4061
4062##########################################
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004063# check if trace backend exists
4064
Lluís Vilanova5b808272014-05-27 15:02:14 +02004065$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004066if test "$?" -ne 0 ; then
Lluís Vilanova5b808272014-05-27 15:02:14 +02004067 error_exit "invalid trace backends" \
4068 "Please choose supported trace backends."
Stefan Hajnoczi94a420b2010-05-22 17:52:39 +01004069fi
4070
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004071##########################################
4072# For 'ust' backend, test if ust headers are present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004073if have_backend "ust"; then
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004074 cat > $TMPC << EOF
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004075#include <lttng/tracepoint.h>
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004076int main(void) { return 0; }
4077EOF
4078 if compile_prog "" "" ; then
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004079 if $pkg_config lttng-ust --exists; then
4080 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4081 else
4082 lttng_ust_libs="-llttng-ust"
4083 fi
4084 if $pkg_config liburcu-bp --exists; then
4085 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4086 else
4087 urcu_bp_libs="-lurcu-bp"
4088 fi
4089
4090 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4091 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004092 else
Mohamad Gebaibf15f632014-01-29 22:47:54 -05004093 error_exit "Trace backend 'ust' missing lttng-ust header files"
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004094 fi
4095fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004096
4097##########################################
4098# For 'dtrace' backend, test if 'dtrace' command is present
Lluís Vilanova5b808272014-05-27 15:02:14 +02004099if have_backend "dtrace"; then
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004100 if ! has 'dtrace' ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004101 error_exit "dtrace command is not found in PATH $PATH"
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004102 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00004103 trace_backend_stap="no"
4104 if has 'stap' ; then
4105 trace_backend_stap="yes"
4106 fi
Daniel P. Berrangeb3d08c02010-11-12 13:20:24 +00004107fi
4108
Stefan Hajnoczi7e24e922010-05-22 21:11:33 +01004109##########################################
Alex Barcelo519175a2012-02-28 12:25:50 +01004110# check and set a backend for coroutine
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304111
Peter Maydell7c2acc72013-04-08 12:11:27 +01004112# We prefer ucontext, but it's not always possible. The fallback
4113# is sigcontext. gthread is not selectable except explicitly, because
4114# it is not functional enough to run QEMU proper. (It is occasionally
4115# useful for debugging purposes.) On Windows the only valid backend
4116# is the Windows-specific one.
4117
4118ucontext_works=no
4119if test "$darwin" != "yes"; then
4120 cat > $TMPC << EOF
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304121#include <ucontext.h>
Peter Maydellcdf84802012-02-23 16:20:05 +00004122#ifdef __stub_makecontext
4123#error Ignoring glibc stub makecontext which will always fail
4124#endif
Stefan Weil75cafad2011-12-17 09:27:29 +01004125int main(void) { makecontext(0, 0, 0); return 0; }
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304126EOF
Peter Maydell7c2acc72013-04-08 12:11:27 +01004127 if compile_prog "" "" ; then
4128 ucontext_works=yes
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304129 fi
Peter Maydell7c2acc72013-04-08 12:11:27 +01004130fi
4131
4132if test "$coroutine" = ""; then
4133 if test "$mingw32" = "yes"; then
4134 coroutine=win32
4135 elif test "$ucontext_works" = "yes"; then
4136 coroutine=ucontext
4137 else
4138 coroutine=sigaltstack
4139 fi
Alex Barcelo519175a2012-02-28 12:25:50 +01004140else
Peter Maydell7c2acc72013-04-08 12:11:27 +01004141 case $coroutine in
4142 windows)
4143 if test "$mingw32" != "yes"; then
4144 error_exit "'windows' coroutine backend only valid for Windows"
4145 fi
4146 # Unfortunately the user visible backend name doesn't match the
4147 # coroutine-*.c filename for this case, so we have to adjust it here.
4148 coroutine=win32
4149 ;;
4150 ucontext)
4151 if test "$ucontext_works" != "yes"; then
4152 feature_not_found "ucontext"
4153 fi
4154 ;;
4155 gthread|sigaltstack)
4156 if test "$mingw32" = "yes"; then
4157 error_exit "only the 'windows' coroutine backend is valid for Windows"
4158 fi
4159 ;;
4160 *)
4161 error_exit "unknown coroutine backend $coroutine"
4162 ;;
4163 esac
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304164fi
4165
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004166if test "$coroutine_pool" = ""; then
4167 if test "$coroutine" = "gthread"; then
4168 coroutine_pool=no
4169 else
4170 coroutine_pool=yes
4171 fi
4172fi
4173if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4174 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4175fi
4176
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05304177##########################################
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304178# check if we have open_by_handle_at
4179
Stefan Weil4e1797f2012-06-18 22:11:06 +02004180open_by_handle_at=no
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304181cat > $TMPC << EOF
4182#include <fcntl.h>
Stefan Weilacc55ba2012-06-06 19:35:57 +00004183#if !defined(AT_EMPTY_PATH)
4184# error missing definition
4185#else
Stefan Weil75cafad2011-12-17 09:27:29 +01004186int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
Stefan Weilacc55ba2012-06-06 19:35:57 +00004187#endif
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304188EOF
4189if compile_prog "" "" ; then
4190 open_by_handle_at=yes
4191fi
4192
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304193########################################
4194# check if we have linux/magic.h
4195
4196linux_magic_h=no
4197cat > $TMPC << EOF
4198#include <linux/magic.h>
4199int main(void) {
Stefan Weil75cafad2011-12-17 09:27:29 +01004200 return 0;
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05304201}
4202EOF
4203if compile_prog "" "" ; then
4204 linux_magic_h=yes
4205fi
4206
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004207########################################
Kevin Wolfc95e3082013-02-22 21:08:51 +01004208# check whether we can disable warning option with a pragma (this is needed
4209# to silence warnings in the headers of some versions of external libraries).
4210# This test has to be compiled with -Werror as otherwise an unknown pragma is
4211# only a warning.
4212#
4213# If we can't selectively disable warning in the code, disable -Werror so that
4214# the build doesn't fail anyway.
4215
Peter Maydell06d71fa2012-07-30 16:13:07 +01004216pragma_disable_unused_but_set=no
4217cat > $TMPC << EOF
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004218#pragma GCC diagnostic push
Peter Maydell06d71fa2012-07-30 16:13:07 +01004219#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
Kevin Wolfc95e3082013-02-22 21:08:51 +01004220#pragma GCC diagnostic ignored "-Wstrict-prototypes"
Markus Armbrustere6f53fd2013-04-16 13:51:06 +02004221#pragma GCC diagnostic pop
Kevin Wolfc95e3082013-02-22 21:08:51 +01004222
Peter Maydell06d71fa2012-07-30 16:13:07 +01004223int main(void) {
4224 return 0;
4225}
4226EOF
4227if compile_prog "-Werror" "" ; then
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01004228 pragma_diagnostic_available=yes
Kevin Wolfc95e3082013-02-22 21:08:51 +01004229else
4230 werror=no
Peter Maydell06d71fa2012-07-30 16:13:07 +01004231fi
4232
4233########################################
Christian Borntraeger541be922014-09-25 21:07:54 +02004234# check if we have valgrind/valgrind.h
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004235
4236valgrind_h=no
4237cat > $TMPC << EOF
4238#include <valgrind/valgrind.h>
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004239int main(void) {
Kevin Wolf3f4349d2012-06-29 13:40:27 +02004240 return 0;
4241}
4242EOF
4243if compile_prog "" "" ; then
4244 valgrind_h=yes
4245fi
4246
4247########################################
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004248# check if environ is declared
4249
4250has_environ=no
4251cat > $TMPC << EOF
4252#include <unistd.h>
4253int main(void) {
Blue Swirlc075a722012-08-09 20:21:25 +00004254 environ = 0;
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03004255 return 0;
4256}
4257EOF
4258if compile_prog "" "" ; then
4259 has_environ=yes
4260fi
4261
Richard Henderson76a347e2012-12-28 14:17:02 -08004262########################################
4263# check if cpuid.h is usable.
4264
4265cpuid_h=no
4266cat > $TMPC << EOF
4267#include <cpuid.h>
4268int main(void) {
Peter Maydell774d5662014-02-20 19:42:53 +00004269 unsigned a, b, c, d;
4270 int max = __get_cpuid_max(0, 0);
4271
4272 if (max >= 1) {
4273 __cpuid(1, a, b, c, d);
4274 }
4275
4276 if (max >= 7) {
4277 __cpuid_count(7, 0, a, b, c, d);
4278 }
4279
4280 return 0;
Richard Henderson76a347e2012-12-28 14:17:02 -08004281}
4282EOF
4283if compile_prog "" "" ; then
4284 cpuid_h=yes
4285fi
4286
Richard Hendersonf5401662013-02-16 12:46:59 -08004287########################################
4288# check if __[u]int128_t is usable.
4289
4290int128=no
4291cat > $TMPC << EOF
Stefan Weila00f66a2014-03-07 10:43:38 +01004292#if defined(__clang_major__) && defined(__clang_minor__)
4293# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4294# error __int128_t does not work in CLANG before 3.2
4295# endif
4296#endif
Richard Hendersonf5401662013-02-16 12:46:59 -08004297__int128_t a;
4298__uint128_t b;
4299int main (void) {
4300 a = a + b;
4301 b = a * b;
Peter Maydell464e3672013-06-21 14:01:31 +01004302 a = a * a;
Richard Hendersonf5401662013-02-16 12:46:59 -08004303 return 0;
4304}
4305EOF
4306if compile_prog "" "" ; then
4307 int128=yes
4308fi
Richard Henderson76a347e2012-12-28 14:17:02 -08004309
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08004310########################################
4311# check if getauxval is available.
4312
4313getauxval=no
4314cat > $TMPC << EOF
4315#include <sys/auxv.h>
4316int main(void) {
4317 return getauxval(AT_HWCAP) == 0;
4318}
4319EOF
4320if compile_prog "" "" ; then
4321 getauxval=yes
4322fi
4323
John Snowfd0e6052015-03-25 18:57:39 -04004324########################################
4325# check if ccache is interfering with
4326# semantic analysis of macros
4327
4328ccache_cpp2=no
4329cat > $TMPC << EOF
4330static const int Z = 1;
4331#define fn() ({ Z; })
4332#define TAUT(X) ((X) == Z)
4333#define PAREN(X, Y) (X == Y)
4334#define ID(X) (X)
4335int main(int argc, char *argv[])
4336{
4337 int x = 0, y = 0;
4338 x = ID(x);
4339 x = fn();
4340 fn();
4341 if (PAREN(x, y)) return 0;
4342 if (TAUT(Z)) return 0;
4343 return 0;
4344}
4345EOF
4346
4347if ! compile_object "-Werror"; then
4348 ccache_cpp2=yes
4349fi
4350
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05304351##########################################
Juan Quintelae86ecd42009-08-03 14:45:59 +02004352# End of CC checks
4353# After here, no more $cc or $ld runs
4354
Blue Swirl1d728c32012-05-01 18:45:39 +00004355if test "$gcov" = "yes" ; then
4356 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4357 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4358elif test "$debug" = "no" ; then
Michal Privoznike600cdf2013-09-05 12:54:49 +02004359 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004360fi
Juan Quintelaa316e372009-09-30 01:10:55 +02004361
Peter Lieven6542aa92014-02-03 10:26:13 +01004362##########################################
4363# Do we have libnfs
4364if test "$libnfs" != "no" ; then
Peter Lievenb7d769c2014-03-17 09:37:33 +01004365 if $pkg_config --atleast-version=1.9.3 libnfs; then
Peter Lieven6542aa92014-02-03 10:26:13 +01004366 libnfs="yes"
4367 libnfs_libs=$($pkg_config --libs libnfs)
4368 LIBS="$LIBS $libnfs_libs"
4369 else
4370 if test "$libnfs" = "yes" ; then
Hu Tao8efc9362014-06-26 17:34:50 +08004371 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
Peter Lieven6542aa92014-02-03 10:26:13 +01004372 fi
4373 libnfs="no"
4374 fi
4375fi
Blue Swirl1d728c32012-05-01 18:45:39 +00004376
Anthony Liguori20ff6c82009-12-09 12:59:36 -06004377# Disable zero malloc errors for official releases unless explicitly told to
4378# enable/disable
4379if test -z "$zero_malloc" ; then
4380 if test "$z_version" = "50" ; then
4381 zero_malloc="no"
4382 else
4383 zero_malloc="yes"
4384 fi
4385fi
4386
Peter Maydell6ca026c2012-07-18 15:10:18 +01004387# Now we've finished running tests it's OK to add -Werror to the compiler flags
4388if test "$werror" = "yes"; then
4389 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4390fi
4391
Juan Quintelae86ecd42009-08-03 14:45:59 +02004392if test "$solaris" = "no" ; then
4393 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
Juan Quintela1156c662009-08-03 14:46:00 +02004394 LDFLAGS="-Wl,--warn-common $LDFLAGS"
Juan Quintelae86ecd42009-08-03 14:45:59 +02004395 fi
4396fi
4397
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02004398# test if pod2man has --utf8 option
4399if pod2man --help | grep -q utf8; then
4400 POD2MAN="pod2man --utf8"
4401else
4402 POD2MAN="pod2man"
4403fi
4404
Blue Swirl952afb72010-09-19 08:36:34 +00004405# Use ASLR, no-SEH and DEP if available
4406if test "$mingw32" = "yes" ; then
4407 for flag in --dynamicbase --no-seh --nxcompat; do
4408 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4409 LDFLAGS="-Wl,$flag $LDFLAGS"
4410 fi
4411 done
4412fi
4413
Eduardo Habkost10ea68b2012-04-18 16:55:39 -03004414qemu_confdir=$sysconfdir$confsuffix
Fam Zhenge26110c2014-02-10 14:48:57 +08004415qemu_moddir=$libdir$confsuffix
Eduardo Habkost528ae5b2012-04-18 16:55:49 -03004416qemu_datadir=$datadir$confsuffix
Anthony Liguori834574e2013-02-20 07:43:24 -06004417qemu_localedir="$datadir/locale"
Paolo Bonzinie7b45cc2010-05-26 16:08:20 +02004418
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004419tools=""
4420if test "$want_tools" = "yes" ; then
Paolo Bonzinica35f782010-05-26 16:08:29 +02004421 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
Daniel P. Berrange4b1c11f2012-09-10 12:26:29 +01004422 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4423 tools="qemu-nbd\$(EXESUF) $tools"
4424 fi
4425fi
4426if test "$softmmu" = yes ; then
Meador Inge983eef52012-02-24 14:00:42 +05304427 if test "$virtfs" != no ; then
Andreas Färberaabfd882012-05-01 01:12:02 +02004428 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4429 virtfs=yes
4430 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4431 else
4432 if test "$virtfs" = yes; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01004433 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
Meador Inge983eef52012-02-24 14:00:42 +05304434 fi
Andreas Färber17500372012-05-01 01:12:03 +02004435 virtfs=no
Andreas Färberaabfd882012-05-01 01:12:02 +02004436 fi
M. Mohan Kumar17bff522011-12-14 13:58:42 +05304437 fi
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004438fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004439
4440# Probe for guest agent support/options
4441
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004442if [ "$guest_agent" != "no" ]; then
Tomoki Sekiyamab39297a2013-08-07 11:40:18 -04004443 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
Michael Roth48ff7a62011-07-20 15:19:37 -05004444 tools="qemu-ga\$(EXESUF) $tools"
Michael Tokareve8ef31a2013-07-31 14:22:07 +04004445 guest_agent=yes
4446 elif [ "$guest_agent" != yes ]; then
4447 guest_agent=no
4448 else
4449 error_exit "Guest agent is not supported on this platform"
Paolo Bonzinica35f782010-05-26 16:08:29 +02004450 fi
Paolo Bonzini00c705f2012-05-29 11:40:24 +02004451fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004452
Michael Roth9d6bc272015-08-26 10:49:13 -05004453# Guest agent Window MSI package
4454
4455if test "$guest_agent" != yes; then
4456 if test "$guest_agent_msi" = yes; then
4457 error_exit "MSI guest agent package requires guest agent enabled"
4458 fi
4459 guest_agent_msi=no
4460elif test "$mingw32" != "yes"; then
4461 if test "$guest_agent_msi" = "yes"; then
4462 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4463 fi
4464 guest_agent_msi=no
4465elif ! has wixl; then
4466 if test "$guest_agent_msi" = "yes"; then
4467 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4468 fi
4469 guest_agent_msi=no
Michael Roth1a349042015-08-26 11:14:31 -05004470else
4471 # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4472 # disabled explicitly
4473 if test "$guest_agent_msi" != "no"; then
4474 guest_agent_msi=yes
4475 fi
Michael Roth9d6bc272015-08-26 10:49:13 -05004476fi
4477
Michael Roth1a349042015-08-26 11:14:31 -05004478if test "$guest_agent_msi" = "yes"; then
Michael Roth9d6bc272015-08-26 10:49:13 -05004479 if test "$guest_agent_with_vss" = "yes"; then
4480 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4481 fi
4482
4483 if test "$QEMU_GA_MANUFACTURER" = ""; then
4484 QEMU_GA_MANUFACTURER=QEMU
4485 fi
4486
4487 if test "$QEMU_GA_DISTRO" = ""; then
4488 QEMU_GA_DISTRO=Linux
4489 fi
4490
4491 if test "$QEMU_GA_VERSION" = ""; then
4492 QEMU_GA_VERSION=`cat $source_path/VERSION`
4493 fi
4494
4495 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
4496
4497 case "$cpu" in
4498 x86_64)
4499 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4500 ;;
4501 i386)
4502 QEMU_GA_MSI_ARCH="-D Arch=32"
4503 ;;
4504 *)
4505 error_exit "CPU $cpu not supported for building installation package"
4506 ;;
4507 esac
4508fi
4509
Paolo Bonzinica35f782010-05-26 16:08:29 +02004510# Mac OS X ships with a broken assembler
4511roms=
4512if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4513 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4514 "$softmmu" = yes ; then
4515 roms="optionrom"
4516fi
Andreas Färberd0384d12011-05-01 18:23:56 +02004517if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
David Gibson39ac8452011-04-01 15:15:23 +11004518 roms="$roms spapr-rtas"
4519fi
Paolo Bonzinica35f782010-05-26 16:08:29 +02004520
Christian Borntraeger9933c302013-04-23 01:23:03 +00004521if test "$cpu" = "s390x" ; then
4522 roms="$roms s390-ccw"
4523fi
4524
Richard Henderson964c6fa2013-06-21 19:10:16 -07004525# Probe for the need for relocating the user-only binary.
4526if test "$pie" = "no" ; then
4527 textseg_addr=
4528 case "$cpu" in
Richard Henderson479eb122014-04-24 08:25:03 -07004529 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4530 # ??? Rationale for choosing this address
Richard Henderson964c6fa2013-06-21 19:10:16 -07004531 textseg_addr=0x60000000
4532 ;;
4533 mips)
Richard Henderson479eb122014-04-24 08:25:03 -07004534 # A 256M aligned address, high in the address space, with enough
4535 # room for the code_gen_buffer above it before the stack.
4536 textseg_addr=0x60000000
Richard Henderson964c6fa2013-06-21 19:10:16 -07004537 ;;
4538 esac
4539 if [ -n "$textseg_addr" ]; then
4540 cat > $TMPC <<EOF
4541 int main(void) { return 0; }
4542EOF
4543 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4544 if ! compile_prog "" "$textseg_ldflags"; then
4545 # In case ld does not support -Ttext-segment, edit the default linker
4546 # script via sed to set the .text start addr. This is needed on FreeBSD
4547 # at least.
4548 $ld --verbose | sed \
4549 -e '1,/==================================================/d' \
4550 -e '/==================================================/,$d' \
4551 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4552 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4553 textseg_ldflags="-Wl,-T../config-host.ld"
4554 fi
4555 fi
4556fi
4557
Jan Kiszka50e12062014-10-02 10:03:55 +02004558# prepend pixman and ftd flags after all config tests are done
4559QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4560libs_softmmu="$pixman_libs $libs_softmmu"
Gerd Hoffmann5ca93882012-11-07 11:06:23 +01004561
bellard43ce4df2003-06-09 19:53:12 +00004562echo "Install prefix $prefix"
Eduardo Habkostc00b2802012-04-18 16:55:37 -03004563echo "BIOS directory `eval echo $qemu_datadir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004564echo "binary directory `eval echo $bindir`"
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004565echo "library directory `eval echo $libdir`"
Fam Zhenge26110c2014-02-10 14:48:57 +08004566echo "module directory `eval echo $qemu_moddir`"
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004567echo "libexec directory `eval echo $libexecdir`"
Alon Levy0f94d6d2011-06-27 11:58:20 +02004568echo "include directory `eval echo $includedir`"
Aurelien Jarno1c0fd162010-06-10 00:14:02 +02004569echo "config directory `eval echo $sysconfdir`"
bellard11d9f692004-04-02 20:55:59 +00004570if test "$mingw32" = "no" ; then
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004571echo "local state directory `eval echo $local_statedir`"
Paolo Bonzinif2b9e1e2010-05-26 16:08:23 +02004572echo "Manual directory `eval echo $mandir`"
bellard43ce4df2003-06-09 19:53:12 +00004573echo "ELF interp prefix $interp_prefix"
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004574else
4575echo "local state directory queried at runtime"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004576echo "Windows SDK $win_sdk"
bellard11d9f692004-04-02 20:55:59 +00004577fi
bellard5a671352003-10-01 00:13:48 +00004578echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +00004579echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +00004580echo "Host C compiler $host_cc"
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04004581echo "C++ compiler $cxx"
Peter Maydell3c4a4d02012-08-11 22:34:40 +01004582echo "Objective-C compiler $objcc"
Peter Maydell45d285a2013-10-21 21:03:06 +01004583echo "ARFLAGS $ARFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004584echo "CFLAGS $CFLAGS"
Juan Quintelaa558ee12009-08-03 14:46:21 +02004585echo "QEMU_CFLAGS $QEMU_CFLAGS"
Juan Quintela0c439cb2009-08-03 14:46:01 +02004586echo "LDFLAGS $LDFLAGS"
bellard43ce4df2003-06-09 19:53:12 +00004587echo "make $make"
pbrook6a882642006-04-17 13:57:12 +00004588echo "install $install"
Blue Swirlc886edf2011-07-22 21:08:09 +00004589echo "python $python"
Brade2d88302011-09-02 16:53:28 -04004590if test "$slirp" = "yes" ; then
4591 echo "smbd $smbd"
4592fi
Fam Zheng17969262014-02-10 14:48:56 +08004593echo "module support $modules"
bellard43ce4df2003-06-09 19:53:12 +00004594echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +00004595echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +00004596echo "target list $target_list"
aurel32ade25b02009-04-16 09:58:41 +00004597echo "tcg debug enabled $debug_tcg"
bellard43ce4df2003-06-09 19:53:12 +00004598echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00004599echo "sparse enabled $sparse"
aliguori1625af82009-04-05 17:41:02 +00004600echo "strip binaries $strip_opt"
bellard05c2a3e2006-02-08 22:39:17 +00004601echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00004602echo "static build $static"
bellard5b0753e2005-03-01 21:37:28 +00004603if test "$darwin" = "yes" ; then
4604 echo "Cocoa support $cocoa"
4605fi
Gerd Hoffmanne2134eb2012-09-25 16:04:58 +02004606echo "pixman $pixman"
bellard97a847b2003-08-10 21:36:04 +00004607echo "SDL support $sdl"
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004608echo "GTK support $gtk"
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004609echo "GTK GL support $gtk_gl"
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004610echo "GNUTLS support $gnutls"
4611echo "GNUTLS hash $gnutls_hash"
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004612echo "GNUTLS gcrypt $gnutls_gcrypt"
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004613echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004614echo "libtasn1 $tasn1"
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004615echo "VTE support $vte"
balrog4d3b6f62008-02-10 16:33:14 +00004616echo "curses support $curses"
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004617echo "virgl support $virglrenderer"
Alexander Graf769ce762009-05-11 17:41:42 +02004618echo "curl support $curl"
bellard67b915a2004-03-31 23:37:16 +00004619echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00004620echo "Audio drivers $audio_drv_list"
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004621echo "Block whitelist (rw) $block_drv_rw_whitelist"
4622echo "Block whitelist (ro) $block_drv_ro_whitelist"
Meador Inge983eef52012-02-24 14:00:42 +05304623echo "VirtFS support $virtfs"
Jes Sorensen821601e2011-03-16 13:33:36 +01004624echo "VNC support $vnc"
4625if test "$vnc" = "yes" ; then
Jes Sorensen821601e2011-03-16 13:33:36 +01004626 echo "VNC SASL support $vnc_sasl"
4627 echo "VNC JPEG support $vnc_jpeg"
4628 echo "VNC PNG support $vnc_png"
Jes Sorensen821601e2011-03-16 13:33:36 +01004629fi
blueswir131422552007-04-16 18:27:06 +00004630if test -n "$sparc_cpu"; then
4631 echo "Target Sparc Arch $sparc_cpu"
4632fi
aliguorie37630c2009-04-22 15:19:10 +00004633echo "xen support $xen"
Paul Durrant3996e852015-01-20 11:06:19 +00004634if test "$xen" = "yes" ; then
4635 echo "xen ctrl version $xen_ctrl_version"
4636fi
aurel322e4d9fb2008-04-08 06:01:02 +00004637echo "brlapi support $brlapi"
Juan Quintelaa20a6f42009-08-12 18:29:50 +02004638echo "bluez support $bluez"
Juan Quintelaa25dba12009-08-12 18:29:52 +02004639echo "Documentation $docs"
Avi Kivity40d64442011-11-15 20:12:17 +02004640echo "PIE $pie"
ths8a16d272008-07-19 09:56:24 +00004641echo "vde support $vde"
Vincenzo Maffione58952132013-11-06 11:44:06 +01004642echo "netmap support $netmap"
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02004643echo "Linux AIO support $linux_aio"
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07004644echo "ATTR/XATTR support $attr"
ths77755342008-11-27 15:45:16 +00004645echo "Install blobs $blobs"
Juan Quintelab31a0272009-08-12 18:29:56 +02004646echo "KVM support $kvm"
Michael R. Hines2da776d2013-07-22 10:01:54 -04004647echo "RDMA support $rdma"
Stefan Weil9195b2c2011-10-19 07:07:18 +02004648echo "TCG interpreter $tcg_interpreter"
aurel32f652e6a2008-12-16 10:43:48 +00004649echo "fdt support $fdt"
aliguoriceb42de2009-04-07 18:43:28 +00004650echo "preadv support $preadv"
Blue Swirl5f6b9e82009-09-20 06:56:26 +00004651echo "fdatasync $fdatasync"
Andreas Färbere78815a2010-09-25 11:26:05 +00004652echo "madvise $madvise"
4653echo "posix_madvise $posix_madvise"
Richard Henderson1e9737d2012-10-23 07:33:00 +10004654echo "sigev_thread_id $sigev_thread_id"
Stefan Weilee682d22009-10-01 20:10:37 +02004655echo "uuid support $uuid"
Corey Bryant47e98652012-01-26 09:42:26 -05004656echo "libcap-ng support $cap_ng"
Michael S. Tsirkind5970052010-03-17 13:08:17 +02004657echo "vhost-net support $vhost_net"
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00004658echo "vhost-scsi support $vhost_scsi"
Lluís Vilanova5b808272014-05-27 15:02:14 +02004659echo "Trace backends $trace_backends"
Stefan Weile00e36f2014-03-14 21:09:10 +01004660if test "$trace_backend" = "simple"; then
Prerna Saxena9410b562010-07-13 09:26:32 +01004661echo "Trace output file $trace_file-<pid>"
Stefan Weile00e36f2014-03-14 21:09:10 +01004662fi
Stefan Weilc9dd4072014-03-06 18:13:33 +01004663if test "$spice" = "yes"; then
Alon Levy2e0e3c32012-08-22 11:16:26 +03004664echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
Stefan Weilc9dd4072014-03-06 18:13:33 +01004665else
4666echo "spice support $spice"
4667fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01004668echo "rbd support $rbd"
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004669echo "xfsctl support $xfs"
Marc-André Lureau7b02f542015-08-30 11:48:40 +02004670echo "smartcard support $smartcard"
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01004671echo "libusb $libusb"
Hans de Goede69354a82011-07-19 11:04:10 +02004672echo "usb net redir $usb_redir"
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01004673echo "OpenGL support $opengl"
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11004674echo "libiscsi support $libiscsi"
Peter Lieven6542aa92014-02-03 10:26:13 +01004675echo "libnfs support $libnfs"
Michael Rothd138cee2011-08-01 14:52:57 -05004676echo "build guest agent $guest_agent"
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004677echo "QGA VSS support $guest_agent_with_vss"
Michael Roth50cbebb2015-07-07 18:10:09 -05004678echo "QGA w32 disk info $guest_agent_ntddscsi"
Michael Roth4c875d82015-08-25 15:46:18 -05004679echo "QGA MSI support $guest_agent_msi"
Eduardo Otubof7945732012-08-14 18:44:05 -03004680echo "seccomp support $seccomp"
Peter Maydell7c2acc72013-04-08 12:11:27 +01004681echo "coroutine backend $coroutine"
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02004682echo "coroutine pool $coroutine_pool"
Bharata B Raoeb100392012-09-24 14:42:45 +05304683echo "GlusterFS support $glusterfs"
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03004684echo "Archipelago support $archipelago"
Blue Swirl1d728c32012-05-01 18:45:39 +00004685echo "gcov $gcov_tool"
4686echo "gcov enabled $gcov"
Stefan Bergerab214c22013-02-27 12:47:52 -05004687echo "TPM support $tpm"
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01004688echo "libssh2 support $libssh2"
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01004689echo "TPM passthrough $tpm_passthrough"
Paolo Bonzini3556c232013-05-10 14:16:40 +02004690echo "QOM debugging $qom_cast_debug"
Jeff Cody4f18b782013-10-30 10:44:39 -04004691echo "vhdx $vhdx"
qiaonuohan607dacd2014-02-18 14:11:30 +08004692echo "lzo support $lzo"
4693echo "snappy support $snappy"
Peter Wu6b383c02015-01-06 18:48:14 +01004694echo "bzip2 support $bzip2"
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08004695echo "NUMA host support $numa"
Fam Zheng2847b462015-03-26 11:03:12 +08004696echo "tcmalloc support $tcmalloc"
Alexandre Derumier7b01cb92015-06-19 12:56:58 +02004697echo "jemalloc support $jemalloc"
bellard67b915a2004-03-31 23:37:16 +00004698
Stefan Weil1ba16962011-07-29 22:40:45 +02004699if test "$sdl_too_old" = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00004700echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00004701fi
bellard97a847b2003-08-10 21:36:04 +00004702
Juan Quintela98ec69a2009-07-16 18:34:18 +02004703config_host_mak="config-host.mak"
bellard97a847b2003-08-10 21:36:04 +00004704
Stefan Weildbd99ae2013-01-01 18:33:44 +01004705echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4706
Juan Quintela98ec69a2009-07-16 18:34:18 +02004707echo "# Automatically generated by configure - do not modify" > $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004708echo >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004709
Paolo Bonzinie6c3b0f2010-10-21 10:18:35 +02004710echo all: >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004711echo "prefix=$prefix" >> $config_host_mak
4712echo "bindir=$bindir" >> $config_host_mak
Alon Levy3aa5d2b2011-05-15 12:08:59 +03004713echo "libdir=$libdir" >> $config_host_mak
Michael Tokarev8bf188a2012-06-07 01:11:00 +04004714echo "libexecdir=$libexecdir" >> $config_host_mak
Alon Levy0f94d6d2011-06-27 11:58:20 +02004715echo "includedir=$includedir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004716echo "mandir=$mandir" >> $config_host_mak
Paolo Bonzini99d7cc72010-05-26 16:08:24 +02004717echo "sysconfdir=$sysconfdir" >> $config_host_mak
Eduardo Habkost22d07032012-04-18 16:55:42 -03004718echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
Eduardo Habkost9afa52c2012-04-18 16:55:46 -03004719echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4720echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
Fam Zhenge26110c2014-02-10 14:48:57 +08004721echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
Laszlo Ersek5a699bb2013-05-18 06:31:50 +02004722if test "$mingw32" = "no" ; then
4723 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4724fi
Michael Tokarevf354b1a2012-10-21 22:52:54 +04004725echo "qemu_helperdir=$libexecdir" >> $config_host_mak
Gerd Hoffmannf9943cd2013-01-04 10:15:53 +01004726echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4727echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
Anthony Liguori834574e2013-02-20 07:43:24 -06004728echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
Paolo Bonzinif544a482013-04-17 16:26:44 +02004729echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02004730
Juan Quintela98ec69a2009-07-16 18:34:18 +02004731echo "ARCH=$ARCH" >> $config_host_mak
Paolo Bonzini727e5282013-04-17 16:26:43 +02004732
aurel32f8393942009-04-13 18:45:38 +00004733if test "$debug_tcg" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004734 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
aurel32f8393942009-04-13 18:45:38 +00004735fi
aliguori1625af82009-04-05 17:41:02 +00004736if test "$strip_opt" = "yes" ; then
Hollis Blanchard52ba7842010-08-04 17:21:34 -07004737 echo "STRIP=${strip}" >> $config_host_mak
aliguori1625af82009-04-05 17:41:02 +00004738fi
bellard7d132992003-03-06 23:23:54 +00004739if test "$bigendian" = "yes" ; then
Juan Quintelae2542fe2009-07-27 16:13:06 +02004740 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004741fi
bellard67b915a2004-03-31 23:37:16 +00004742if test "$mingw32" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004743 echo "CONFIG_WIN32=y" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00004744 rc_version=`cat $source_path/VERSION`
4745 version_major=${rc_version%%.*}
4746 rc_version=${rc_version#*.}
4747 version_minor=${rc_version%%.*}
4748 rc_version=${rc_version#*.}
4749 version_subminor=${rc_version%%.*}
4750 version_micro=0
4751 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4752 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004753 if test "$guest_agent_with_vss" = "yes" ; then
4754 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
Michael Rothf33ca812015-08-26 16:19:41 -05004755 echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
Tomoki Sekiyamad9840e22013-08-07 11:40:03 -04004756 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4757 fi
Michael Roth50cbebb2015-07-07 18:10:09 -05004758 if test "$guest_agent_ntddscsi" = "yes" ; then
4759 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4760 fi
Michael Roth1a349042015-08-26 11:14:31 -05004761 if test "$guest_agent_msi" = "yes"; then
Yossi Hindin9dacf322015-05-06 14:57:40 +03004762 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4763 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4764 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4765 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4766 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4767 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4768 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4769 fi
pbrook210fa552007-02-27 21:04:49 +00004770else
Juan Quintela35f4df22009-07-27 16:13:07 +02004771 echo "CONFIG_POSIX=y" >> $config_host_mak
bellard67b915a2004-03-31 23:37:16 +00004772fi
blueswir1128ab2f2008-08-15 18:33:42 +00004773
Mark McLoughlindffcb712009-10-22 17:49:11 +01004774if test "$linux" = "yes" ; then
4775 echo "CONFIG_LINUX=y" >> $config_host_mak
4776fi
4777
bellard83fb7ad2004-07-05 21:25:26 +00004778if test "$darwin" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004779 echo "CONFIG_DARWIN=y" >> $config_host_mak
bellard83fb7ad2004-07-05 21:25:26 +00004780fi
malcb29fe3e2008-11-18 01:42:22 +00004781
4782if test "$aix" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004783 echo "CONFIG_AIX=y" >> $config_host_mak
malcb29fe3e2008-11-18 01:42:22 +00004784fi
4785
bellardec530c82006-04-25 22:36:06 +00004786if test "$solaris" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004787 echo "CONFIG_SOLARIS=y" >> $config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004788 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004789 if test "$needs_libsunmath" = "yes" ; then
Juan Quintela75b5a692009-07-27 16:13:23 +02004790 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
ths0475a5c2007-04-01 18:54:44 +00004791 fi
bellardec530c82006-04-25 22:36:06 +00004792fi
Andreas Färber179cf402010-09-20 00:50:43 +02004793if test "$haiku" = "yes" ; then
4794 echo "CONFIG_HAIKU=y" >> $config_host_mak
4795fi
bellard97a847b2003-08-10 21:36:04 +00004796if test "$static" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004797 echo "CONFIG_STATIC=y" >> $config_host_mak
bellard97a847b2003-08-10 21:36:04 +00004798fi
Stefan Weil1ba16962011-07-29 22:40:45 +02004799if test "$profiler" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004800 echo "CONFIG_PROFILER=y" >> $config_host_mak
bellard05c2a3e2006-02-08 22:39:17 +00004801fi
bellardc20709a2004-04-21 23:27:19 +00004802if test "$slirp" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004803 echo "CONFIG_SLIRP=y" >> $config_host_mak
Brade2d88302011-09-02 16:53:28 -04004804 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
bellardc20709a2004-04-21 23:27:19 +00004805fi
ths8a16d272008-07-19 09:56:24 +00004806if test "$vde" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004807 echo "CONFIG_VDE=y" >> $config_host_mak
ths8a16d272008-07-19 09:56:24 +00004808fi
Vincenzo Maffione58952132013-11-06 11:44:06 +01004809if test "$netmap" = "yes" ; then
4810 echo "CONFIG_NETMAP=y" >> $config_host_mak
4811fi
Gonglei015a33b2014-07-01 20:58:08 +08004812if test "$l2tpv3" = "yes" ; then
4813 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4814fi
Corey Bryant47e98652012-01-26 09:42:26 -05004815if test "$cap_ng" = "yes" ; then
4816 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4817fi
Juan Quintela2358a492009-07-27 16:13:25 +02004818echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004819for drv in $audio_drv_list; do
Stefan Weilbb55b712012-03-27 19:23:53 +02004820 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004821 echo "$def=y" >> $config_host_mak
malc0c58ac12008-06-25 21:04:05 +00004822done
Juan Quintela67f86e82009-08-03 14:46:59 +02004823if test "$audio_pt_int" = "yes" ; then
4824 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4825fi
malcd5631632009-10-10 01:13:41 +04004826if test "$audio_win_int" = "yes" ; then
4827 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4828fi
Fam Zhengb64ec4e2013-05-29 19:35:40 +08004829echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4830echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
Jes Sorensen821601e2011-03-16 13:33:36 +01004831if test "$vnc" = "yes" ; then
4832 echo "CONFIG_VNC=y" >> $config_host_mak
4833fi
aliguori2f9606b2009-03-06 20:27:28 +00004834if test "$vnc_sasl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004835 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
aliguori2f9606b2009-03-06 20:27:28 +00004836fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004837if test "$vnc_jpeg" = "yes" ; then
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004838 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
Corentin Chary2f6f5c72010-07-07 20:57:49 +02004839fi
Jes Sorensen821601e2011-03-16 13:33:36 +01004840if test "$vnc_png" = "yes" ; then
Corentin Charyefe556a2010-07-07 20:57:56 +02004841 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
Corentin Charyefe556a2010-07-07 20:57:56 +02004842fi
aliguori76655d62009-03-06 20:27:37 +00004843if test "$fnmatch" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004844 echo "CONFIG_FNMATCH=y" >> $config_host_mak
aliguori76655d62009-03-06 20:27:37 +00004845fi
Stefan Weilee682d22009-10-01 20:10:37 +02004846if test "$uuid" = "yes" ; then
4847 echo "CONFIG_UUID=y" >> $config_host_mak
4848fi
Christoph Hellwigdce512d2010-12-17 11:41:15 +01004849if test "$xfs" = "yes" ; then
4850 echo "CONFIG_XFS=y" >> $config_host_mak
4851fi
pbrookb1a550a2006-04-16 13:28:56 +00004852qemu_version=`head $source_path/VERSION`
Juan Quintela98ec69a2009-07-16 18:34:18 +02004853echo "VERSION=$qemu_version" >>$config_host_mak
Juan Quintela2358a492009-07-27 16:13:25 +02004854echo "PKGVERSION=$pkgversion" >>$config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004855echo "SRC_PATH=$source_path" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02004856echo "TARGET_DIRS=$target_list" >> $config_host_mak
Juan Quintelaa25dba12009-08-12 18:29:52 +02004857if [ "$docs" = "yes" ] ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004858 echo "BUILD_DOCS=yes" >> $config_host_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00004859fi
Fam Zheng17969262014-02-10 14:48:56 +08004860if test "$modules" = "yes"; then
Fam Zhenge26110c2014-02-10 14:48:57 +08004861 # $shacmd can generate a hash started with digit, which the compiler doesn't
4862 # like as an symbol. So prefix it with an underscore
4863 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08004864 echo "CONFIG_MODULES=y" >> $config_host_mak
4865fi
Juan Quintela1ac88f22009-07-27 16:13:14 +02004866if test "$sdl" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004867 echo "CONFIG_SDL=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004868 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
Juan Quintela1ac88f22009-07-27 16:13:14 +02004869 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004870fi
4871if test "$cocoa" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004872 echo "CONFIG_COCOA=y" >> $config_host_mak
balrog4d3b6f62008-02-10 16:33:14 +00004873fi
4874if test "$curses" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004875 echo "CONFIG_CURSES=y" >> $config_host_mak
bellard49ecc3f2007-11-07 19:25:15 +00004876fi
Riku Voipioebc996f2009-04-21 15:01:51 +03004877if test "$utimens" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004878 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
Riku Voipioebc996f2009-04-21 15:01:51 +03004879fi
Riku Voipio099d6b02009-05-05 12:10:04 +03004880if test "$pipe2" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004881 echo "CONFIG_PIPE2=y" >> $config_host_mak
Riku Voipio099d6b02009-05-05 12:10:04 +03004882fi
Kevin Wolf40ff6d72009-12-02 12:24:42 +01004883if test "$accept4" = "yes" ; then
4884 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4885fi
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304886if test "$splice" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004887 echo "CONFIG_SPLICE=y" >> $config_host_mak
vibisreenivasan3ce34df2009-05-16 18:32:41 +05304888fi
Riku Voipioc2882b92009-08-12 15:08:24 +03004889if test "$eventfd" = "yes" ; then
4890 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4891fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004892if test "$fallocate" = "yes" ; then
4893 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4894fi
Kusanagi Kouichi3d4fa432013-01-14 16:26:52 +01004895if test "$fallocate_punch_hole" = "yes" ; then
4896 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4897fi
Denis V. Lunevb953f072015-01-30 11:42:14 +03004898if test "$fallocate_zero_range" = "yes" ; then
4899 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4900fi
Kevin Wolfed911432014-09-29 17:12:59 +02004901if test "$posix_fallocate" = "yes" ; then
4902 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4903fi
Peter Maydellc727f472011-01-06 11:05:10 +00004904if test "$sync_file_range" = "yes" ; then
4905 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4906fi
Peter Maydelldace20d2011-01-10 13:11:24 +00004907if test "$fiemap" = "yes" ; then
4908 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4909fi
Ulrich Hechtd0927932009-09-17 20:22:14 +03004910if test "$dup3" = "yes" ; then
4911 echo "CONFIG_DUP3=y" >> $config_host_mak
4912fi
Alex Bligh4e0c6522013-08-21 16:02:43 +01004913if test "$ppoll" = "yes" ; then
4914 echo "CONFIG_PPOLL=y" >> $config_host_mak
4915fi
Alex Blighcd758dd2013-08-21 16:02:44 +01004916if test "$prctl_pr_set_timerslack" = "yes" ; then
4917 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4918fi
Peter Maydell3b6edd12011-02-15 18:35:05 +00004919if test "$epoll" = "yes" ; then
4920 echo "CONFIG_EPOLL=y" >> $config_host_mak
4921fi
4922if test "$epoll_create1" = "yes" ; then
4923 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4924fi
4925if test "$epoll_pwait" = "yes" ; then
4926 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4927fi
Peter Maydella8fd1ab2013-02-08 07:31:55 +00004928if test "$sendfile" = "yes" ; then
4929 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4930fi
Riku Voipio51834342014-06-22 11:25:42 +01004931if test "$timerfd" = "yes" ; then
4932 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4933fi
Riku Voipio9af5c902014-08-12 15:58:57 +03004934if test "$setns" = "yes" ; then
4935 echo "CONFIG_SETNS=y" >> $config_host_mak
4936fi
aurel323b3f24a2009-04-15 16:12:13 +00004937if test "$inotify" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02004938 echo "CONFIG_INOTIFY=y" >> $config_host_mak
aurel323b3f24a2009-04-15 16:12:13 +00004939fi
Riku Voipioc05c7a72010-03-26 15:25:11 +00004940if test "$inotify1" = "yes" ; then
4941 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4942fi
Juan Quintela6ae9a1f2009-08-03 14:45:58 +02004943if test "$byteswap_h" = "yes" ; then
4944 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4945fi
4946if test "$bswap_h" = "yes" ; then
4947 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4948fi
Alexander Graf769ce762009-05-11 17:41:42 +02004949if test "$curl" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08004950 echo "CONFIG_CURL=m" >> $config_host_mak
Juan Quintelab1d5a272009-08-03 14:46:05 +02004951 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08004952 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
Alexander Graf769ce762009-05-11 17:41:42 +02004953fi
aurel322e4d9fb2008-04-08 06:01:02 +00004954if test "$brlapi" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004955 echo "CONFIG_BRLAPI=y" >> $config_host_mak
aurel322e4d9fb2008-04-08 06:01:02 +00004956fi
balrogfb599c92008-09-28 23:49:55 +00004957if test "$bluez" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02004958 echo "CONFIG_BLUEZ=y" >> $config_host_mak
Juan Quintelaef7635e2009-07-27 16:12:46 +02004959 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
balrogfb599c92008-09-28 23:49:55 +00004960fi
Dr. David Alan Gilbertd46f7c92015-06-24 10:45:42 +01004961if test "$glib_subprocess" = "yes" ; then
Michael S. Tsirkin9d414012014-09-18 20:46:45 +03004962 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4963fi
Anthony Liguorie18df142011-07-19 14:50:29 -05004964echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004965if test "$gtk" = "yes" ; then
4966 echo "CONFIG_GTK=y" >> $config_host_mak
Cole Robinsona3f4d632014-04-24 13:35:52 -04004967 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004968 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
Gerd Hoffmann925a0402015-05-26 12:26:21 +02004969 if test "$gtk_gl" = "yes" ; then
4970 echo "CONFIG_GTK_GL=y" >> $config_host_mak
4971 fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004972fi
Daniel P. Berrangeddbb0d02015-07-01 18:10:29 +01004973if test "$gnutls" = "yes" ; then
4974 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4975fi
4976if test "$gnutls_hash" = "yes" ; then
4977 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4978fi
Daniel P. Berrange62893b62015-07-01 18:10:33 +01004979if test "$gnutls_gcrypt" = "yes" ; then
4980 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4981fi
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004982if test "$gnutls_nettle" = "yes" ; then
4983 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
Radim Krčmářbecaeb72015-07-10 19:18:00 +02004984 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
Daniel P. Berrangeed754742015-07-01 18:10:34 +01004985fi
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01004986if test "$tasn1" = "yes" ; then
4987 echo "CONFIG_TASN1=y" >> $config_host_mak
4988fi
Stefan Weilbbbf9bf2014-02-19 07:04:34 +01004989if test "$vte" = "yes" ; then
4990 echo "CONFIG_VTE=y" >> $config_host_mak
Anthony Liguoria4ccabc2013-02-20 07:43:20 -06004991 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4992fi
Gerd Hoffmann9d9e1522014-07-11 12:51:43 +02004993if test "$virglrenderer" = "yes" ; then
4994 echo "CONFIG_VIRGL=y" >> $config_host_mak
4995 echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
4996 echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
4997fi
aliguorie37630c2009-04-22 15:19:10 +00004998if test "$xen" = "yes" ; then
Jan Kiszka6dbd5882011-06-21 22:59:07 +02004999 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
Anthony PERARDd5b93dd2011-02-25 16:20:34 +00005000 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
aliguorie37630c2009-04-22 15:19:10 +00005001fi
Christoph Hellwig5c6c3a62009-08-20 16:58:35 +02005002if test "$linux_aio" = "yes" ; then
5003 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5004fi
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005005if test "$attr" = "yes" ; then
5006 echo "CONFIG_ATTR=y" >> $config_host_mak
5007fi
Avi Kivity4f26f2b2011-11-09 14:44:52 +02005008if test "$libattr" = "yes" ; then
5009 echo "CONFIG_LIBATTR=y" >> $config_host_mak
5010fi
Meador Inge983eef52012-02-24 14:00:42 +05305011if test "$virtfs" = "yes" ; then
5012 echo "CONFIG_VIRTFS=y" >> $config_host_mak
Venkateswararao Jujjuri (JV)758e8e32010-06-14 13:34:41 -07005013fi
Nicholas Bellinger5e9be922013-03-29 01:08:16 +00005014if test "$vhost_scsi" = "yes" ; then
5015 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5016fi
Nikolay Nikolaev03ce5742014-06-10 13:02:16 +03005017if test "$vhost_net" = "yes" ; then
5018 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5019fi
ths77755342008-11-27 15:45:16 +00005020if test "$blobs" = "yes" ; then
Juan Quintela98ec69a2009-07-16 18:34:18 +02005021 echo "INSTALL_BLOBS=yes" >> $config_host_mak
ths77755342008-11-27 15:45:16 +00005022fi
aliguoribf9298b2008-12-05 20:05:26 +00005023if test "$iovec" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005024 echo "CONFIG_IOVEC=y" >> $config_host_mak
aliguoribf9298b2008-12-05 20:05:26 +00005025fi
aliguoriceb42de2009-04-07 18:43:28 +00005026if test "$preadv" = "yes" ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005027 echo "CONFIG_PREADV=y" >> $config_host_mak
aliguoriceb42de2009-04-07 18:43:28 +00005028fi
aurel32f652e6a2008-12-16 10:43:48 +00005029if test "$fdt" = "yes" ; then
Juan Quintela3f0855b2009-07-27 16:12:52 +02005030 echo "CONFIG_FDT=y" >> $config_host_mak
aurel32f652e6a2008-12-16 10:43:48 +00005031fi
Marcelo Tosattidcc38d12010-10-11 15:31:15 -03005032if test "$signalfd" = "yes" ; then
5033 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5034fi
Stefan Weil9195b2c2011-10-19 07:07:18 +02005035if test "$tcg_interpreter" = "yes" ; then
5036 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5037fi
Blue Swirl5f6b9e82009-09-20 06:56:26 +00005038if test "$fdatasync" = "yes" ; then
5039 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5040fi
Andreas Färbere78815a2010-09-25 11:26:05 +00005041if test "$madvise" = "yes" ; then
5042 echo "CONFIG_MADVISE=y" >> $config_host_mak
5043fi
5044if test "$posix_madvise" = "yes" ; then
5045 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5046fi
Richard Henderson1e9737d2012-10-23 07:33:00 +10005047if test "$sigev_thread_id" = "yes" ; then
5048 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
5049fi
bellard97a847b2003-08-10 21:36:04 +00005050
Gerd Hoffmanncd4ec0b2010-03-24 10:26:51 +01005051if test "$spice" = "yes" ; then
5052 echo "CONFIG_SPICE=y" >> $config_host_mak
5053fi
5054
Marc-André Lureau7b02f542015-08-30 11:48:40 +02005055if test "$smartcard" = "yes" ; then
5056 echo "CONFIG_SMARTCARD=y" >> $config_host_mak
Robert Relyea111a38b2010-11-28 16:36:38 +02005057fi
5058
Gerd Hoffmann2b2325f2012-11-30 16:02:11 +01005059if test "$libusb" = "yes" ; then
5060 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5061fi
5062
Hans de Goede69354a82011-07-19 11:04:10 +02005063if test "$usb_redir" = "yes" ; then
5064 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5065fi
5066
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005067if test "$opengl" = "yes" ; then
5068 echo "CONFIG_OPENGL=y" >> $config_host_mak
Jeremy Whitef676c672015-01-09 13:08:49 -06005069 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
Gerd Hoffmannda076ff2014-11-20 09:49:44 +01005070 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
Michael Walle20ff0752011-03-07 23:32:39 +01005071fi
5072
qiaonuohan607dacd2014-02-18 14:11:30 +08005073if test "$lzo" = "yes" ; then
5074 echo "CONFIG_LZO=y" >> $config_host_mak
5075fi
5076
5077if test "$snappy" = "yes" ; then
5078 echo "CONFIG_SNAPPY=y" >> $config_host_mak
5079fi
5080
Peter Wu6b383c02015-01-06 18:48:14 +01005081if test "$bzip2" = "yes" ; then
5082 echo "CONFIG_BZIP2=y" >> $config_host_mak
5083 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5084fi
5085
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005086if test "$libiscsi" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005087 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005088 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5089 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
Ronnie Sahlbergc589b242011-10-25 19:24:24 +11005090fi
5091
Peter Lieven6542aa92014-02-03 10:26:13 +01005092if test "$libnfs" = "yes" ; then
5093 echo "CONFIG_LIBNFS=y" >> $config_host_mak
5094fi
5095
Eduardo Otubof7945732012-08-14 18:44:05 -03005096if test "$seccomp" = "yes"; then
5097 echo "CONFIG_SECCOMP=y" >> $config_host_mak
5098fi
5099
bellard83fb7ad2004-07-05 21:25:26 +00005100# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00005101if [ "$bsd" = "yes" ] ; then
Juan Quintela2358a492009-07-27 16:13:25 +02005102 echo "CONFIG_BSD=y" >> $config_host_mak
bellard7d3505c2004-05-12 19:32:15 +00005103fi
5104
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005105if test "$zero_malloc" = "yes" ; then
5106 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
5107fi
Daniel P. Berrange4d9310f2015-09-22 15:13:26 +01005108if test "$localtime_r" = "yes" ; then
5109 echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5110fi
Paolo Bonzini3556c232013-05-10 14:16:40 +02005111if test "$qom_cast_debug" = "yes" ; then
5112 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5113fi
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005114if test "$rbd" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005115 echo "CONFIG_RBD=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005116 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5117 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
Christian Brunnerf27aaf42010-12-06 20:53:01 +01005118fi
Anthony Liguori20ff6c82009-12-09 12:59:36 -06005119
Peter Maydell7c2acc72013-04-08 12:11:27 +01005120echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
Stefan Hajnoczi70c60c02013-09-11 16:42:35 +02005121if test "$coroutine_pool" = "yes" ; then
5122 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5123else
5124 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5125fi
Aneesh Kumar K.Vd0e2fce2011-06-09 23:11:06 +05305126
Aneesh Kumar K.Vd2042372011-10-12 19:11:24 +05305127if test "$open_by_handle_at" = "yes" ; then
5128 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5129fi
5130
Harsh Prateek Borae06a7652011-10-12 19:11:25 +05305131if test "$linux_magic_h" = "yes" ; then
5132 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5133fi
5134
Gerd Hoffmanncc6e3ca2013-01-09 10:17:07 +01005135if test "$pragma_diagnostic_available" = "yes" ; then
5136 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
Peter Maydell06d71fa2012-07-30 16:13:07 +01005137fi
5138
Kevin Wolf3f4349d2012-06-29 13:40:27 +02005139if test "$valgrind_h" = "yes" ; then
5140 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5141fi
5142
Luiz Capitulino8ab1bf12012-05-23 15:48:04 -03005143if test "$has_environ" = "yes" ; then
5144 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5145fi
5146
Richard Henderson76a347e2012-12-28 14:17:02 -08005147if test "$cpuid_h" = "yes" ; then
5148 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5149fi
5150
Richard Hendersonf5401662013-02-16 12:46:59 -08005151if test "$int128" = "yes" ; then
5152 echo "CONFIG_INT128=y" >> $config_host_mak
5153fi
5154
Richard Henderson1e6e9ac2013-02-18 09:11:15 -08005155if test "$getauxval" = "yes" ; then
5156 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5157fi
5158
Bharata B Raoeb100392012-09-24 14:42:45 +05305159if test "$glusterfs" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005160 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005161 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5162 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
Bharata B Raoeb100392012-09-24 14:42:45 +05305163fi
5164
Bharata B Rao0c14fb42013-07-16 21:47:42 +05305165if test "$glusterfs_discard" = "yes" ; then
5166 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5167fi
5168
Bharata B Rao7c815372013-12-21 14:51:25 +05305169if test "$glusterfs_zerofill" = "yes" ; then
5170 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5171fi
5172
Chrysostomos Nanakosc9a12e72014-08-04 17:35:32 +03005173if test "$archipelago" = "yes" ; then
5174 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5175 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5176fi
5177
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005178if test "$libssh2" = "yes" ; then
Fam Zhengd3399d72014-02-10 14:49:00 +08005179 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
Fam Zheng6ebc91e2014-02-10 14:48:54 +08005180 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5181 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
Richard W.M. Jones0a12ec82013-04-09 15:30:53 +01005182fi
5183
Jeff Cody4f18b782013-10-30 10:44:39 -04005184if test "$vhdx" = "yes" ; then
5185 echo "CONFIG_VHDX=y" >> $config_host_mak
5186fi
5187
blueswir168063642008-11-22 21:03:55 +00005188# USB host support
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005189if test "$libusb" = "yes"; then
5190 echo "HOST_USB=libusb legacy" >> $config_host_mak
5191else
Juan Quintela98ec69a2009-07-16 18:34:18 +02005192 echo "HOST_USB=stub" >> $config_host_mak
Gerd Hoffmannb5613fd2013-09-10 11:02:59 +02005193fi
blueswir168063642008-11-22 21:03:55 +00005194
Paolo Bonzini3b8acc12013-03-18 16:37:50 +01005195# TPM passthrough support?
5196if test "$tpm" = "yes"; then
5197 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5198 if test "$tpm_passthrough" = "yes"; then
5199 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5200 fi
5201fi
5202
Lluís Vilanova5b808272014-05-27 15:02:14 +02005203echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5204if have_backend "nop"; then
Lluís6d8a7642011-08-31 20:30:43 +02005205 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
Prerna Saxena22890ab2010-06-24 17:04:53 +05305206fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005207if have_backend "simple"; then
Lluís6d8a7642011-08-31 20:30:43 +02005208 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5209 # Set the appropriate trace file.
Andreas Färber953ffe02011-06-02 19:58:06 +02005210 trace_file="\"$trace_file-\" FMT_pid"
Prerna Saxena9410b562010-07-13 09:26:32 +01005211fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005212if have_backend "stderr"; then
Lluís6d8a7642011-08-31 20:30:43 +02005213 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5214fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005215if have_backend "ust"; then
Lluís6d8a7642011-08-31 20:30:43 +02005216 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5217fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005218if have_backend "dtrace"; then
Lluís6d8a7642011-08-31 20:30:43 +02005219 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5220 if test "$trace_backend_stap" = "yes" ; then
5221 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5222 fi
Daniel P. Berrangec276b172010-11-12 13:20:25 +00005223fi
Lluís Vilanova5b808272014-05-27 15:02:14 +02005224if have_backend "ftrace"; then
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005225 if test "$linux" = "yes" ; then
5226 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005227 else
Stewart Smith21684af2014-01-24 12:39:10 +11005228 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
Eiichi Tsukata781e9542013-04-11 20:25:15 +09005229 fi
5230fi
Prerna Saxena9410b562010-07-13 09:26:32 +01005231echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5232
Michael R. Hines2da776d2013-07-22 10:01:54 -04005233if test "$rdma" = "yes" ; then
5234 echo "CONFIG_RDMA=y" >> $config_host_mak
5235fi
5236
Dr. David Alan Gilbert5c312072014-03-12 11:48:18 +00005237# Hold two types of flag:
5238# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5239# a thread we have a handle to
5240# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5241# platform
5242if test "$pthread_setname_np" = "yes" ; then
5243 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5244 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5245fi
5246
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005247if test "$tcg_interpreter" = "yes"; then
5248 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5249elif test "$ARCH" = "sparc64" ; then
5250 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5251elif test "$ARCH" = "s390x" ; then
5252 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005253elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005254 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
Richard Henderson40d964b2014-04-30 14:07:47 -07005255elif test "$ARCH" = "ppc64" ; then
5256 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
Paolo Bonzini5b5e3032013-04-17 16:26:35 +02005257else
5258 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5259fi
5260QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5261
Juan Quintela98ec69a2009-07-16 18:34:18 +02005262echo "TOOLS=$tools" >> $config_host_mak
Juan Quintela98ec69a2009-07-16 18:34:18 +02005263echo "ROMS=$roms" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005264echo "MAKE=$make" >> $config_host_mak
5265echo "INSTALL=$install" >> $config_host_mak
Brad1901cb12011-08-28 04:01:33 -04005266echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5267echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
Paolo Bonzini21655882012-12-20 18:57:45 +01005268if test -n "$libtool"; then
5269 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5270 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5271else
5272 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5273 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5274fi
Blue Swirlc886edf2011-07-22 21:08:09 +00005275echo "PYTHON=$python" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005276echo "CC=$cc" >> $config_host_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005277if $iasl -h > /dev/null 2>&1; then
5278 echo "IASL=$iasl" >> $config_host_mak
5279fi
Paolo Bonzini2b2e59e2010-10-21 10:18:40 +02005280echo "CC_I386=$cc_i386" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005281echo "HOST_CC=$host_cc" >> $config_host_mak
Tomoki Sekiyama83f73fc2013-08-07 11:39:36 -04005282echo "CXX=$cxx" >> $config_host_mak
Peter Maydell3c4a4d02012-08-11 22:34:40 +01005283echo "OBJCC=$objcc" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005284echo "AR=$ar" >> $config_host_mak
Peter Maydell45d285a2013-10-21 21:03:06 +01005285echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005286echo "AS=$as" >> $config_host_mak
5287echo "CPP=$cpp" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005288echo "OBJCOPY=$objcopy" >> $config_host_mak
5289echo "LD=$ld" >> $config_host_mak
Stefan Weil4852ee92014-09-18 21:55:08 +02005290echo "NM=$nm" >> $config_host_mak
Blue Swirl9fe6de92010-09-26 16:07:57 +00005291echo "WINDRES=$windres" >> $config_host_mak
Alon Levy44dc0ca2011-05-15 11:51:28 +03005292echo "LIBTOOL=$libtool" >> $config_host_mak
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005293echo "CFLAGS=$CFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005294echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
Juan Quintelaa558ee12009-08-03 14:46:21 +02005295echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
Paolo Bonzinif9728942010-12-23 11:43:53 +01005296echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005297if test "$sparse" = "yes" ; then
5298 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
Christian Borntraeger80fd48d2015-01-22 10:53:46 +01005299 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
Gerd Hoffmann2944d742014-10-15 11:51:09 +02005300 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
Paolo Bonzinie39f0062010-12-23 11:43:51 +01005301 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5302 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5303fi
Gerd Hoffmann42da6042012-11-07 11:09:52 +01005304if test "$cross_prefix" != ""; then
5305 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5306else
5307 echo "AUTOCONF_HOST := " >> $config_host_mak
5308fi
Juan Quintelae2a2ed02009-08-03 14:46:02 +02005309echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
Brad46eef332013-12-10 19:49:08 -05005310echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
Marc-André Lureau37746c52013-02-25 23:31:12 +01005311echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
Juan Quintela73da3752009-08-03 14:46:26 +02005312echo "LIBS+=$LIBS" >> $config_host_mak
Juan Quintela3e2e0e62009-08-03 14:47:06 +02005313echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
Juan Quintela804edf22009-07-27 16:12:49 +02005314echo "EXESUF=$EXESUF" >> $config_host_mak
Fam Zheng17969262014-02-10 14:48:56 +08005315echo "DSOSUF=$DSOSUF" >> $config_host_mak
5316echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
Michael Roth957f1f92011-08-11 15:38:12 -05005317echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
Daniel P. Berrange9a2fd432015-04-13 14:01:39 +01005318echo "TEST_LIBS=$test_libs" >> $config_host_mak
5319echo "TEST_CFLAGS=$test_cflags" >> $config_host_mak
Gerd Hoffmann94dd53c2012-03-29 10:55:18 +02005320echo "POD2MAN=$POD2MAN" >> $config_host_mak
Paolo Bonzinicbdd1992012-11-28 09:40:23 +01005321echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
Blue Swirl1d728c32012-05-01 18:45:39 +00005322if test "$gcov" = "yes" ; then
5323 echo "CONFIG_GCOV=y" >> $config_host_mak
5324 echo "GCOV=$gcov_tool" >> $config_host_mak
5325fi
Juan Quintela804edf22009-07-27 16:12:49 +02005326
Peter Maydell6efd7512011-11-30 11:59:04 +00005327# use included Linux headers
5328if test "$linux" = "yes" ; then
Andreas Färbera307beb2012-06-14 15:14:33 +00005329 mkdir -p linux-headers
Peter Maydell6efd7512011-11-30 11:59:04 +00005330 case "$cpu" in
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005331 i386|x86_64|x32)
Peter Maydell08312a62012-08-03 13:51:25 +01005332 linux_arch=x86
Peter Maydell6efd7512011-11-30 11:59:04 +00005333 ;;
5334 ppcemb|ppc|ppc64)
Peter Maydell08312a62012-08-03 13:51:25 +01005335 linux_arch=powerpc
Peter Maydell6efd7512011-11-30 11:59:04 +00005336 ;;
5337 s390x)
Peter Maydell08312a62012-08-03 13:51:25 +01005338 linux_arch=s390
5339 ;;
Claudio Fontana1f080312013-06-12 16:20:23 +01005340 aarch64)
5341 linux_arch=arm64
5342 ;;
Sanjay Lal222e7d12014-06-17 23:10:36 +01005343 mips64)
5344 linux_arch=mips
5345 ;;
Peter Maydell08312a62012-08-03 13:51:25 +01005346 *)
5347 # For most CPUs the kernel architecture name and QEMU CPU name match.
5348 linux_arch="$cpu"
Peter Maydell6efd7512011-11-30 11:59:04 +00005349 ;;
5350 esac
Peter Maydell08312a62012-08-03 13:51:25 +01005351 # For non-KVM architectures we will not have asm headers
5352 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5353 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5354 fi
Peter Maydell6efd7512011-11-30 11:59:04 +00005355fi
5356
bellard1d14ffa2005-10-30 18:58:22 +00005357for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00005358target_dir="$target"
Juan Quintela25be2102009-10-07 02:41:00 +02005359config_target_mak=$target_dir/config-target.mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005360target_name=`echo $target | cut -d '-' -f 1`
bellard97a847b2003-08-10 21:36:04 +00005361target_bigendian="no"
Juan Quintela1f3d3c82009-10-07 02:41:02 +02005362
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005363case "$target_name" in
Anthony Greend15a9c22013-03-18 15:49:25 -04005364 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 +02005365 target_bigendian=yes
5366 ;;
5367esac
bellard97a847b2003-08-10 21:36:04 +00005368target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00005369target_user_only="no"
ths831b7822007-01-18 20:06:33 +00005370target_linux_user="no"
blueswir184778502008-10-26 20:33:16 +00005371target_bsd_user="no"
pbrook9e407a82007-05-26 16:38:53 +00005372case "$target" in
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005373 ${target_name}-softmmu)
pbrook9e407a82007-05-26 16:38:53 +00005374 target_softmmu="yes"
5375 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005376 ${target_name}-linux-user)
Blue Swirl9c7a4202009-11-17 20:52:56 +00005377 if test "$linux" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005378 error_exit "Target '$target' is only available on a Linux host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005379 fi
pbrook9e407a82007-05-26 16:38:53 +00005380 target_user_only="yes"
5381 target_linux_user="yes"
5382 ;;
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005383 ${target_name}-bsd-user)
Blue Swirl9cf55762009-11-17 21:27:18 +00005384 if test "$bsd" != "yes" ; then
Peter Maydell76ad07a2013-04-08 12:11:26 +01005385 error_exit "Target '$target' is only available on a BSD host"
Blue Swirl9c7a4202009-11-17 20:52:56 +00005386 fi
blueswir184778502008-10-26 20:33:16 +00005387 target_user_only="yes"
5388 target_bsd_user="yes"
5389 ;;
pbrook9e407a82007-05-26 16:38:53 +00005390 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005391 error_exit "Target '$target' not recognised"
pbrook9e407a82007-05-26 16:38:53 +00005392 exit 1
5393 ;;
5394esac
ths831b7822007-01-18 20:06:33 +00005395
bellard97a847b2003-08-10 21:36:04 +00005396mkdir -p $target_dir
Juan Quintela25be2102009-10-07 02:41:00 +02005397echo "# Automatically generated by configure - do not modify" > $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005398
pbrooke5fe0c52006-06-11 13:32:59 +00005399bflt="no"
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005400interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
pbrook56aebc82008-10-11 17:55:29 +00005401gdb_xml_files=""
aliguori7ba1e612008-11-05 16:04:33 +00005402
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005403TARGET_ARCH="$target_name"
Juan Quintela6acff7d2009-07-16 18:34:15 +02005404TARGET_BASE_ARCH=""
Juan Quintelae6e91b92009-07-16 18:34:17 +02005405TARGET_ABI_DIR=""
Juan Quintelae73aae62009-07-16 18:34:14 +02005406
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005407case "$target_name" in
aurel322408a522008-04-20 20:19:44 +00005408 i386)
aurel322408a522008-04-20 20:19:44 +00005409 ;;
5410 x86_64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005411 TARGET_BASE_ARCH=i386
aurel322408a522008-04-20 20:19:44 +00005412 ;;
5413 alpha)
aurel322408a522008-04-20 20:19:44 +00005414 ;;
5415 arm|armeb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005416 TARGET_ARCH=arm
aurel322408a522008-04-20 20:19:44 +00005417 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005418 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00005419 ;;
Alexander Graf6a49fa92013-09-03 20:12:22 +01005420 aarch64)
5421 TARGET_BASE_ARCH=arm
5422 bflt="yes"
Peter Maydell8f95ce22014-09-29 18:48:47 +01005423 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 +01005424 ;;
aurel322408a522008-04-20 20:19:44 +00005425 cris)
aurel322408a522008-04-20 20:19:44 +00005426 ;;
Michael Walle613a22c2011-02-17 23:45:17 +01005427 lm32)
Michael Walle613a22c2011-02-17 23:45:17 +01005428 ;;
aurel322408a522008-04-20 20:19:44 +00005429 m68k)
aurel322408a522008-04-20 20:19:44 +00005430 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00005431 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00005432 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005433 microblaze|microblazeel)
5434 TARGET_ARCH=microblaze
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005435 bflt="yes"
Edgar E. Iglesias72b675c2009-05-20 21:17:31 +02005436 ;;
Juan Quintela0adcffb2009-07-16 18:34:16 +02005437 mips|mipsel)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005438 TARGET_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005439 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005440 ;;
5441 mipsn32|mipsn32el)
Richard Henderson597e2ce2013-02-10 10:30:50 -08005442 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005443 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005444 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
Richard Henderson597e2ce2013-02-10 10:30:50 -08005445 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005446 ;;
5447 mips64|mips64el)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005448 TARGET_ARCH=mips64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005449 TARGET_BASE_ARCH=mips
Juan Quintela25be2102009-10-07 02:41:00 +02005450 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005451 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005452 moxie)
5453 ;;
Jia Liue67db062012-07-20 15:50:39 +08005454 or32)
5455 TARGET_ARCH=openrisc
5456 TARGET_BASE_ARCH=openrisc
Jia Liue67db062012-07-20 15:50:39 +08005457 ;;
aurel322408a522008-04-20 20:19:44 +00005458 ppc)
aurel32c8b35322009-01-24 15:07:34 +00005459 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005460 ;;
5461 ppcemb)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005462 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005463 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005464 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005465 ;;
5466 ppc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005467 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005468 TARGET_ABI_DIR=ppc
aurel32c8b35322009-01-24 15:07:34 +00005469 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005470 ;;
Doug Kwan9c351262014-05-29 09:12:21 -05005471 ppc64le)
5472 TARGET_ARCH=ppc64
5473 TARGET_BASE_ARCH=ppc
5474 TARGET_ABI_DIR=ppc
5475 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5476 ;;
aurel322408a522008-04-20 20:19:44 +00005477 ppc64abi32)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005478 TARGET_ARCH=ppc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005479 TARGET_BASE_ARCH=ppc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005480 TARGET_ABI_DIR=ppc
Juan Quintela25be2102009-10-07 02:41:00 +02005481 echo "TARGET_ABI32=y" >> $config_target_mak
aurel32c8b35322009-01-24 15:07:34 +00005482 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
aurel322408a522008-04-20 20:19:44 +00005483 ;;
5484 sh4|sh4eb)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005485 TARGET_ARCH=sh4
aurel322408a522008-04-20 20:19:44 +00005486 bflt="yes"
5487 ;;
5488 sparc)
aurel322408a522008-04-20 20:19:44 +00005489 ;;
5490 sparc64)
Juan Quintela6acff7d2009-07-16 18:34:15 +02005491 TARGET_BASE_ARCH=sparc
aurel322408a522008-04-20 20:19:44 +00005492 ;;
5493 sparc32plus)
Juan Quintelab498c8a2009-07-16 18:34:11 +02005494 TARGET_ARCH=sparc64
Juan Quintela6acff7d2009-07-16 18:34:15 +02005495 TARGET_BASE_ARCH=sparc
Juan Quintelae6e91b92009-07-16 18:34:17 +02005496 TARGET_ABI_DIR=sparc
Juan Quintela25be2102009-10-07 02:41:00 +02005497 echo "TARGET_ABI32=y" >> $config_target_mak
aurel322408a522008-04-20 20:19:44 +00005498 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005499 s390x)
David Hildenbrand8a641ff2015-10-01 10:49:44 +02005500 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 +01005501 ;;
Chen Gang444e06b2015-08-21 05:43:37 +08005502 tilegx)
5503 ;;
Peter Crosthwaite5ecaa4e2015-04-26 19:14:26 -07005504 tricore)
5505 ;;
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005506 unicore32)
Guan Xuetaod2fbca92011-04-12 16:27:03 +08005507 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005508 xtensa|xtensaeb)
5509 TARGET_ARCH=xtensa
Max Filippovcfa550c2011-09-06 03:55:26 +04005510 ;;
aurel322408a522008-04-20 20:19:44 +00005511 *)
Peter Maydell76ad07a2013-04-08 12:11:26 +01005512 error_exit "Unsupported target CPU"
aurel322408a522008-04-20 20:19:44 +00005513 ;;
5514esac
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005515# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5516if [ "$TARGET_BASE_ARCH" = "" ]; then
5517 TARGET_BASE_ARCH=$TARGET_ARCH
5518fi
5519
Paolo Bonzini5e8861a2012-05-29 10:23:15 +02005520symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5521
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005522upper() {
5523 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5524}
5525
Daniel P. Berrange99afc912012-08-20 15:31:38 +01005526target_arch_name="`upper $TARGET_ARCH`"
Juan Quintela25be2102009-10-07 02:41:00 +02005527echo "TARGET_$target_arch_name=y" >> $config_target_mak
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005528echo "TARGET_NAME=$target_name" >> $config_target_mak
Juan Quintela25be2102009-10-07 02:41:00 +02005529echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
Juan Quintelae6e91b92009-07-16 18:34:17 +02005530if [ "$TARGET_ABI_DIR" = "" ]; then
5531 TARGET_ABI_DIR=$TARGET_ARCH
5532fi
Juan Quintela25be2102009-10-07 02:41:00 +02005533echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
Stacey Sonadfc3e92014-06-08 09:57:22 -07005534if [ "$HOST_VARIANT_DIR" != "" ]; then
5535 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5536fi
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005537case "$target_name" in
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005538 i386|x86_64)
5539 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005540 echo "CONFIG_XEN=y" >> $config_target_mak
Anthony PERARDeb6fda02012-06-21 15:32:59 +00005541 if test "$xen_pci_passthrough" = yes; then
5542 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5543 fi
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005544 fi
Alexander Graf59d21e52011-07-17 07:30:29 +02005545 ;;
5546 *)
Juan Quintela1b0c87f2009-07-16 18:33:59 +02005547esac
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005548case "$target_name" in
Sanjay Lal222e7d12014-06-17 23:10:36 +01005549 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
Juan Quintelac59249f2009-07-16 18:34:00 +02005550 # Make sure the target and host cpus are compatible
5551 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005552 \( "$target_name" = "$cpu" -o \
5553 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5554 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5555 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5556 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
Sanjay Lal222e7d12014-06-17 23:10:36 +01005557 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
Paolo Bonzinic1799a82013-06-14 15:19:07 +01005558 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
Michael Tokarev18b82632015-03-12 09:13:45 +03005559 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5560 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5561 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005562 echo "CONFIG_KVM=y" >> $config_target_mak
Stefan Weil1ba16962011-07-29 22:40:45 +02005563 if test "$vhost_net" = "yes" ; then
Michael S. Tsirkind5970052010-03-17 13:08:17 +02005564 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5565 fi
Juan Quintelac59249f2009-07-16 18:34:00 +02005566 fi
5567esac
bellardde83cd02003-06-15 20:25:43 +00005568if test "$target_bigendian" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005569 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
bellard97a847b2003-08-10 21:36:04 +00005570fi
5571if test "$target_softmmu" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005572 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
bellardde83cd02003-06-15 20:25:43 +00005573fi
bellard997344f2003-10-27 21:10:39 +00005574if test "$target_user_only" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005575 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
Stefan Weila2c80be2011-12-22 11:26:10 +01005576 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
bellard997344f2003-10-27 21:10:39 +00005577fi
ths831b7822007-01-18 20:06:33 +00005578if test "$target_linux_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005579 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
ths831b7822007-01-18 20:06:33 +00005580fi
pbrook56aebc82008-10-11 17:55:29 +00005581list=""
5582if test ! -z "$gdb_xml_files" ; then
5583 for x in $gdb_xml_files; do
5584 list="$list $source_path/gdb-xml/$x"
5585 done
Juan Quintela3d0f1512009-10-07 02:41:04 +02005586 echo "TARGET_XML_FILES=$list" >> $config_target_mak
pbrook56aebc82008-10-11 17:55:29 +00005587fi
bellardde83cd02003-06-15 20:25:43 +00005588
pbrooke5fe0c52006-06-11 13:32:59 +00005589if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
Juan Quintela25be2102009-10-07 02:41:00 +02005590 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
pbrooke5fe0c52006-06-11 13:32:59 +00005591fi
blueswir184778502008-10-26 20:33:16 +00005592if test "$target_bsd_user" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005593 echo "CONFIG_BSD_USER=y" >> $config_target_mak
blueswir184778502008-10-26 20:33:16 +00005594fi
bellard5b0753e2005-03-01 21:37:28 +00005595
Juan Quintela4afddb52009-08-03 14:46:45 +02005596# generate QEMU_CFLAGS/LDFLAGS for targets
Juan Quintelafa282482009-07-22 22:37:39 +02005597
Juan Quintela4afddb52009-08-03 14:46:45 +02005598cflags=""
Juan Quintelafa282482009-07-22 22:37:39 +02005599ldflags=""
Juan Quintela9b8e1112009-08-03 14:46:46 +02005600
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005601disas_config() {
5602 echo "CONFIG_${1}_DIS=y" >> $config_target_mak
5603 echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
5604}
5605
Juan Quintela64656022009-08-03 14:46:53 +02005606for i in $ARCH $TARGET_BASE_ARCH ; do
5607 case "$i" in
5608 alpha)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005609 disas_config "ALPHA"
Juan Quintela64656022009-08-03 14:46:53 +02005610 ;;
Richard Henderson82295d82014-03-03 22:53:27 -05005611 aarch64)
5612 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005613 disas_config "ARM_A64"
Richard Henderson82295d82014-03-03 22:53:27 -05005614 fi
5615 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005616 arm)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005617 disas_config "ARM"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005618 if test -n "${cxx}"; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005619 disas_config "ARM_A64"
Claudio Fontana999b53e2014-02-05 17:27:28 +00005620 fi
Juan Quintela64656022009-08-03 14:46:53 +02005621 ;;
5622 cris)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005623 disas_config "CRIS"
Juan Quintela64656022009-08-03 14:46:53 +02005624 ;;
5625 hppa)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005626 disas_config "HPPA"
Juan Quintela64656022009-08-03 14:46:53 +02005627 ;;
Richard Hendersonc72b26e2013-08-20 12:20:05 -07005628 i386|x86_64|x32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005629 disas_config "I386"
Juan Quintela64656022009-08-03 14:46:53 +02005630 ;;
Aurelien Jarno903ec552010-03-29 02:12:51 +02005631 ia64*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005632 disas_config "IA64"
Aurelien Jarno903ec552010-03-29 02:12:51 +02005633 ;;
Michael Walle79368f42012-03-31 19:54:20 +02005634 lm32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005635 disas_config "LM32"
Michael Walle79368f42012-03-31 19:54:20 +02005636 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005637 m68k)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005638 disas_config "M68K"
Juan Quintela64656022009-08-03 14:46:53 +02005639 ;;
Edgar E. Iglesias877fdc12011-02-21 12:42:20 +01005640 microblaze*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005641 disas_config "MICROBLAZE"
Juan Quintela64656022009-08-03 14:46:53 +02005642 ;;
5643 mips*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005644 disas_config "MIPS"
Juan Quintela64656022009-08-03 14:46:53 +02005645 ;;
Anthony Greend15a9c22013-03-18 15:49:25 -04005646 moxie*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005647 disas_config "MOXIE"
Anthony Greend15a9c22013-03-18 15:49:25 -04005648 ;;
Jia Liue67db062012-07-20 15:50:39 +08005649 or32)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005650 disas_config "OPENRISC"
Jia Liue67db062012-07-20 15:50:39 +08005651 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005652 ppc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005653 disas_config "PPC"
Juan Quintela64656022009-08-03 14:46:53 +02005654 ;;
Alexander Graf24e804ec2009-12-05 12:44:22 +01005655 s390*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005656 disas_config "S390"
Juan Quintela64656022009-08-03 14:46:53 +02005657 ;;
5658 sh4)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005659 disas_config "SH4"
Juan Quintela64656022009-08-03 14:46:53 +02005660 ;;
5661 sparc*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005662 disas_config "SPARC"
Juan Quintela64656022009-08-03 14:46:53 +02005663 ;;
Max Filippovcfa550c2011-09-06 03:55:26 +04005664 xtensa*)
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005665 disas_config "XTENSA"
Max Filippovcfa550c2011-09-06 03:55:26 +04005666 ;;
Juan Quintela64656022009-08-03 14:46:53 +02005667 esac
5668done
Stefan Weil9195b2c2011-10-19 07:07:18 +02005669if test "$tcg_interpreter" = "yes" ; then
Peter Crosthwaitec765fca2015-08-29 03:33:59 -07005670 disas_config "TCI"
Stefan Weil9195b2c2011-10-19 07:07:18 +02005671fi
Juan Quintela64656022009-08-03 14:46:53 +02005672
Juan Quintela6ee71262009-08-03 14:46:47 +02005673case "$ARCH" in
5674alpha)
5675 # Ensure there's only a single GP
5676 cflags="-msmall-data $cflags"
5677;;
5678esac
5679
Juan Quintelad02c1db2009-08-03 14:46:50 +02005680if test "$gprof" = "yes" ; then
Juan Quintela25be2102009-10-07 02:41:00 +02005681 echo "TARGET_GPROF=yes" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005682 if test "$target_linux_user" = "yes" ; then
5683 cflags="-p $cflags"
5684 ldflags="-p $ldflags"
5685 fi
5686 if test "$target_softmmu" = "yes" ; then
5687 ldflags="-p $ldflags"
Juan Quintela25be2102009-10-07 02:41:00 +02005688 echo "GPROF_CFLAGS=-p" >> $config_target_mak
Juan Quintelad02c1db2009-08-03 14:46:50 +02005689 fi
5690fi
5691
Juan Quintela9b8e1112009-08-03 14:46:46 +02005692if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
Richard Henderson964c6fa2013-06-21 19:10:16 -07005693 ldflags="$ldflags $textseg_ldflags"
Juan Quintelafa282482009-07-22 22:37:39 +02005694fi
Juan Quintelafa282482009-07-22 22:37:39 +02005695
Juan Quintela25be2102009-10-07 02:41:00 +02005696echo "LDFLAGS+=$ldflags" >> $config_target_mak
5697echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
Juan Quintelafa282482009-07-22 22:37:39 +02005698
bellard97a847b2003-08-10 21:36:04 +00005699done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00005700
Gerd Hoffmannb776eca2012-11-12 12:18:38 +01005701if [ "$pixman" = "internal" ]; then
5702 echo "config-host.h: subdir-pixman" >> $config_host_mak
5703fi
5704
Peter Crosthwaitea540f152013-04-18 14:47:31 +10005705if [ "$dtc_internal" = "yes" ]; then
5706 echo "config-host.h: subdir-dtc" >> $config_host_mak
5707fi
5708
Wanlong Gaoa99d57b2014-05-14 17:43:28 +08005709if test "$numa" = "yes"; then
5710 echo "CONFIG_NUMA=y" >> $config_host_mak
5711fi
5712
John Snowfd0e6052015-03-25 18:57:39 -04005713if test "$ccache_cpp2" = "yes"; then
5714 echo "export CCACHE_CPP2=y" >> $config_host_mak
5715fi
5716
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005717# build tree in object directory in case the source is not in the current directory
Wenchao Xiaf93296e2013-09-06 11:24:32 +08005718DIRS="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 +04005719DIRS="$DIRS fsdev"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005720DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005721DIRS="$DIRS roms/seabios roms/vgabios"
Paolo Bonzini2dee8d52012-06-04 09:15:43 +02005722DIRS="$DIRS qapi-generated"
Anthony Liguoric09015d2012-01-10 13:10:42 -06005723FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5724FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
Andreas Färberaaa2ebc2013-07-06 20:41:37 +02005725FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005726FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
Andreas Färber446b9162011-05-08 13:25:56 +02005727FILES="$FILES pc-bios/spapr-rtas/Makefile"
Christian Borntraeger9933c302013-04-23 01:23:03 +00005728FILES="$FILES pc-bios/s390-ccw/Makefile"
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005729FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
Jan Kiszka4652b792013-02-22 21:05:01 +01005730FILES="$FILES pc-bios/qemu-icon.bmp"
Richard Henderson753d11f2011-06-24 11:58:37 -07005731for bios_file in \
5732 $source_path/pc-bios/*.bin \
Gerd Hoffmann5acc2ec2012-12-03 10:45:49 +01005733 $source_path/pc-bios/*.aml \
Richard Henderson753d11f2011-06-24 11:58:37 -07005734 $source_path/pc-bios/*.rom \
5735 $source_path/pc-bios/*.dtb \
Dominik Dingele89e33e2013-04-29 04:52:06 +00005736 $source_path/pc-bios/*.img \
Richard Henderson753d11f2011-06-24 11:58:37 -07005737 $source_path/pc-bios/openbios-* \
Alexander Graf4e73c782014-01-20 00:25:40 +01005738 $source_path/pc-bios/u-boot.* \
Richard Henderson753d11f2011-06-24 11:58:37 -07005739 $source_path/pc-bios/palcode-*
5740do
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005741 FILES="$FILES pc-bios/`basename $bios_file`"
5742done
Marcel Apfelbaumc2304b52013-12-26 16:54:20 +02005743for test_file in `find $source_path/tests/acpi-test-data -type f`
5744do
5745 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5746done
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005747mkdir -p $DIRS
5748for f in $FILES ; do
Michael S. Tsirkincab00a52014-04-28 15:09:01 +03005749 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
Peter Maydellf9245e12011-06-03 17:10:40 +01005750 symlink "$source_path/$f" "$f"
5751 fi
Paolo Bonzinid1807a42010-12-23 11:43:59 +01005752done
Paul Brook1ad21342009-05-19 16:17:58 +01005753
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005754# temporary config to build submodules
Anthony Liguori2d9f27d2009-11-02 15:50:27 -06005755for rom in seabios vgabios ; do
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005756 config_mak=roms/$rom/config.mak
Stefan Weil37116c82010-03-01 22:20:29 +01005757 echo "# Automatically generated by configure - do not modify" > $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005758 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005759 echo "AS=$as" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005760 echo "CC=$cc" >> $config_mak
5761 echo "BCC=bcc" >> $config_mak
Blue Swirl3dd46c72013-01-05 10:10:27 +00005762 echo "CPP=$cpp" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005763 echo "OBJCOPY=objcopy" >> $config_mak
Michael S. Tsirkina31a8642013-07-24 18:56:03 +03005764 echo "IASL=$iasl" >> $config_mak
Anthony Liguoric34ebfd2009-09-04 10:13:29 -05005765 echo "LD=$ld" >> $config_mak
5766done
5767
Max Reitz76c75602014-05-24 23:24:56 +02005768# set up qemu-iotests in this build directory
5769iotests_common_env="tests/qemu-iotests/common.env"
5770iotests_check="tests/qemu-iotests/check"
5771
5772echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5773echo >> "$iotests_common_env"
5774echo "export PYTHON='$python'" >> "$iotests_common_env"
5775
5776if [ ! -e "$iotests_check" ]; then
5777 symlink "$source_path/$iotests_check" "$iotests_check"
5778fi
5779
Michael S. Tsirkindc655402014-03-09 17:37:49 +02005780# Save the configure command line for later reuse.
5781cat <<EOD >config.status
5782#!/bin/sh
5783# Generated by configure.
5784# Run this file to recreate the current configuration.
5785# Compiler output produced by configure, useful for debugging
5786# configure, is in config.log if it exists.
5787EOD
5788printf "exec" >>config.status
5789printf " '%s'" "$0" "$@" >>config.status
5790echo >>config.status
5791chmod +x config.status
5792
Peter Maydell8cd05ab2014-05-23 17:07:24 +01005793rm -r "$TMPDIR1"